Difference between revisions of "Google Summer of Code 2024"

Jump to navigation Jump to search
(Add Prav App sms opt with xep 0388 idea)
 
(3 intermediate revisions by the same user not shown)
Line 52: Line 52:
= How to get started? =
= How to get started? =


* Read the [https://summerofcode.withgoogle.com/help Google Summer of Code 2023 guidelines]!
* Read the [https://summerofcode.withgoogle.com/help Google Summer of Code 2024 guidelines]!
* Review the projects below and inform yourself if that could be of interested for you [https://wiki.xmpp.org/web/Google_Summer_of_Code_2023#Project_Ideas Link]
* Review the projects below and inform yourself if that could be of interested for you [https://wiki.xmpp.org/web/Google_Summer_of_Code_2024#Project_Ideas Link]
* Reach out the projects contact, tell about yourself and why you are interested (see project section)
* Reach out the projects contact, tell about yourself and why you are interested (see project section)
* Join our GSoC group chat channel via XMPP (you can reach out via mail of course as well, but we really recommend to also use the technology) [https://wiki.xmpp.org/web/Google_Summer_of_Code_2023#Join_the_group_chat! Link]
* Join our GSoC group chat channel via XMPP (you can reach out via mail of course as well, but we really recommend to also use the technology) [https://wiki.xmpp.org/web/Google_Summer_of_Code_2024#Join_the_group_chat! Link]
* Continue to discuss teaser tasks with the project contact [https://wiki.xmpp.org/web/Google_Summer_of_Code_2023#Teaser_Tasks Link]
* Continue to discuss teaser tasks with the project contact [https://wiki.xmpp.org/web/Google_Summer_of_Code_2024#Teaser_Tasks Link]
* If everything is fine, start preparing a proposal and if reviewed submit the application [https://wiki.xmpp.org/web/Google_Summer_of_Code_2024#Student_Proposal Link]
* If everything is fine, start preparing a proposal and if reviewed submit the application [https://wiki.xmpp.org/web/Google_Summer_of_Code_2024#Student_Proposal Link]


Line 85: Line 85:
** What is OMEMO?
** What is OMEMO?


A list of teaser tasks is given in the [[#Project_Ideas|Project Ideas]] overview, but please join the chat rooms for the respective projects and discuss them there, where mentors will be able to help you and know what you're up to. There are different teasers for different codebases, and more teasers will be appearing here over the next few days.
A list of teaser tasks is given as part of most [[#Project_Ideas|Project Ideas]], but please join the chat rooms for the respective projects and discuss them there, where mentors will be able to help you and know what you're up to. There are different teasers for different codebases, and more teasers will be appearing here over the next few days.


== Student Proposal ==
== Student Proposal ==
Line 95: Line 95:
Of course, a good proposal is fine, too. We would be interested in the motivation behind the application. Additionally, the student's background, the possible experiences and preferred technologies, the outcome of a preliminary research on the protocol and codesbases the student might work on. Furthermore, their own perspective on how the collaboration and organization through the Google Summer of Code with the mentors should look like and a review of which possible problems may be faced are also helpful.
Of course, a good proposal is fine, too. We would be interested in the motivation behind the application. Additionally, the student's background, the possible experiences and preferred technologies, the outcome of a preliminary research on the protocol and codesbases the student might work on. Furthermore, their own perspective on how the collaboration and organization through the Google Summer of Code with the mentors should look like and a review of which possible problems may be faced are also helpful.


Furthermore we recommend a bit of research on online guides to write a proposal or motivational letter. The official guidelines of the [https://developers.google.com/open-source/gsoc/help/student-advice Google Summer of Code 2023] are highly recommended to read first.
Furthermore we recommend a bit of research on online guides to write a proposal or motivational letter. The official guidelines of the [https://developers.google.com/open-source/gsoc/help/student-advice Google Summer of Code 2024] are highly recommended to read first.


==== Checklist ====
==== Checklist ====


* I have read the [https://summerofcode.withgoogle.com/help Google Summer of Code 2023 guidelines]!
* I have read the [https://summerofcode.withgoogle.com/help Google Summer of Code 2024 guidelines]!
* I have contacted the project mentors and exchanged about the project.
* I have contacted the project mentors and exchanged about the project.
* I have conducted a teaser task (see second bullet point).
* I have conducted a teaser task (see second bullet point).
* I have join our GSoC group chat channel via XMPP (you can reach out via mail of course as well, but we really recommend to also use the technology) [https://wiki.xmpp.org/web/Google_Summer_of_Code_2023#Join_the_group_chat! Link].
* I have join our GSoC group chat channel via XMPP (you can reach out via mail of course as well, but we really recommend to also use the technology) [https://wiki.xmpp.org/web/Google_Summer_of_Code_2024#Join_the_group_chat! Link].
* I have solved the [https://wiki.xmpp.org/web/Google_Summer_of_Code_2023#Teaser_Tasks XMPP Quiz]
* I have solved the [https://wiki.xmpp.org/web/Google_Summer_of_Code_2024#Teaser_Tasks XMPP Quiz]


= Project Ideas =
= Project Ideas =


== Monal ==
The following table contains links to individual project 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 ===
{| class="wikitable"
|+ GSoC Project ideas from XMPP-related organisations
|-
! XMPP Organisation Name !! Project Idea Title                                          !! Project Size !! Difficulty
|-
| Monal                  || [[gsoc2024/Monal/Modern Onboarding|Modern Onboarding]]      || 90 hours  || easy   
|-
| Monal                  || [[gsoc2024/Monal/Media Gallery|Media Gallery]]              || 90 hours  || easy
|-
| Monal                  || [[gsoc2024/Monal/MDM support|MDM support]]                  || 175 hours || easy
|-
| Monal                  || [[gsoc2024/Monal/SiriKit support|SiriKit support]]          || 350 hours || medium
|-
| Dino                  || [[gsoc2024/Dino/Inline link preview|Inline link preview]]    || 175 hours || easy
|-
| Dino                  || [[gsoc2024/Dino/Rich message support|Rich message support]]  || 175 hours || easy
|-
| Prav.app              || [[gsoc2024/Prav.app/Standards compliant SMS OTP based authentication|Standards compliant SMS OTP based authentication]] || 350 hours || medium
|}


''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.
=== Your own ideas ===
 
''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