Self-Updating GNUnet with GNU Guix

The goal is to have GNUnet update itself using GNU Guix whenever there is an update available. This project involves working on GNUnet and GNU Guix projects as it involves integrating them. It is also mentioned under GNU Guix's GSoC project ideas.

In this project, you have to implement a GNUnet service which can discover an updates when available, download the update, check the update for authenticity, install the update, and then propagate the update to other peers. Currently, GNU Guix provides packages from a central server with its own protocol based on HTTP. This protocol should be decentralised with GNUnet so that the packages can be downloaded from other peers in the P2P network.

Multicast implementation

The goal is to design and implement the multicast service of GNUnet.

The multicast API and initial design has been already described. The design needs further work to make it robust and scalable. One approach would be implementing the findings, or a derivative from SplitStream. The multicast service is useful for building truly distributed applications, e.g. the PSYC and Social services rely on it to implement publish/subscribe infrastructure and social networking applications.

Social applications

Implement decentralized social applications using the Social service of GNUnet.

The Social service provides publish/subscribe functionality for the underlying stateful multicast channels.
Applications are notified about incoming method calls and changes to the decentralized channel state.