Difference between revisions of "Google Summer of Code 2022"

Jump to navigation Jump to search
(13 intermediate revisions by 5 users not shown)
Line 50: Line 50:
* [[Application details from Feb 2022]]
* [[Application details from Feb 2022]]


== Student Proposal ==
= How to get started? =
 
* Read the [https://summerofcode.withgoogle.com/help Google Summer of Code 2022 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_2022#Project_Ideas 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) [https://wiki.xmpp.org/web/Google_Summer_of_Code_2022#Join_the_group_chat! Link]
* Continue to discuss teaser tasks with the project contact [https://wiki.xmpp.org/web/Google_Summer_of_Code_2022#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_2022#Student_Proposal Link]
 
== Join the group chat! ==


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.
Use a regular XMPP client and join the GSoC chat room '''[xmpp:gsoc@muc.xmpp.org?join gsoc@muc.xmpp.org]'''.


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.
How to join:


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 2022] are highly recommended to read first.
* Download and [https://xmpp.org/getting-started/ install a client], or [https://xmpp.org/chat#converse/room?jid=gsoc@muc.xmpp.org 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 ==
== Teaser Tasks ==
Line 64: Line 75:
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 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.


= Join the group chat! =
== Student Proposal ==


Use a regular XMPP client and join the GSoC chat room '''[xmpp:gsoc@muc.xmpp.org?join gsoc@muc.xmpp.org]'''.
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.


How to join:
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.


* Download and [https://xmpp.org/getting-started/ install a client], or [https://xmpp.org/chat?gsoc use a web client]
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 2022] are highly recommended to read first.
* Create an account, or use an existing one
* Find, join, and bookmark: [xmpp:gsoc@muc.xmpp.org?join gsoc@muc.xmpp.org].


= Project Ideas =
= Project Ideas =


= Dino =
== Dino ==


''Website:'' https://dino.im/<br/>
''Website:'' https://dino.im/<br/>
Line 84: Line 93:
''Relevant readings:'' [https://wiki.gnome.org/Projects/Vala/Tutorial Vala Tutorial]<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/>
''Teaser Tasks:'' [https://github.com/dino/dino/labels/good%20first%20issue Good first issues]<br/>
''Chat:'' [xmpp:chat@dino.im?join chat@dino.im]
''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, 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.
'''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.
Line 94: Line 103:
''Relevant readings:'' [http://ogp.me/ OpenGraph protocol]<br/>
''Relevant readings:'' [http://ogp.me/ OpenGraph protocol]<br/>
''Project size:'' Small (175h)<br/>
''Project size:'' Small (175h)<br/>
''Difficulty:'' Easy<br/>
''Deliverables / Expected Results:''<br/>
''Deliverables / Expected Results:''<br/>
* User interface widget to display metadata, suitable for preview image, title, abstract and the original url/domain.
* User interface widget to display metadata, suitable for preview image, title, abstract and the original url/domain.
Line 105: Line 115:
''Relevant readings:'' [https://xmpp.org/extensions/xep-0446.html XEP-0446], [https://xmpp.org/extensions/xep-0447.html XEP-0447], [https://xmpp.org/extensions/xep-0363.html XEP-0363]<br/>
''Relevant readings:'' [https://xmpp.org/extensions/xep-0446.html XEP-0446], [https://xmpp.org/extensions/xep-0447.html XEP-0447], [https://xmpp.org/extensions/xep-0363.html XEP-0363]<br/>
''Project size:'' Small (175h)<br/>
''Project size:'' Small (175h)<br/>
''Difficulty:'' Medium<br/>
''Deliverables / Expected Results:''<br/>
''Deliverables / Expected Results:''<br/>
* Use [https://xmpp.org/extensions/xep-0447.html Stateless file sharing (SFS)] for outgoing HTTP file transfers.
* Use [https://xmpp.org/extensions/xep-0447.html Stateless file sharing (SFS)] for outgoing HTTP file transfers.
Line 115: Line 126:
''Relevant readings:'' [https://xmpp.org/extensions/xep-0447.html XEP-0447], [https://xmpp.org/extensions/xep-0234.html XEP-0234]<br/>
''Relevant readings:'' [https://xmpp.org/extensions/xep-0447.html XEP-0447], [https://xmpp.org/extensions/xep-0234.html XEP-0234]<br/>
''Project size:'' Small (175h)<br/>
''Project size:'' Small (175h)<br/>
''Difficulty:'' Medium<br/>
''Important Note:'' This project can only be achieved by first implementing the "Stateless file sharing" project.<br/>
''Important Note:'' This project can only be achieved by first implementing the "Stateless file sharing" project.<br/>
''Deliverables / Expected Results:''<br/>
''Deliverables / Expected Results:''<br/>
Line 126: Line 138:
''Relevant readings:'' [https://xmpp.org/extensions/xep-0343.html XEP-0343], [https://xmpp.org/extensions/xep-0234.html XEP-0234]<br/>
''Relevant readings:'' [https://xmpp.org/extensions/xep-0343.html XEP-0343], [https://xmpp.org/extensions/xep-0234.html XEP-0234]<br/>
''Project size:'' Small (175h)<br/>
''Project size:'' Small (175h)<br/>
''Difficulty:'' Hard<br/>
''Deliverables / Expected Results:''<br/>
''Deliverables / Expected Results:''<br/>
* Implement SCTP protocol
* Implement SCTP protocol
Line 137: Line 150:
''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/>
''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/>
''Project size:'' Small (175h)<br/>
''Difficulty:'' Easy<br/>
''Deliverables / Expected Results:''<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.
* 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.
Line 143: Line 157:
* Apply markup to messages in conversation history via Pango Attributes
* Apply markup to messages in conversation history via Pango Attributes


= Mellium =
== Psi ==
 
''Website:'' https://mellium.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 ===
 
''Size:'' Large<br/>
''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 (or support in [https://github.com/mellium/communique-tui Communiqué])
 
=== Group Chat ===
 
''Size:'' Large<br/>
''Brief explanation:'' Add support for group chats using Mediated Information Exchange (MIX).<br/>
''Involved Technologies:'' Go<br/>
''Relevant readings:'' [https://xmpp.org/extensions/xep-0369.html XEP-0369: Mediated Information eXchange (MIX)]<br />
''Deliverables / Expected Results:''<br/>
* A well tested library for joining and serving MIX channels and a set of integration tests that can be used to test against servers as they add support
* A simple component for hosting MIX channels
 
=== End-to-End Encryption ===
 
''Size:'' Large<br/>
''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 sub-repositories to add any missing cryptographic primitives or expose operations that are currently internal only.
 
= Psi =


''Website:'' https://psi-im.org/<br/>
''Website:'' https://psi-im.org/<br/>
Line 194: Line 165:
''Relevant readings:'' [https://psi-plus.com/wiki/en:main]<br/>
''Relevant readings:'' [https://psi-plus.com/wiki/en:main]<br/>
''Teaser Tasks:'' [https://github.com/psi-im/psi/milestone/4]<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]
''Chat:'' [xmpp:psi-dev@conference.jabber.ru?join psi-dev@conference.jabber.ru] or [https://xmpp.org/chat#converse/room?jid=psi-dev@conference.jabber.ru Webchat]


=== Mediated Information Exchange (MIX) ===
=== Mediated Information Exchange (MIX) ===
Line 202: Line 173:
''Relevant readings:'' [https://xmpp.org/extensions/xep-0369.html XEP-0369: Mediated Information eXchange (MIX)]<br />
''Relevant readings:'' [https://xmpp.org/extensions/xep-0369.html XEP-0369: Mediated Information eXchange (MIX)]<br />
''Size:'' large<br/>
''Size:'' large<br/>
''Difficulty:'' Hard<br/>
''Deliverables / Expected Results:''<br/>
''Deliverables / Expected Results:''<br/>
* A set of classes in [https://github.com/psi-im/iris iris] library to support MIX extensions.
* A set of classes in [https://github.com/psi-im/iris iris] library to support MIX extensions.
Line 214: Line 186:
''Relevant readings:'' https://en.wikipedia.org/wiki/QML<br/>
''Relevant readings:'' https://en.wikipedia.org/wiki/QML<br/>
''Size:'' large<br/>
''Size:'' large<br/>
''Difficulty:'' Medium<br/>
''Deliverables / Expected Results:''<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.
* 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. This mocked code is mostly needed to initiate some UI actions unrelated to self user and catch/log UI events.
* 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. This mocked code is mostly needed to initiate some UI actions unrelated to self user (e.g. some contact changes their status) and catch/log UI events.
* 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.
* 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.
* The UI should provide next functions: model/view-based chat/group-chat, roster, avatars, statuses, recent (group-)chats, fetching unlimited message log, contact list (with groups/tags), contacts management, own status management.
* The UI should be adaptable to screen size (read: there plans to use it mobile platforms too).
* The UI should be adaptable to screen size (read: there plans to use it for mobile platforms too).
* The UI should be compilable at least on Linux, MacOS and Windows.
* The UI should be compilable at least on Linux, MacOS and Windows.


Line 228: Line 201:
''Relevant readings:'' https://xmpp.org/extensions/xep-0313.html<br/>
''Relevant readings:'' https://xmpp.org/extensions/xep-0313.html<br/>
''Size:'' small<br/>
''Size:'' small<br/>
''Difficulty:'' Medium<br/>
''Deliverables / Expected Results:''<br/>
''Deliverables / Expected Results:''<br/>
* Implement MAM in iris (https://github.com/psi-im/iris) library.
* Implement MAM in iris (https://github.com/psi-im/iris) library.
Line 235: Line 209:
* Keep in mind related to MAM XEPs to not make something completely incompatible.
* Keep in mind related to MAM XEPs to not make something completely incompatible.


= PGPainless =
== PGPainless ==


[https://pgpainless.org/ PGPainless] is a Java OpenPGP library. While it is not strictly an XMPP related project, it has it has its origins in GSoC and the XMPP community, since it was created as a [https://blog.jabberhead.tk/summer-of-code-2018/ Summer of Code project in 2018].
[https://pgpainless.org/ PGPainless] is a Java OpenPGP library. While it is not strictly an XMPP related project, it has it has its origins in GSoC and the XMPP community, since it was created as a [https://blog.jabberhead.tk/summer-of-code-2018/ Summer of Code project in 2018].
Interested students are encouraged to join '''[xmpp:gsoc@muc.xmpp.org?join gsoc@muc.xmpp.org]'''


=== OpenPGP Message Parsing using Parser Generator ===
=== OpenPGP Message Parsing using Parser Generator ===
Line 250: Line 226:
* An ideal implementation would enforce the OpenPGP message structure syntax defined as EBNF. This could be done by using a parser generator such as [https://javacc.github.io/javacc/ JavaCC].
* An ideal implementation would enforce the OpenPGP message structure syntax defined as EBNF. This could be done by using a parser generator such as [https://javacc.github.io/javacc/ JavaCC].


= Converse.js =
== Converse.js ==


[https://conversejs.org/ Converse] is a web-based XMPP client. It has different modes, allowing it to be integrated into existing websites, used as a webchat for a specific chatroom, or used as a full-fledged XMPP client on its own. There is also an [https://www.electronjs.org/ electron]-based version available.
[https://conversejs.org/ Converse] is a web-based XMPP client. It has different modes, allowing it to be integrated into existing websites, used as a webchat for a specific chatroom, or used as a full-fledged XMPP client on its own. There is also an [https://www.electronjs.org/ electron]-based version available.
* [https://xmpp.org/chat#converse/room?jid=discuss@conference.conversejs.org Webchat]


=== Support Audio/Video calls in Converse ===
=== Support Audio/Video calls in Converse ===


''Size:'' Large<br/>
''Size:'' small (175hrs)<br/>
''Brief explanation:'' Add support for Audio/Video Communication via Jingle.<br/>
''Brief explanation:'' Add support for Audio/Video Communication via Jingle.<br/>
''Involved Technologies:'' JavaScript, WebRTC, Jingle<br/>
''Involved Technologies:'' JavaScript, WebRTC, Jingle<br/>
181

edits

Navigation menu