211 lines
8.9 KiB
Markdown
211 lines
8.9 KiB
Markdown
---
|
|
title: "Cambridge XMPP Sprint"
|
|
date: 2018-08-30T15:00:00+01:00
|
|
aliases:
|
|
- "/2018/08/xmpp-sprint"
|
|
- "/2018/08/xmpp-sprint/"
|
|
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
|
|
[Converse.js](https://conversejs.org), and [Poezio](https://poez.io).
|
|
Converse.js is currently seeing the changes merged. It's taking a bit more time
|
|
for Poezio, but we'll get there.
|
|
|
|
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 offices 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], and [Poezio][11]
|
|
- [pep.][10] from Poezio
|
|
- Friends and colleagues, first time XMPP contributors
|
|
|
|
And remotely:
|
|
|
|
- [JC Brand][12] from [Converse.js][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 example. 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 as regular "titles"
|
|
that are displayed to other users, (e.g., "Teacher", "Student", "Developer
|
|
of XYZ"), but can also carry permission information. The current
|
|
specification needed reworking as it has been left with lots of TODOs, and
|
|
was not really finished nor implementable.
|
|
|
|
![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 were able to contribute on projects, by providing
|
|
feedback as well as patches.
|
|
|
|
Here is a non-exhaustive list of issues/topics we worked on:
|
|
|
|
__Conversations__
|
|
|
|
- Use PEP Bookmarks if `urn:xmpp:bookmarks-conversion:0` is announced.
|
|
[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 implementation of [Discovering Alternative XMPP Connection
|
|
methods](https://xmpp.org/extensions/xep-0156.html):
|
|
[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](https://github.com/dino/dino/tree/consistent-color) 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)
|
|
- [Fixed](https://lab.louiz.org/poezio/poezio/merge_requests/9) 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 (specifications)__
|
|
|
|
- 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)
|
|
- Started XEP for synchronisation between [Private
|
|
XML](https://xmpp.org/extensions/xep-0049.html) and
|
|
[PEP](https://xmpp.org/extensions/xep-0048.html) bookmarks
|
|
- 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.
|