OID created a physical hosting environment for Fediversity, consisting of (used) hardware spread over two data centers. OID further invented a basic ‘nixops’ deployment system, a complete rewrite of a declarative way to deploy IT infrastructure.
The second step was to start to ‘nixify’ this setup. In the first half of 2024, Tweag contributed tested customised NixOS configurations of selected social media applications that would scale to the targeted deployment environment, and helped project partners assessing issues and risks with upstream and support tools. In the second half of 2024, Tweag integrated these NixOS services configurations into a sample deployment that demonstrated viability of the overall approach. In the first half of 2025, Tweag contributed an end-to-end prototype for configuring and deploying the social media applications. Tweag also built a complete integration test suite that ensures the existing demo workflows work as advertised, and allows iterating on the prototype without accidental regressions.
OID additionally collaborated with Tweag to on a demo environment showcasing user-friendly deployment of reproducible modules for Fediverse service Mastodon, Peertube and Pixelfed. The front-end we prepared for this may serve as a simple reference implementation of Fediversity for further integration by hosting providers, which at last one hoster (ProcoliX) has committed to picking up as part of their open-source panel for hosting providers.
OID has designed a step-by-step process covering service portability, extending prior art in the Nix ecosystem. This approach covers loading of data from existing deployments, updating DNS settings, and running application-specific migration scripts, which we plan to standardise and upstream. Details on this design may be found at our issue tracker, as well as in related developer meeting notes.
Tweag built prototypes and led technical discussions to explore options for enabling portable services based on declarative NixOS configurations, experimenting with the selected social media applications. A general solution to application state management from a packaging perspective is still a matter of active research, and there are only rudimentary, isolated approaches to service portability in the Nix ecosystem.
Tweag also contributed a NixOS design pattern and accompanying prototype that enables service portability across deployment infrastructures at the configuration level], and currently leads technical discussion to provide an application-agnostic interface for service portability at the data level for migrating application state. The envisioned portability architecture builds on and extends the vast collection of existing software components from the Nix ecosystem, and will allow uniformly using the purely functional Nix programming language to describe UIs and APIs for integrating with other services.
The source code related to the project is publicly visible from:
https://git.fediversity.eu(si apre in una nuova finestra)So far six projects have been allocated subgrants through the open calls from the Fediversity fund. The results of these can be publicly tracked online:
https://nlnet.nl/thema/NGIFediversityFund.html(si apre in una nuova finestra)