--- title: "Sprint in the cold north" date: 2019-10-03 10:01:38 +0200 +0200 permalink: https://bouah.net/2019/10/sprint-in-the-cold-north/index.md htmlPermalink: https://bouah.net/2019/10/sprint-in-the-cold-north/ tags: [ "XMPP", "Sprint" ] lang: en --- 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.
Bookmarks synchronisation
[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