Integrating GNUnet and PSYC

PSYC is a Protocol for SYnchronous Conferencing, a text-based messaging protocol. Currently, the PSYC team is working on an implementation of it as a GNUnet service, called psycd, along with client implementations for it.

Psycd currently uses gnunet-core to send and receive messages, this needs to be changed to use the new multicast service instead, so that psycd can use the multicast capabilities of GNUnet.

Next task is the implementation of file transfers for psycd. This involves identifying components that could be reused from the GNUnet framework for this purpose and also requires defining PSYC protocol syntax for this purpose.

In addition to the points above, stability improvements and fixes should also be implemented in the course of the project.

Improvement of the GNUnet Installer/updater

Details:
gnunet-update [http://gnunet.org/svn/gnunet-update] is a project being developed to provide updates to deployed GNUnet installation. The idea is that the updates are propagated through GNUnet's P2P network. This way, a peer can still update in scenarios of heavy censhorship -- where access to update servers is not available -- by just being able to communicate with other GNUnet peers.

The present idea is to have updates provided as packages by packagers who sign each update with their GPG key. These packages contain binaries along with their dependencies(the dynamic libraries which are required for the binaries to execute) and meta-data (architecture for which the binaries are built, the packager sign, revision number, etc). To propage an update, the packager publishes it in the GNUnet P2P File-Sharing (FS) application. Peer following a packager would query FS if there is an update from a certain packager. If there one, they then download the update's meta-data, verify its itegrity, and download the relevant binary components and dependencies to updates its own code base. More details here.

A recent idea is to use GNU Guix [http://www.gnu.org/software/guix/] for building, packaging, installing and updating while still using GNUnet's P2P network to propagate updates.

Creation of a GUI for the GNUnet PlanetLab/Parallel Deployment tool

Abstract:
Implement a GUI for GNUnet's parallel deployment to to control large scale experiments on hundreds of nodes.

Details:
We use the Planetlab testbed to test GNUnet under real world conditions on a large number of nodes. Deploying GNUnet to hundreds of nodes and maintain the nodes is a time consuming task. We created a powerful tool called GPLMT helping us to administer and control experiments on a large number of test hosts. With GPLMT we can define so called "task lists" to specify the tasks to perform on the host and the expected result of the command. These tasks are performed sequentially and with a dependency on the results of the predecessor. GPLMT is written in Python and designed to be easily extendable and adaptable.

We think GPLMT is a powerful and very useful tool and we want to other users and researchers to benefit from it. With this years Google Summer of Code We want to equip our tool with a graphical user interface to improve the interaction with the user.

With the GUI the user should have the possibility to control task execution and get feedback on the result of finished executions including an report on success or failure. The gui shall also provide a graphical way to configure the tool and to create the tasklists in a user friendly way.

A student interested in the project should have knowledge in python and basic knowledge in developing graphical user interfaces and parallel programming. More information can be found here: https://gnunet.org/gplmt/