FOSDEM

Published Tue 13 Feb 2024. Last update Tue 13 Feb 2024.
A post in the series.

I attended the Free and Open source Software Developers’ European Meeting (FOSDEM) in Brussels, Belgium last weekend. There are hundreds of hours of talks in 35 rooms over a period of two days, and rooms are often full to capacity, so it’s impossible to see everything! Thankfully every room is live-streamed and recordings made available after the fact, so you can catch up on anything you miss.

Friday

On the Eurostar over my travelling companion and I were lamenting about the Nix DSL, and we heard a French accent from behind:

Ah, NixOS. See you at FOSDEM then!

Saturday

The day started with a coffee and a banana (probably not substantial enough in hindsight), an absolutely packed number 71 bus to the ULB Solbosch Campus, and arriving in plenty of time to get a seat for the 09:30 CET opening ceremony. I kicked off the day by attending:

Having, during my January tradition, spent some time revisiting my technical (in addition to non-technical) habits, after getting sufficiently frustrated with thunderbird I’ve started using the aerc mail client along with isync (mbsync)/goimapnotify/mu. So naturally I then moseyed on over to the Modern Email BoF.

I was a little early and caught the end of the NGI Zero network meetup, and met someone who works for the Dutch Standardisation Forum on, amoung other things, a neat website and mailserver tester at internet.nl. My website and mailserver had a couple of flagged issues including a DMARC policy of none (which should really quarantine or reject once it’s working properly), and DNSSEC support due my nameserver EON not (yet) supporting DNSSEC. Switching to bind with a couple of configuration changes got me scoring 100% on my apex freumh.org. The www subdomain was a CNAME to the apex, which meant it also served an MX record. I don’t serve any significant website on my apex domain, so I simply dropped the subdomain. Now I’m told a free internet.nl T-Shirt is on its way to my Cambridge address!

I’ve been working on a nameserver to provision TLS certificates recently for inclusion into my one-stop-shop self-hosting solution Eilean. By including the DNS zonefile data in the Nix configuration we can automatically provision the necessary records for new services, as well as manage records for e.g. DKIM/DMARC/SPIF. It would be great if I could get a score of 100% on internet.nl on an out-of-the box Eilean deployment as this would simplify the experience of self-hosting these services greatly.

Modern Email devroom

When the Email discussion started I sat next to a person who develops the Go IMAP library used by my mail client aerc. They also just so happen to be the lead maintainer of wlroots, a library which I was writing bindings to OCaml on the train over in hopes of writing a performant, functional, modern display server. I’ve since been added as a maintainer to the dormant bindings library.

I then joined he JMAP discussion section and got some insight to the chicken-and-egg problem of Internet protocol ossification in a discussion between Dovecot developers and salespeople, and JMAP proponents. Talking to one such JMAP proponent developing a JMAP client for Android was very educational. It seems like JMAP is essentially an open standard for implementing a lot of functionality that comes from propriety client/server solutions like Gmail. For example, it supports the use of notification services of instead of polling (and not just maintaining an open TCP connection). I’ve heard this can be an issue using non-Google android distributions like GraphineOS, but apparently there are numerous alternatives such as microG. Another example is that it supports search on server functionality without having to download emails. I like to keep all my mail locally on my main machine, but the JMAP seems particularly well suited to mobile devices where that is not the case.

They also mentioned the Stallwart JMAP-compatible mailserver. This was mentioned by nlnet.nl in the NixOS devroom on Sunday as well. I might try deploying it for myself and integrating it into Eilean.

OS Stands

After the Modern Email devroom I had a look around the stands in the AW building which were mainly OS related. A couple of really cool projects were PostmarketOS and SailfishOS building Linux (not Android) distributions for mobile devices, though apparently SailfishOS has some closed-source components such as for Android emulation. It seems Gnome and KDE both have mobile display environments, and Phosh is the on PostmarketOS. Sxmo is cool project that encourages allows the use of e.g. sway. It also allows SSHing to your phone and sending SMS messages! I can’t figure out how to send texts from the command line with KDE, It also looks to be possible to deploy a number of matrix bridges for this.

Firefox

My choice of browser was vindicated with a free ‘cookie’ stand:

More talks

I attended a bunch more talks after lunch (but still far less than I wanted too):

Tailscale Meetup

After the conference proper we were in want of something to do so we went to a Tailscale meetup for free drinks. To collect said drinks, one had to connect to a printer shared via Tailscale. Unfortunately as I’m using a self-hosted headscale control server I wasn’t able to have this machine shared with me. Thankfully my companions were more than happy to print a ticket on my behalf. Though, this reminded that my idea of a ‘federated tailscale’ would be really cool. In the bar I met some lovely people and got some podcast recommendations (e.g. Self Hosted).

Sun

After another coffee breakfast, I headed to the ULB for the final day of conferencing. I mainly camped out in two rooms – the Nix and NixOS devroom and the Matrix devroom.

Nix and NixOS

In this devroom I attended:

During an intermission, I was hacking on my VPS deploying DNSSEC with BIND9 for a free internet.nl T-Shirt when I started to experience some strange network issues. All requests to freumh.org were being directed to http://135.181.100.27:6080/php/urlblock.php?args=<hash>&url=http://135.181.100.27%2f on eduroam. I wasn’t able to connect to my site on the IPv6-only fosdem network either, despite it working the previous day. Switching the dual-stack IPv4 compatible network seemed to alleviate the issues, but before I uncovered these underlying network issues this manifested itself in my being unable to connect to my headscale Tailscale control server, which I exclaimed to my friend next to me. Then the lead developer for headscale, sitting right behind me, piped up and said something along the lines of “I know it’s rude to look at other people’s screens but if headscale is causing you any issues I apologise”.

The talks continued with:

  • Running NLnet on NixOS which was an unexpectedly interesting talk on NLnet‘s experience using NixOS to run their systems. They observed that once you realise everything in Nix is just a function, as suggested by the tag-line of a ’purely functional package manager’, all becomes very conceptually simple. NLnet use borg for backups and btrbk for snapshots, which might be worth looking into for Eilean. They noted that Nix is great at handling the software setup, but that it has no notion of the mutable runtime state like databases and secrets. This is where I see a lot of people having issues with Nix, e.g. with database migrations. I think a ‘Nix for data’ story would be very useful. Perhaps it could utilize some form of snapshots associated with NixOS generations.

Matrix

Having self-hosted a Matrix homeserver for (checks logs) 2 years this February, I was keen to attend the Matrix devroom, where I learnt about:

  • The Matrix State of the Union including a bit of the history of the project, how Third Room is apparently dead due to lack of funding, PseudoIDs MSC4014 & Crypto IDs MSC4080 which should provide account portability (though I don’t completely understand how yet) and which are a pre-requisite for P2P Matrix which uses a very cool overlay network that aims to provide end-to-end encrypted connectivity over any medium and providing multi-hop peer-to-peer connectivity between devices in places where there is no Internet connectivity. Some of this talk reminded me of discussions I’ve had about using Matrix as a communication channel for the Internet of Things.
  • In Interoperability & Matrix I learnt that the new EU Digital Markets Act (DMA) requires an open standard for interoperable communications, how Linearised Matrix is one such proposal, and about the MIMI IETF working group.

All in all, attending FOSDEM was a great experience where I learnt a bunch about topics I’m passionate about and met some really cool people.