--- title: "Xmpp Sprint" date: 2018-08-27T23:56:33+01:00 draft: true tags: [XMPP, IM, Sprint] --- This month, on August 18-19th, was held the first developer event in the XMPP community for a long time. The idea came up at the [Gulaschprogrammiernacht][0], in Karlsruhe earlier this year, talking with Daniel Gultsch, and JC Brand. We gathered there to work on an implementation of [OMEMO encryption mechanism](https://conversations.im/omemo/) for [conversejs](https://conversejs.org), and [poezio](https://poez.io). The former is currently being merged, the latter is taking a bit more time, but we'll get there eventually. JC mentioned sprints organised by the Plone community, and I felt that was something we were missing for XMPP. While the XMPP summit is held every year before FOSDEM, it is often more oriented towards protocol discussions. Developer events are scarce. I set a goal for myself to start a movement in the community, gather interested people, and work together to improve the ecosystem. The first event -- of this hopefully long series of events -- was held this month, sponsored by my employer, [Collabora](https://collabora.com), in their UK office in Cambridge! [0]: https://opkode.com/blog/2018-gulaschprogrammiernacht/ ## Who attended - [Daniel Gultsch][2] from [Conversations][3] - [MattJ][4] from [Prosody][5] - fiaxh and larma from [Dino][6] - Andrey Utkin from [decent.im][7] - [Link Mauve][8] from [JabberFR][9] - Link Mauve and [I, pep.][10] from [Poezio][11] - Friends and colleagues, first time XMPP contributors And remotely: - [JC Brand][12] from [Conversejs][13] [2]: https://gultsch.de/ [3]: https://conversations.im [4]: https://matthewwild.co.uk/ [5]: https://prosody.im [6]: https://dino.im [7]: https://decent.im [8]: https://linkmauve.fr [9]: https://jabberfr.org [10]: https://bouah.net [11]: https://poez.io [12]: https://opkode.com [13]: https://conversejs.org ## Objectives In retrospective, _User Experience_ seems to fit the ambiance of the sprint (**badly said**), and is generally a theme that comes back regularly within the community lately. At the beginning of the sprint, here is roughly what we planned to work on: 1. Bookmarks: Sync [Private XML](https://xmpp.org/extensions/xep-0049.html) bookmarks with [PEP](https://xmpp.org/extensions/xep-0048.html) ones. XMPP has different standard places to store bookmarks, and this has often proven to be a painful experience to the user, when using different clients for examle. The objective here was to transparently synchronize both stores, so that the user gets an overall nicer experience. 2. [Message Attaching](https://xmpp.org/extensions/xep-0367.html) **TDB** 3. [In-Band Registration](https://xmpp.org/extensions/xep-0077.html) in clients that don't support it, namely dino and poezio. In-Band Registration is a mechanism that allows clients to provide an interface to create accounts on servers that allow it. This way the user doesn't have to go through multiple hops to start chatting with their friends. 4. Reactions **TBD** 5. [Consistent color generation](https://xmpp.org/extensions/xep-0392.html) This specification aims at providing algorithms that will be used to generate deterministic colors, so that they stay consistent across clients, and thus help with recognition, for nicknames in groupchats, for example. 5. [Hats](https://xmpp.org/extensions/xep-0317.html) Hats are **TBD** ![Hard working developers](xmpp-sprint-1.jpg) ## Accomplishments Not everything that was mentioned on the saturday morning was worked on, but we did manage to get quite a few things done. This was also the opportunity to discuss about various topics. Here is a non-exhaustive list of issues/topics we worked on: __Conversations__ - Use PEP Bookmarks if `urn:xmpp:bookmarks-conversion:0` is annouced. [commit](https://github.com/siacs/Conversations/commit/dc5e7e5d95e30b8220a0f2d0ada969a3006c3437) - Experiments with XEP-0392: Disabled by default variant that uses HSLUV instead of YCbCr. HSLUV provides more uniform colors and also 'nicer' colors by default. [commit](https://github.com/siacs/Conversations/commit/268fcd3838f35050008bc03a81c0873e515e75f6) - Updated Conversations Compliance Checker help for Prosody: [pull/6](https://github.com/iNPUTmice/caas/pull/6) __Converse.js__ - Detailed [Converse.js][13] walkthrough for all people attending, by JC himself - Better ordering of name fallbacks: [pull/1168](https://github.com/conversejs/converse.js/pull/1168) - Attempt at a new UI/design: [pull/1167](https://github.com/conversejs/converse.js/pull/1167) - Almost working XEP-0156 implementation: [pull/1170](https://github.com/conversejs/converse.js/pull/1170) __Dino__ - SCRAM-SHA-1: [tree/scram-sha-1](https://github.com/dino/dino/tree/scram-sha-1) - [Fixed](https://github.com/dino/dino/issues/300) nVidia specific rendering and performance issue - Experiments with XEP-0392 - Visually improve Sign In dialog - [Add In-Band Registration support](https://github.com/dino/dino/commit/4be8c92a2c0e454ae217aea8f8eac69c99416214) (supports [forms](https://xmpp.org/extensions/xep-0077.html#extensibility) and [OOB](https://xmpp.org/extensions/xep-0077.html#redirect)) - Fix display names in MUCs without localparts (!) __Packaging__ - Added XMPP-related software to main Gentoo package repository - slixmpp (Python lib) https://bugs.gentoo.org/533586 - poezio (console client app) https://bugs.gentoo.org/377137 - dino (GUI client app) https://bugs.gentoo.org/631772 - Working on adding the following projects to the Gentoo main repo: - Biboumi (IRC gateway) - Spectrum (multiprotocol gateway) - Swift (client and library) - Profanity (console client) __Poezio__ - XML pretty-printing plugin: [xmlindent.py](https://linkmauve.fr/files/xmlindent.py) - Start implementation of In-Band Registration in [poezio!10](https://lab.louiz.org/poezio/poezio/merge_requests/10) and [slixmpp!4](https://lab.louiz.org/poezio/slixmpp/merge_requests/4) - [Fix](https://lab.louiz.org/poezio/slixmpp/merge_requests/4) launch script version - Discuss about how to correctly handle [xmpp URIs](https://lab.louiz.org/poezio/poezio/issues/3402) in poezio __Prosody__ - Bookmarks sync: [mod_bookmarks](https://modules.prosody.im/mod_bookmarks.html) - Updated default bookmarks for that: [mod_default_bookmarks](https://modules.prosody.im/mod_default_bookmarks.html) __XEPs__ - Message attachments XEP updated: [pull/696](https://github.com/xsf/xeps/pull/696) - Synchronisation between [vCard-based](https://xmpp.org/extensions/xep-0153.html) and [PEP](https://xmpp.org/extensions/xep-0084.html) avatars: [pull/700](https://github.com/xsf/xeps/pull/700) - Synchronisation between [Private XML](https://xmpp.org/extensions/xep-0049.html) and [PEP](https://xmpp.org/extensions/xep-0048.html) bookmarks: [pull/701](https://github.com/xsf/xeps/pull/701) Original information about the event is now listed [in the wiki](https://wiki.xmpp.org/web/Sprints/2018_August_Cambridge). I would like to thank everybody who participated, helped organise the event, and made all this possible. Thanks [Collabora](https://collabora.com) again for sponsoring the event and providing the venue. ## What's Next Talks of organising a next sprint this year in Düsseldorf, or Paris, are already happening. I would also like to encourage anybody who wants to organize similar events in their region. If you are interested and want to help organize, or participate, please join the [chatroom](xmpp:xmpp-sprint@chat.cluxia.eu?join) for more information.