Google Summer of Code 2024
Participation
The XSF has plans to be a mentoring organization for Google Summer of Code 2024. The XSF has been accepted as a mentoring organization in GSOC 2024!
XMPP oriented projects should still add project ideas to the below list.
Organization: Edward offered to help the organization. Please reach out to the GSoC chat if you want to support as well of plan to participate in any way: GSoC chat room gsoc@muc.xmpp.org
Dates
More information on the dates are listed on their GSoC Website
Otherwise, all other info is on GSoC page
Overview
Date | Meeting | Participants |
---|---|---|
2024 | Kick-off Meeting | emus & supporters |
2024 | Organization Application preparation | emus & supporters |
2024 | Org Application Deadline | emus |
2024 | Projects Application | Mentors |
Overview
XMPP is an Internet protocol used in many fields, such as the Internet of Things, chat applications, voice and video calls, etc. It's what commercial client alike Google Talk, Whatsapp or Google Hangouts uses as an XMPP-derivate of the protocol uses or in some aspects of XMPP internally, and as well as end-users it's used extensively by enterprises and governments but of course also the open variant propagated and standardized by the XSF.
The XSF is (for GSoC) an umbrella organization for various XMPP-related projects. As such, there's two tiers involved - the XSF itself, which is responsible for gathering mentors to submit ideas, choosing students etc., and the software projects themselves that then mentor students. Anyone interested in participating in GSoC as an XSF student can join the gsoc@muc.xmpp.org MUC room, where various mentors will be available to answer questions and generally help. Although each idea below lists a possible mentor, this group chat (MUC) is the best place to start.
As there are several disparate projects here, there's variety across several codebases in different languages and with significantly different aims, so take a look through all the ideas - there should be something for everyone here :)
How to get started?
- Read the Google Summer of Code 2023 guidelines!
- Review the projects below and inform yourself if that could be of interested for you Link
- 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) Link
- Continue to discuss teaser tasks with the project contact Link
- If everything is fine, start preparing a proposal and if reviewed submit the application Link
Join the group chat!
Use a regular XMPP client and join the GSoC chat room gsoc@muc.xmpp.org.
How to join:
- Download and install a client, or use a web client
- Create an account, or use an existing one
- Find, join, and bookmark: gsoc@muc.xmpp.org.
- Submit small patches: To assess students applying to GSoC for XSF projects we want them to have submitted some small patches to one of the XMPP projects in advance, as this gives us an idea of their general ability to interact with the projects and submit patches. These should only be an afternoon or two's work, and should not be onerous!
- Solve the XMPP quiz to the best extend you can: Please include you answers in your application. Please also don't make your answers public so others don't start copy & pasting responses. The idea is not to have the perfect answers, but show that you took time to review the technology. If you don't understand certain details that is a good indicator to start a discussion about it within the community.
- What does XMPP stand for?
- Is XMPP just another name for Jabber?
- What is federation?
- What can you do with XMPP apart from chatting?
- Do you know examples/implementations for XMPP usage in a centralized service, as a federated service, as a serverless service?
- What is a XEP?
- What is a stanza?
- Describe the core RFCs and XEPs.
- Does XMPP run on IoT devices?
- What is OMEMO?
A list of teaser tasks is given in the 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.
Student Proposal
Before you started with the proposal - please ensure you follow-ed the steps above!
In addition to writing a proposal, engagement with the actual projects before the application is very important. Showing motivation by taking interest in the project and communicating with the mentors is very advantageous. Solving a typical small problem can show that a student is serious with their plans.
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 Google Summer of Code 2023 are highly recommended to read first.
Checklist
- I have read the Google Summer of Code 2023 guidelines!
- I have contacted the project mentors and exchanged about the project.
- 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) Link.
- I have solved the XMPP Quiz
Project Ideas
XMPP Organisation Name | Project Idea Title | Project Size | Difficulty |
---|---|---|---|
Monal | Modern Onboarding | 90 hours | easy |
Monal | Media Gallery | 90 hours | easy |
Monal | MDM support | 175 hours | easy |
Monal | SiriKit support | 350 hours | medium |
Dino | Inline link preview | 175 hours | easy |
Dino | Rich message support | 175 hours | easy |
Prav.app | Standards compliant SMS OTP based authentication | 350 hours | medium |
Monal
Website: https://monal-im.org/
Source Code: https://github.com/monal-im/monal
OSI-License: 2-Clause BSD: https://github.com/monal-im/Monal/blob/develop/LICENSE
Description: Monal is a modern iOS and MacOS XMPP chat client
Project Contact: tmolitor
Relevant readings: XMPP + SwiftUI + Swift (+ ObjC)
Teaser Tasks: Issues tagged "GSOC Teaser"
Chat: monal@chat.yax.im or Webchat or via 1:1 chat with 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: 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: 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/
Source Code: https://github.com/dino/dino
OSI-License: GPL-3.0 https://github.com/dino/dino/blob/master/LICENSE
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.
Project Contact: larma, fiaxh
Relevant readings: Vala Tutorial
Teaser Tasks: Good first issues
Chat: chat@dino.im or 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.
Involved Technologies: Vala, XMPP, HTML, OpenGraph
Relevant readings: OpenGraph protocol
Project size: Small (175h)
Difficulty: Easy
Deliverables / Expected Results:
- 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.
Involved Technologies: Vala, XMPP, GTK+, Pango
Relevant readings: XEP-0393, XEP-0394, XEP-0372
Project size: Small (175h)
Difficulty: Easy
Deliverables / Expected Results:
- 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 Message Markup and References as well as a fallback using Message Styling
- Apply markup to messages in conversation history via Pango Attributes
Prav.app
Website: https://prav.app
Source Code: https://codeberg.org/prav/
OSI-License: Apache 2.0 https://codeberg.org/prav/pravserver/src/branch/master/LICENSE
Description: Easy XMPP onboarding with SMS OTP sign up and contact discovery
Project Contact: email: prav at fsci.in
Relevant readings: XMPP + readings under each idea
Teaser Tasks: https://codeberg.org/prav/pravserver/issues?labels=182972 and https://codeberg.org/prav/IssueTracker/issues?labels=182981
Chat: https://xmpp.link/#prav-devel@chat.disroot.org?join
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:
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/
Source Code: https://myproject.org/repo
OSI-License: https://myproject.org/license
Description: My project description
Project Contact: You contact / profile
Relevant readings: XMPP + ...
Teaser Tasks: Proper link to teaser tasks
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.
To make a good proposal yourself please be aware that you:
- Be sure it covers XMPP technology
- Apply active engagement with the XMPP Community NOW (!)
- Apply high level of self-organisation and motivation to understand XMPP technology to a higher level than expected from contributors to existing ideas