Difference between revisions of "Google Summer of Code 2024"

Jump to navigation Jump to search
(→‎Project Ideas: Adding table to link to individual project pages)
Line 106: Line 106:


= Project Ideas =
= Project Ideas =
The following table contains links to individual project ideas.


{| class="wikitable"
{| class="wikitable"
Line 127: Line 129:
|}
|}


== Monal ==
=== Your own ideas ===
''Website:'' https://monal-im.org/<br/>
''Source Code:'' https://github.com/monal-im/monal<br/>
''OSI-License:'' 2-Clause BSD: https://github.com/monal-im/Monal/blob/develop/LICENSE<br/>
''Description:'' Monal is a modern iOS and MacOS XMPP chat client<br/>
''Project Contact:'' [[User:TMolitor|tmolitor]]<br/>
''Relevant readings:'' XMPP + SwiftUI + Swift (+ ObjC)<br/>
''Teaser Tasks:'' [https://github.com/monal-im/Monal/labels/%F0%9F%8E%83%20GSOC%20Teaser Issues tagged "GSOC Teaser"]<br/>
''Chat:'' [xmpp:monal@chat.yax.im?join monal@chat.yax.im] or [https://yaxim.org/chat/#monal@chat.yax.im Webchat] or via 1:1 chat with [xmpp:thilo.molitor@juforum.de tmolitor]
 
=== Modern Onboarding ===
 
''Brief explanation:'' When new unexperienced (XMPP) users start Monal for the first time, they should be taken by the hand and introduced to XMPP (decentralized, login vs. registration) as well as the most important privacy settings / privacy policy. The resulting introduction should be implemented using SwiftUI and should replace / incorporate the existing login/register UI.
 
''Relevant readings:'' SwiftUI + Swift (+ ObjC)
 
''Project size:'' 90h
 
''Difficulty:'' Easy
 
''Deliverables / Expected Results:''
 
* Short and understandable introduction to XMPP / Monal
* Configuration and explanation of the most important privacy settings
 
=== Media Gallery ===
 
''Brief explanation:'' When tapping onto an image in the chat, a SwiftUI based image viewer appears, showing that image in full screen. Enhange that SwiftUI based media viewer to support videos. Allow to swipe through all received/sent media (images and videos). Show a SwiftUI based gallery of all received media when tapping a button in the contact details, leading to this image/video viewer when tapping onto a gallery item.
 
''Relevant readings:'' SwiftUI + Swift (+ ObjC)
 
''Project size:'' 90h
 
''Difficulty:'' Easy
 
''Deliverables / Expected Results:''
 
* Support swiping through media
* Support for common video formats
* Media gallery
 
=== MDM support ===
 
''Brief explanation:'' Add support for "managed configuration" allowing to automatically configure Monal in school or business environments.
 
''Relevant readings:'' [https://github.com/monal-im/Monal/issues/164#issuecomment-778239069 Links in Monal Issue comment] + ObjC / Swift
 
''Project size:'' 175h
 
''Difficulty:'' Easy
 
''Deliverables / Expected Results:''
 
* Configuration of most settings in Monal through MDM (privacy settings, accounts etc.)
* Allow locking of these settings via MDM to prevent users from changing them
* Auto-Create of account in Monal via MDM
 
=== SiriKit support ===
 
''Brief explanation:'' Implement SiriKit interactions for `write a message`, `read a message`, `respond to a message`, `read contact details (last online time, status message etc.)`, `open chat of contact` and possibly `add contact`.
 
''Relevant readings:'' [https://github.com/monal-im/Monal/issues/938 Links in Monal Issue] + ObjC / Swift
 
''Project size:'' 350h
 
''Difficulty:'' Medium
 
''Deliverables / Expected Results:'' Monal can be handled hands-free and actively used to do a conversation while driving a car.
 
=== Your own idea ===
 
You feel confident to propose your own well-stated idea? Please go ahead and reach out to us using one of the contact addresses listed above (preferable via email).
 
== Dino ==
 
''Website:'' https://dino.im/<br/>
''Source Code:'' https://github.com/dino/dino<br/>
''OSI-License:'' GPL-3.0 https://github.com/dino/dino/blob/master/LICENSE<br/>
''Description:'' Dino is a modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.</br>
''Project Contact:'' [[User:Larma|larma]], fiaxh<br/>
''Relevant readings:'' [https://wiki.gnome.org/Projects/Vala/Tutorial Vala Tutorial]<br/>
''Teaser Tasks:'' [https://github.com/dino/dino/labels/good%20first%20issue Good first issues]<br/>
''Chat:'' [xmpp:chat@dino.im?join chat@dino.im] or [https://xmpp.org/chat#converse/room?jid=chat@dino.im Webchat]
 
'''Note:''' Feel invited to combine small projects into a large project.
 
=== Inline link preview ===
 
''Brief explanation:'' Add support for attaching and displaying link metadata.<br/>
''Involved Technologies:'' Vala, XMPP, HTML, OpenGraph<br/>
''Relevant readings:'' [http://ogp.me/ OpenGraph protocol]<br/>
''Project size:'' Small (175h)<br/>
''Difficulty:'' Easy<br/>
''Deliverables / Expected Results:''<br/>
* User interface widget to display metadata, suitable for preview image, title, abstract and the original url/domain.
* Automatic generation of metadata, working with major websites. This should be done in a generic fashion, not targeting a specific website
* Design or reuse a specification for sending metadata with XMPP messages
 
=== Rich message support ===
 
''Brief explanation:'' Add support for creating and displaying rich test messages.<br/>
''Involved Technologies:'' Vala, XMPP, GTK+, Pango<br/>
''Relevant readings:'' [https://xmpp.org/extensions/xep-0393.html XEP-0393], [https://xmpp.org/extensions/xep-0394.html XEP-0394], [https://xmpp.org/extensions/xep-0372.html XEP-0372]<br/>
''Project size:'' Small (175h)<br/>
''Difficulty:'' Easy<br/>
''Deliverables / Expected Results:''<br/>
* Add rich text features to Dino's chat input box using buttons and well-known keyboard shortcuts for bold, italic, strikethrough, monospace, lists, blockquotes, code blocks, links and mentions.
* Allow users to activate Markdown input, which is instantly converted to rich text during input.
* Send rich text messages using [https://xmpp.org/extensions/xep-0394.html Message Markup] and [https://xmpp.org/extensions/xep-0372.html References] as well as a fallback using [https://xmpp.org/extensions/xep-0393.html Message Styling]
* Apply markup to messages in conversation history via Pango Attributes
 
== Prav.app ==
''Website:'' https://prav.app<br/>
''Source Code:'' https://codeberg.org/prav/<br/>
''OSI-License:'' Apache 2.0 https://codeberg.org/prav/pravserver/src/branch/master/LICENSE<br/>
''Description:'' Easy XMPP onboarding with SMS OTP sign up and contact discovery<br/>
''Project Contact:'' email: prav at fsci.in<br/>
''Relevant readings:'' XMPP + readings under each idea<br/>
''Teaser Tasks:'' https://codeberg.org/prav/pravserver/issues?labels=182972 and https://codeberg.org/prav/IssueTracker/issues?labels=182981<br/>
''Chat:'' https://xmpp.link/#prav-devel@chat.disroot.org?join<br/>
 
=== Standards compliant SMS OTP based authentication ===
 
''Brief explanation:''
 
Phone number + SMS OTP based authentication is a very popular method of using internet services in many parts of the world, popularized by services like WhatsApp. This approach is followed by Quicksy and Prav (a Quicksy fork). But presently, this is being done in a custom approach which is specific to QuicksyServer+Quicksy client application. We need to enable users to sign up / login to XMPP with SMS authentication in a standards compliant way.
 
[Prav](prav.app) is presently limited to Android because it relies on this custom implementation (in the rebranded version of Quicksy). If we implement a standards compliant way of doing this we will be able to allow any XMPP client to sign up to prav.app. This will allow Prav to be used from iOS and other platforms.
 
''Relevant readings:''
 
* https://xmpp.org/extensions/xep-0388.html
 
* https://monal-im.org/post/00003-nlnet-funding/
 
* https://opencollective.com/prav-ios
 
''Project size:'' 350h
 
''Difficulty:'' Medium
 
''Deliverables / Expected Results:'' Implement XEP 0388 in Quicksy server (for SMS OTP second factor) and complete its implementation in ejabberd allowing any XMPP client to sign up to prav.app service.
 
== My Project ==
''Website:'' https://myproject.org/<br/>
''Source Code:'' https://myproject.org/repo<br/>
''OSI-License:'' https://myproject.org/license<br/>
''Description:'' My project description<br/>
''Project Contact:'' You contact / profile<br/>
''Relevant readings:'' XMPP + ... <br/>
''Teaser Tasks:'' Proper link to teaser tasks<br/>
''Chat:'' Put your chat address, email and, if XMPP also a Webchat link
 
=== My Project Idea ===
 
''Brief explanation:'' Fill
 
''Project size:'' 90h, 175h or 350h
 
''Difficulty:'' Easy, Middle (unless you have someone that is obviously capable no hard projects are unlikely to be accepted, such as AV or group chat / MUC implementation. Please remind this is a student project and should contain also educational perspective.)
 
''Deliverables / Expected Results:'' Fill
 
== Your own ideas ==


You feel confident to propose your own well-stated idea? Then please ahead. First reach out in our GSoC group chat please.
You feel confident to propose your own well-stated idea? Then please ahead. First reach out in our GSoC group chat please.

Navigation menu