blog.bouah.net/content/posts/stockholm-sprint.md
Maxime “pep” Buquet a185713b0b
Stockholm sprint: add bookmarks sync video
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
2019-10-06 18:53:43 +02:00

147 lines
7 KiB
Markdown

---
title: "Sprint in the cold north"
date: 2019-10-03T10: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
improvements to the table. 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
advertised by the server. A new [prosody module][bookmarks-prosody] is also
available for adventurous services operators.
<figure>
<video controls="true" muted="true">
<source src="../bookmarks-sync.mp4" type="video/mp4" />
</video>
<figcaption style="font-size: 85%; font-weight: 400">Bookmarks synchronisation</figcaption>
</figure>
[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. This page 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 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 first need to get a list of
servers we are confident about and willing to recommend. This would mandate
discussing the issue 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 about 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 users of bridged networks are
displayed as talking through the bot. This happens for example with
[matterbridge][matterbridge]. 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. They narrowed
down the cause of a somewhat old issue [in gajim][FT_gajim], 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