blog.bouah.net/content/posts/xmpp-sprint.md

204 lines
8.2 KiB
Markdown
Raw Normal View History

---
title: "Xmpp Sprint"
date: 2018-08-27T23:56:33+01:00
draft: true
tags: [XMPP, IM, Sprint]
---
A week ago, 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 two
weeks ago, 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
proved 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 a lot done. This was also the opportunity to
discuss about various topics.
Here is a non-exhaustive list of issues/topics we worked on:
__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)
__Converse.js__
- Better ordering of name fallbacks in Converse.js:
[pull/1168](https://github.com/conversejs/converse.js/pull/1168)
- Attempt at a new UI/design for Converse.js:
[pull/1167](https://github.com/conversejs/converse.js/pull/1167)
__Conversations__
- Use PEP Bookmarks in Conversations if `urn:xmpp:bookmarks-conversion:0` is annouced.
[commit](https://github.com/siacs/Conversations/commit/dc5e7e5d95e30b8220a0f2d0ada969a3006c3437)
- Experiments with XEP-0392
- Conversations: 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)
__Dino__
__Poezio__
- Start implementation of IBR
__XEPs__
- Message attachments XEP updated: [pull/696](https://github.com/xsf/xeps/pull/696)
__Misc/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
---
_Day 1_
- Bookmarks sync in Prosody:
[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)
- Use PEP Bookmarks in Conversations if `urn:xmpp:bookmarks-conversion:0` is annouced.
[commit](https://github.com/siacs/Conversations/commit/dc5e7e5d95e30b8220a0f2d0ada969a3006c3437)
- Message attachments XEP updated: [pull/696](https://github.com/xsf/xeps/pull/696)
- 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
- Experiments with XEP-0392 (Consistent Color Generation) in Conversations and Dino
- Conversations: 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)
- Start implementation of IBR in poezio and Dino
- Mention threads, talk about how (not) to implement them, (comparing with other IM solutions).
- Better ordering of name fallbacks in Converse.js:
[pull/1168](https://github.com/conversejs/converse.js/pull/1168)
- Attempt at a new UI/design for Converse.js:
[pull/1167](https://github.com/conversejs/converse.js/pull/1167)
_Day 2_
- Detailed [Converse.js][13] walkthrough by JC
- XML pretty-printing plugin for poezio:
[xmlindent.py](https://linkmauve.fr/files/xmlindent.py)
- Updated Conversations Compliance Checker help for Prosody:
[pull/6](https://github.com/iNPUTmice/caas/pull/6)
- SCRAM-SHA-1 for Dino: [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 in Dino
- Working on adding the following projects to the Gentoo main repo:
- Biboumi (IRC gateway)
- Spectrum (multiprotocol gateway)
- Swift (client and library)
- Profanity (console client)
- Almost working XEP-0156 implementation for Converse.js:
[pull/1170](https://github.com/conversejs/converse.js/pull/1170)
- Visually improve Sign In dialog in Dino
- [Add IBR support](https://github.com/dino/dino/commit/4be8c92a2c0e454ae217aea8f8eac69c99416214)
to Dino (supports forms and OOB)
- Initial attempt at IBR 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
- Fix display names in MUCs without localparts in Dino (!)
- Discuss about how to correctly handle [xmpp URIs](https://dev.louiz.org/issues/3402) in poezio
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 us and providing the venue.
## What's Next
Talks of organising a next sprint this year in Düsseldorf, or Paris, are
already happening. If you are interested and want to participate, please join
the [chatroom](xmpp:xmpp-sprint@chat.cluxia.eu?join) to stay updated.