Sprints/2019 March Berlin/Summary

Thanks to the DBJR and other organizers of the Berlin XMPP meetup, 24 members of the XMPP community met for the last weekend of March 2019 to discuss, hack, eat, drink, and have fun.

The event has been generously hosted by the Deutscher Bundesjugendring (DBJR), the umbrella of German youth organisations. They kindly provided premises, network and catering. Many thanks!

The Sprint was held in the heart of Berlin only a short walk away from the Alexanderplatz. Participants could choose to either seek a quiet room for themselves or meet up at the round table.

A broad range of projects was present with diverse plans on how to spend the time.

Participating projects
Among the participants were developers of the following projects (in alphabetical order):
 * Conversations
 * Converse.js
 * Dino
 * Ejabberd
 * Gajim
 * Kaidan
 * Poezio
 * Salut à Toi
 * Smack
 * UWPX

The crowd wasn't only made up of developers though. There were also some users participating in the discussions, which was a great, valuable bonus.

Objectives
The participants had different objectives and plans what to achieve during sprint.

ATT
Melvin lead discussions around his ProtoXEP Automatic Trust Transfer (ATT), which has the goal to simplify key authentication by reducing the number of manual key authentications. There are still some issues with the proposal and some solutions were found during the weekend. Paul started working on an ATT implementation for Smack and layed the groundwork in form of a BTBV implementation.

Feedback on these discussions also went to the [standards list](https://mail.jabber.org/pipermail/standards/2019-March/035945.html) and you can read about it there.

Consistent Colors
Fabian implemented Consistent Color Generation in his client UWPX and proposed to use the functionality to color parts of OMEMO fingerprints for easier visual comparison.

Muclumbus a.k.a. MUC search in Conversations
Daniel created a prototype implementation of Muclumbus in Conversations. Muclumbus is a [channel search engine](https://search.jabber.network), which can be used to explore and discover existing channels based on topics and language.

OMEMO
Linus, Jonah and Mancho considered to start an OMEMO implementation and discovered before they could start with that, they needed a PEP implementation for Kaidan. JC fixed some bugs in Converse.js with the help of Daniel. Martin hosted a OMEMO compatibility testing fest. The participants took a close look on how good a dozen of clients interoperated, what did work and what not. TODO: Results? Fabian fixed some OMEMO related bugs in UWPX.

OX (OpenPGP for XMPP)
After some struggling with symmetric encryption Philipp Hörist succeeded in his implementation of Secret Key Backup of OpenPGP keys for Gajim. Daniel and pep did some experiments with OX in Conversations and xmpp-rs.

Spam Filtering
Holger only joined on Sunday, so he didn't have much time, discarded his plans to work on MUC-Push, and worked on a spam filtering module for ejabberd instead.

Spoiler Alerts
Xavier and Seve worked on Spoiler implementations for Kaidan and Gajim. https://xmpp.org/extensions/xep-0382.html

Stanza Content Encryption
Paul lead the discussions around Stanza Content Encryption, which could help widen the scope of end-to-end encryption in XMPP. There were a lot of useful tips from the participants and the result will be written down in a ProtoXEP.

https://wiki.xmpp.org/web/Stanza_Encryption and https://mail.jabber.org/pipermail/standards/2019-April/036002.html

Windows builds of Dino
Philipp worked on getting builds of Dino for Windows working. Right now Dino is only available for Linux and MacOS because GLib notifications are not implemented on Windows yet. Having Windows builds would be a great improvement to the XMPP ecosystem. The discussion with Fabian provided useful ideas how to remove blockers with Visual Studio, so the work on the notification backend can continue now.

XEP CQP
eevvoor planned the design of a XEP for the query language CQP/CQL.

Achieved
- tested a dozen of clients OMEMO interoperability - found and fixed OMEMO bugs in Converse.js and UWPX - implemented consistent colour generation in UWPX - implemented spoilers in Gajim and Kaidan - muclumbus in Conversations - Implemented BTBV trust management in Smack - Got OX secret key backup working in Gajim - Discussed issues with Visual Studio to move forward with notifications in Dino for Windows - started a very drafty new XEP for querying media collections https://github.com/eevvoor/xeps/blob/xep_cqp/inbox/cqp.xml - figured out some salut-a-toi installation and configuration options for jp, blogging and primitivus - finished a spam filtering module for ejabberd (which is published by now)

Next?

 * Continue work on Dino for Windows after the helpful exchange
 * Use gained experience to conduct further OMEMO tests in a better organised and more systematical way
 * Some of us are gathering at the next GPN, and there is a sprint planned in The Hague in June, make sure to check out [the event page](https://xmpp.org/community/events.html).