Difference between revisions of "Google Summer of Code 2023"

Jump to navigation Jump to search
6,620 bytes removed ,  18:31, 21 December 2022
Line 110: Line 110:
* Automatic generation of metadata, working with major websites. This should be done in a generic fashion, not targeting a specific website
* 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
* Design or reuse a specification for sending metadata with XMPP messages
=== Stateless file sharing ===
''Brief explanation:'' Attach metadata to HTTP file transfers and display it.<br/>
''Involved Technologies:'' Vala, XMPP, HTTP<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/>
''Difficulty:'' Medium<br/>
''Deliverables / Expected Results:''<br/>
* Use [https://xmpp.org/extensions/xep-0447.html Stateless file sharing (SFS)] for outgoing HTTP file transfers.
* Send minimal thumbnails (less than 16 pixels) for image file transfers
* Display minimal thumbnails blurred on incoming file transfers (before file is fetched).


=== On-demand p2p file sharing ===
=== On-demand p2p file sharing ===
Line 158: Line 146:
* 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]
* 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
* Apply markup to messages in conversation history via Pango Attributes
== 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|Sergei Ilinykh]], Tehnick (Boris Pek), VitoZz (Vitaly Tonkacheyevb)<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] or [https://xmpp.org/chat#converse/room?jid=psi-dev@conference.jabber.ru Webchat]
=== 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 />
''Size:'' large<br/>
''Difficulty:'' Hard<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/>
''Size:'' large<br/>
''Difficulty:'' Medium<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. 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.
* 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 for mobile platforms too).
* The UI should be compilable at least on Linux, MacOS and Windows.
=== Message Archive Management ===
''Brief explanation:'' Support for server-based message archive
''Involved Technologies:'' Qt, C++<br/>
''Relevant readings:'' https://xmpp.org/extensions/xep-0313.html<br/>
''Size:'' small<br/>
''Difficulty:'' Medium<br/>
''Deliverables / Expected Results:''<br/>
* Implement MAM in iris (https://github.com/psi-im/iris) library.
* Integrate the new message storage with current local history management in Psi (which is based on iris).
* Keep the ability to use local history (for cases when server MAM is unavailable or undesired) and combine both sources seamlessly
* If it's necessary update Psi UI to make it work with the new mechanism.
* Keep in mind related to MAM XEPs to not make something completely incompatible.
== 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].
Interested students are encouraged to join '''[xmpp:gsoc@muc.xmpp.org?join gsoc@muc.xmpp.org]'''
=== OpenPGP Message Parsing using Parser Generator ===
''Size:'' Small<br/>
''Brief explanation:'' Enforce OpenPGP message syntax during parsing by using a Parser Generator such as JavaCC<br/>
''Involved Technologies:'' Java, Bouncy Castle, EBNF<br/>
''Relevant readings:'' [https://datatracker.ietf.org/doc/html/rfc4880 RFC4880: OpenPGP Message Format]<br/>
''Deliverables / Expected Results:''<br/>
* In the OpenPGP Interoperability Test Suite PGPainless currently fails some tests related to [https://tests.sequoia-pgp.org/#Unusual_Message_Structure unusual message structures].
* The project has the goal to improve PGPainless' score in this category by rewriting/improving the libraries' rather naive [https://github.com/pgpainless/pgpainless/blob/master/pgpainless-core/src/main/java/org/pgpainless/decryption_verification/DecryptionStreamFactory.java message parser logic].
* 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 ==
[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 ===
''Size:'' small (175hrs)<br/>
''Brief explanation:'' Add support for Audio/Video Communication via Jingle.<br/>
''Involved Technologies:'' JavaScript, WebRTC, Jingle<br/>
''Relevant readings:'' [https://xmpp.org/extensions/xep-0166.html XEP-0166], [https://xmpp.org/extensions/xep-0167.html XEP-0167], [https://xmpp.org/extensions/xep-0353.html XEP-0353]<br />
''Deliverables / Expected Results:''<br/>
* The goal is to create a Converse plugin that adds the ability to make one-on-one audio/video calls from Converse
* The audio/video calls must be compatible with other XMPP clients such as [https://conversations.im Conversations]
393

edits

Navigation menu