Difference between revisions of "Summer of Code 2021"
(Add MIX in Mellium as a project idea) |
m |
||
(12 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
= Participation = | = Participation = | ||
The XSF | The XSF has applied to be a mentoring organisation for Google Summer of Code 2021. We will know whether we are accepted or not on March 9th with the official list is published. | ||
XMPP oriented projects should still add project ideas to the below list. | |||
== Dates == | == Dates == | ||
Line 25: | Line 27: | ||
= Project Ideas = | = Project Ideas = | ||
- | == Dino == | ||
''Website:'' https://dino.im/<br/> | |||
''Source Code:'' https://github.com/dino/dino<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] | |||
=== 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/> | |||
''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 fassion, not targeting a specific website | |||
* Design or reuse a specification for sending metadata with XMPP messages | |||
== Mellium == | |||
''Website:'' https://melluim.im/<br/> | |||
''Source Code:'' https://mellium.im/code<br/> | |||
''Description:'' Mellium is a collection of Go modules related to XMPP.<br/> | |||
''Project Contact:'' [[User:SamWhited|Sam Whited]]<br/> | |||
''Relevant readings:'' [https://golang.org/doc/effective_go Effective Go], [https://mellium.im/docs/ Mellium docs], [https://pkg.go.dev/mellium.im/xmpp Mellium API docs]<br/> | |||
''Teaser Tasks:'' [https://github.com/mellium/xmpp/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22 Good first issues]<br/> | |||
''Chat:'' [xmpp:users@mellium.chat?join users@mellium.chat] | |||
=== Audio/Video Chat === | |||
''Brief explanation:'' Add support for Audio/Video Communication via Jingle.<br/> | |||
''Involved Technologies:'' Go, WebRTC, Jingle<br/> | |||
''Relevant readings:'' [https://xmpp.org/extensions/xep-0167.html XEP-0167], [https://xmpp.org/extensions/xep-0353.html XEP-0353]<br /> | |||
''Deliverables / Expected Results:''<br/> | |||
* A separate Go library for Jingle that is not XMPP specific (probably, we can discuss design later) | |||
* Audio and video chat in mellium.im/xmpp that is compatible with [https://conversations.im Conversations] | |||
* File transfer in in mellium.im/xmpp using Jingle sessions (also compatible with Conversations) | |||
* A demo app to start a conversation | |||
=== Group Chat === | |||
''Brief explanation:'' Add support for group chats using either Multi-User Chat or Mediated Information Exchange (MIX).<br/> | |||
''Involved Technologies:'' Go<br/> | |||
''Relevant readings:'' [https://xmpp.org/extensions/xep-0369.html XEP-0369: Mediated Information eXchange (MIX)], [https://xmpp.org/extensions/xep-0045.html XEP-0045: Multi-User Chat]<br /> | |||
''Deliverables / Expected Results:''<br/> | |||
* A well tested library for joining or serving MUC or MIX and a set of integration tests that work against Prosody or Ejabberd | |||
* A simple component for hosting MUC or MIX chats | |||
=== End-to-End Encryption === | |||
''Brief explanation:'' Add support for end-to-end (E2E) encryption using OMEMO, or MLS<br/> | |||
''Involved Technologies:'' Go, Go Subrepos, OMEMO or MLS<br/> | |||
''Relevant readings:'' [https://xmpp.org/extensions/xep-0384.html XEP-0384: OMEMO Encryption], [https://datatracker.ietf.org/doc/draft-ietf-mls-protocol/ The Messaging Layer Security (MLS) Protocol (draft-ietf-mls-protocol)]<br /> | |||
''Deliverables / Expected Results:''<br/> | |||
* If using MLS, an XEP describing behavior and how MLS should be integrated with XMPP | |||
* A well-designed API and well-tested library for encrypting messages with OMEMO or MLS | |||
* Changes to the Go standard library and subrepos to add any missing cryptographic primitives or expose operations that are currently internal only. | |||
== Psi == | |||
''Website:'' https://psi-im.org/<br/> | |||
''Source Code:'' https://github.com/psi-im/psi<br/> | |||
''Description:'' An XMPP client for advanced users.</br> | |||
''Project Contact:'' [[User:Rion|rion]], Tehnick, VitoZz<br/> | |||
''Relevant readings:'' [https://psi-plus.com/wiki/en:main]<br/> | |||
''Teaser Tasks:'' [https://github.com/psi-im/psi/milestone/4]<br/> | |||
''Chat:'' [xmpp:psi-dev@conference.jabber.ru?join psi-dev@conference.jabber.ru] | |||
=== Mediated Information Exchange (MIX) === | |||
''Brief explanation:'' Add support for Mediated Information Exchange (MIX).<br/> | |||
''Involved Technologies:'' Qt, C++<br/> | |||
''Relevant readings:'' [https://xmpp.org/extensions/xep-0369.html XEP-0369: Mediated Information eXchange (MIX)]<br /> | |||
''Deliverables / Expected Results:''<br/> | |||
* A set of classes in [https://github.com/psi-im/iris iris] library to support MIX extensions. | |||
* A MIX management component in Psi itself similar to one implemented for MUC. | |||
* A Working UI (probably some rework of the current MUC UI to make it compatible with MIX) | |||
* The solution has to be tested with popular XMPP servers | |||
=== QML UI === | |||
''Brief explanation:'' A modern looking UI for both (group-)chat and roster | |||
''Involved Technologies:'' Qt, QML, JavaScript, C++<br/> | |||
''Relevant readings:'' https://en.wikipedia.org/wiki/QML<br/> | |||
''Deliverables / Expected Results:''<br/> | |||
* It's a huge task, so expected an implementation of standalone QML/*cross-platform* UI with clear and well-documented API interfaces. | |||
* The UI may be backed by some mocked C++ code where Psi code should be taken as a guidance. This is perfectly fine to borrow design/API ideas from other clients too. | |||
* It's assumed the UI will be used not just with Psi. So the branded parts preferably should be kept aside and instead set via API. | |||
* The UI should provide next functions: model/view-based chat/group-chat, roster, avatars, statuses, recent (group-)chats, contact list (with groups/tags), contacts management, own status management. | |||
= 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 [https://xmpp.org/chat?gsoc 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]. |
Latest revision as of 07:02, 11 March 2021
Participation
The XSF has applied to be a mentoring organisation for Google Summer of Code 2021. We will know whether we are accepted or not on March 9th with the official list is published.
XMPP oriented projects should still add project ideas to the below list.
Dates
The various dates for the program can be found on the Google Summer of Code 2021 Timeline.
Otherwise, all other info is on GSoC page
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 Google Talk uses, Whatsapp uses an XMPP-derivative protocol, Google Hangouts uses some aspects of XMPP internally, and as well as end-users it's used extensively by enterprises and governments.
The XSF is (for GSoC) an umbrella organisation for various XMPP-related projects. As such, there's two tiers involved - the XSF itself, which is responsible for catherding 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 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 :)
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 shouldn't be onerous!
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.
Project Ideas
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: chat@dino.im
Inline link preview
Brief explanation: Add support for attaching and displaying link metadata.
Involved Technologies: Vala, XMPP, HTML, OpenGraph
Relevant readings: OpenGraph protocol
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 fassion, not targeting a specific website
- Design or reuse a specification for sending metadata with XMPP messages
Mellium
Website: https://melluim.im/
Source Code: https://mellium.im/code
Description: Mellium is a collection of Go modules related to XMPP.
Project Contact: Sam Whited
Relevant readings: Effective Go, Mellium docs, Mellium API docs
Teaser Tasks: Good first issues
Chat: users@mellium.chat
Audio/Video Chat
Brief explanation: Add support for Audio/Video Communication via Jingle.
Involved Technologies: Go, WebRTC, Jingle
Relevant readings: XEP-0167, XEP-0353
Deliverables / Expected Results:
- A separate Go library for Jingle that is not XMPP specific (probably, we can discuss design later)
- Audio and video chat in mellium.im/xmpp that is compatible with Conversations
- File transfer in in mellium.im/xmpp using Jingle sessions (also compatible with Conversations)
- A demo app to start a conversation
Group Chat
Brief explanation: Add support for group chats using either Multi-User Chat or Mediated Information Exchange (MIX).
Involved Technologies: Go
Relevant readings: XEP-0369: Mediated Information eXchange (MIX), XEP-0045: Multi-User Chat
Deliverables / Expected Results:
- A well tested library for joining or serving MUC or MIX and a set of integration tests that work against Prosody or Ejabberd
- A simple component for hosting MUC or MIX chats
End-to-End Encryption
Brief explanation: Add support for end-to-end (E2E) encryption using OMEMO, or MLS
Involved Technologies: Go, Go Subrepos, OMEMO or MLS
Relevant readings: XEP-0384: OMEMO Encryption, The Messaging Layer Security (MLS) Protocol (draft-ietf-mls-protocol)
Deliverables / Expected Results:
- If using MLS, an XEP describing behavior and how MLS should be integrated with XMPP
- A well-designed API and well-tested library for encrypting messages with OMEMO or MLS
- Changes to the Go standard library and subrepos to add any missing cryptographic primitives or expose operations that are currently internal only.
Psi
Website: https://psi-im.org/
Source Code: https://github.com/psi-im/psi
Description: An XMPP client for advanced users.
Project Contact: rion, Tehnick, VitoZz
Relevant readings: [1]
Teaser Tasks: [2]
Chat: psi-dev@conference.jabber.ru
Mediated Information Exchange (MIX)
Brief explanation: Add support for Mediated Information Exchange (MIX).
Involved Technologies: Qt, C++
Relevant readings: XEP-0369: Mediated Information eXchange (MIX)
Deliverables / Expected Results:
- A set of classes in iris library to support MIX extensions.
- A MIX management component in Psi itself similar to one implemented for MUC.
- A Working UI (probably some rework of the current MUC UI to make it compatible with MIX)
- The solution has to be tested with popular XMPP servers
QML UI
Brief explanation: A modern looking UI for both (group-)chat and roster
Involved Technologies: Qt, QML, JavaScript, C++
Relevant readings: https://en.wikipedia.org/wiki/QML
Deliverables / Expected Results:
- It's a huge task, so expected an implementation of standalone QML/*cross-platform* UI with clear and well-documented API interfaces.
- The UI may be backed by some mocked C++ code where Psi code should be taken as a guidance. This is perfectly fine to borrow design/API ideas from other clients too.
- It's assumed the UI will be used not just with Psi. So the branded parts preferably should be kept aside and instead set via API.
- The UI should provide next functions: model/view-based chat/group-chat, roster, avatars, statuses, recent (group-)chats, contact list (with groups/tags), contacts management, own status management.
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.