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

140 lines
6.8 KiB
Markdown
Raw Normal View History

---
title: "Sprint in the cold north"
date: 2019-10-04T10:01:38+02:00
tags: [XMPP, Sprint]
---
Another episode of the XMPP sprints series happened this weekend close to
Stockholm in the Nacka prefecture, in a house we rented. Significant
improvements to the sprint infra this time are sauna and crêpes!
We worked together on improving a new groupchat bookmarks specification, file
transfer interoperability issues, and a future landing page for new XMPP
users! As usual, every developer meetup comes up with its share of bug fixes,
new ideas, and improvements.
![Stockholm scenery](../stockholm.jpg)
### Groupchat Bookmarks (Bookmarks 2)
Last year, Dave Cridland and JC Brand submitted a new specification titled
["Bookmarks 2 (This time it's Serious)"][bookmarks-pep2]. This XEP didn't get
much attention in the community until this weekend.
As mentioned in a [previous article][cbg-sprint-bookmarks], there are multiple
specifications for bookmarks in XMPP, one using the [Private XML
storage][bookmarks-private], and another one using [PEP as
storage][bookmarks-pep1]. Not so long after the Cambridge sprint last year,
Daniel submitted a [conversion XEP][bookmarks-conversion] to facilitate client
behaviour and thus user experience.
This new specification also uses PEP as storage, but it brings a few
improvement to the table, specifically because it splits updates to the
bookmark storage into per entry operations instead of updating the whole
storage at once. This allows for finer grained handling in clients, and
prevents some race conditions.
The XEP came up with its share of challenges that some of us attempted to fix
in a [pull request][bookmarks-PR-835] that has been submitted and is now
awaiting feedback from the authors.
[Bookmarks 2][bookmarks-pep2] is now implemented in at least 5 clients,
([Conversations][conversations-commit], [Dino][dino-commit],
[Gajim][gajim-commit], [Movim][movim-commit], [Renga][renga-commit], and some
initial work in poezio), but will not be used as long as the feature is not
advertized by the server. A new [prosody module][bookmarks-prosody] is also
available for adventurous services operators.
[cbg-sprint-bookmarks]: https://bouah.net/2018/08/cambridge-xmpp-sprint/
[bookmarks-private]: https://xmpp.org/extensions/xep-0049.html
[bookmarks-pep1]: https://xmpp.org/extensions/xep-0048.html
[bookmarks-pep2]: https://xmpp.org/extensions/xep-0402.html
[bookmarks-conversion]: https://xmpp.org/extensions/xep-0411.html
[bookmarks-PR-835]: https://github.com/xsf/xeps/pull/835
[bookmarks-prosody]: https://modules.prosody.im/mod_bookmarks2.html
[conversations-commit]: https://github.com/siacs/Conversations/tree/bookmarks2
[dino-commit]: https://github.com/dino/dino/commit/74c29d4df19f97b9b67bbc3c1a963a8729be69fd
[gajim-commit]: https://dev.gajim.org/gajim/gajim/commit/3d381a9863679ea97a0f33a5f6dbd2e9ee790c9c
[movim-commit]: https://github.com/movim/movim/commit/2b32cde26c27417d075f7696ee04da94e5df3df3
[renga-commit]: https://github.com/HaikuArchives/Renga/commit/d6cbfe4ad90d860c1af234219af5bd0931c4aba5
### New landing page
Roel and I worked on an idea that came up at the UX sprint in Brussels in
January, to have a landing page for new users that would recommend a specific
server depending on different factors that would be gathered automatically for
the most part (if not all). This is more or less similar to other portals like
[joinmastodon][joinmastodon], or [nextcloud sign-up process][nextcloud-signup].
Building up the website isn't the hardest part, what is hard is finding ways
to convey to the user what "federation" or "public network" mean. Roel teaches
in Interaction Design, and so he was a great help over the weekend. We came up
with a narrative for the project, and a sketch for a sign-in flow.
The project is far from being over, this is only the tip of the iceberg. Lots
of work needs to be done with the "stakeholders", that is mainly users and
server operators.
To know what server to recommend to users, we need to first get a list a
servers we are confident about and willing to recommend. This would mandate
discussing with server operators to get feedback on a required "feature set"
and policies. All this would then be fed into usability testing sessions for
users to validate all of it. After that, we would need lots of promotion around
it, and that's also going to take a significant amount of effort.
While I am excited about all this, I don't think diving in head first is a
good strategy and I would rather take it slow.
[joinmastodon]: https://joinmastodon.org
[nextcloud-signup]: https://nextcloud.com/signup
### And more
Pulkomando has been working on implementing IBR support in [Renga][Renga], and
reported with Link Mauve issues to server implementations that weren't
respecting the specification. The issue in prosody has been fixed, and one has
been opened [for ejabberd][IBR_ejabberd].
Larma tackled issues with bot bridging, where for example with
[matterbridge][matterbridge], users of the bridged network are displayed as
talking through the bot. This could be improved UI-wise, but requires some
groundwork and spawned [discussions][MUC_thread] about the groupchat protocol
in some specific cases.
Fiaxh spent some time improving the empty placeholder for no opened
conversations in Dino. Here is a preview:
![Dino no-conversations placeholder screen](../dino-no-conversations-placeholder.png)
Other people worked on Jingle File Transfer interoperability and narrowed down
the cause of a somewhat old issue [in gajim][FT_gajim], and also discovered
an issue with the epoll backend [in prosody][FT_prosody], and another [in
dino][FT_dino].
[Renga]: https://github.com/HaikuArchives/Renga
[IBR_ejabberd]: https://github.com/processone/ejabberd/issues/3045
[matterbridge]: https://github.com/42wim/matterbridge
[MUC_thread]: https://mail.jabber.org/pipermail/standards/2019-September/036495.html
[FT_gajim]: https://dev.gajim.org/gajim/gajim/issues/9692
[FT_prosody]: https://issues.prosody.im/1438
[FT_dino]: https://github.com/dino/dino/commit/5d65f047d0fd1a1ed4a3bbe076d5cb4df76e7d5f
### You can contribute too!
I would like to take this opportunity to remind you that you can also
[contribute][sprint-guidelines] to sprints! If you are a developer, a
translator, working on documentation, or in any other way contributing to an
XMPP implementation, we encourage you to find 2-3 other people close to you
and organize a sprint!
_TODO: come up with a platform to show interest close to you._
The [XMPP Standards Foundation][XSF] (specifically the [SCAM][SCAM] team) will
be happy to help you get it all sorted, and also provide some budget for your
event if necessary. Please do [contact us][sprint-room]!
[sprint-guidelines]: https://wiki.xmpp.org/web/Sprints#Organizing_an_event
[XSF]: https://xmpp.org
[SCAM]: https://xmpp.org/about/xsf/scam-team
[sprint-room]: xmpp:xmpp-sprint@chat.cluxia.eu?join