Google Summer of Code 2023

= Participation =

The XSF has plans to be a mentoring organization for Google Summer of Code 2023. This is an early attempt to ensure good planning and enough time for the application process. Remind: The XSF has not yet applied nor being accepted.

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 [xmpp:gsoc@muc.xmpp.org?join gsoc@muc.xmpp.org]

Dates
More information on the dates are listed on their GSoC Website

Otherwise, all other info is on GSoC page

Find their FAQ.

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 standardised 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 gatherding 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 :)


 * Archive of previous GSoC participation
 * Application details from Feb 2022

= 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 [xmpp:gsoc@muc.xmpp.org?join 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: [xmpp:gsoc@muc.xmpp.org?join gsoc@muc.xmpp.org].

Teaser Tasks

 * 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 be announced.

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
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.

= Project Ideas (TO BE UPDATED FOR 2023) =

Dino
Website: https://dino.im/ Source Code: https://github.com/dino/dino 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: [xmpp:chat@dino.im?join chat@dino.im] or Webchat

Note: Feel invited to combine small projects into a large project, if you want to do a large project. Combinations of the 3 projects related to file transfers are a particular fit for 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

On-demand p2p file sharing
Brief explanation: Allow for on-demand multi-party peer-to-peer file transfers. Involved Technologies: Vala, XMPP, Jingle Relevant readings: XEP-0447, XEP-0234 Project size: Small (175h) Difficulty: Medium Important Note: This project can only be achieved by first implementing the "Stateless file sharing" project. Deliverables / Expected Results:
 * Implement Jingle File Transfer requests to request and deliver files.
 * Announce availability of Jingle file transfer using Stateless file sharing (SFS) for outgoing file transfers and after retrieval.

WebRTC file transfer
Brief explanation: Add support for WebRTC-based file transfers using WebRTC data channels for web compatibility and improved NAT traversal. Involved Technologies: Vala, XMPP, Jingle, WebRTC Relevant readings: XEP-0343, XEP-0234 Project size: Small (175h) Difficulty: Hard Deliverables / Expected Results:
 * Implement SCTP protocol
 * WebRTC data channel protocol
 * Use Jingle WebRTC data channel signalling for file transfers when supported by peer.

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