blog.bouah.net/content/posts/xmpp-sprint.md
2018-08-30 00:53:02 +01:00

207 lines
8.6 KiB
Markdown

---
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 the [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
We started the sprint with a short standup, to discuss ideas gathered during
the previous weeks online, and to narrow the focus to a few feasible items.
At this point it became clear that User Experience (UX) would be an important
topic during the weekend, as it is also within the XMPP community of late.
Here is roughly what was mentioned, and 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) and
Reactions.
Message Attaching defines a way by which one can indicate that a message is
semantically related "attached" to an earlier message in the discussion.
This can be useful for reactions, for example, or even for previews of
links.
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.
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 allow for customised roles and affiliations in chatrooms, an extension
of the usual roles and affiliations. They can be used a regular "titles"
that are displayed to other users, (e.g., "Teacher", "Student", "Developer
of XYZ"), but can also carry permission information.
![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.
As this is also something I would like to encourage, I am happy to say that
first-time XMPP users where able to contribute on projects, by providing
feedback and patches.
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 Consistent Color Generation:
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 [Dicovering Alternative XMPP Connection
methods](https://xmpp.org/extensions/xep-0156.html) implementation:
[pull/1170](https://github.com/conversejs/converse.js/pull/1170)
__Dino__
- Implemented
[SCRAM-SHA-1](https://en.wikipedia.org/wiki/Salted_Challenge_Response_Authentication_Mechanism):
[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 Consistent Color Generation
- Visually improved 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))
- Fixed 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)
- Started 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
- Discussed 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)
- Started implementation of hats as a prosody module
__XEPs__
- 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)
- Message attachments XEP updated: [pull/696](https://github.com/xsf/xeps/pull/696)
- Started writing of a counter-proposal XEP for Hats.
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.