Google "Summer of Code" Projekte von GNUnet

Als GNU-Projekt nimmt GNUnet seit einigen Jahren am Google Summer of Code (GSoC) teil. Diese Seite enthält alle laufenden, vorherigen und abgeschlossenen Projekte. Falls du mitmachen und dich für eine der Ideen für 2020 oder eins der noch nicht abgeschlossenen vorherigen Projekte bewerben willst (oder sogar eine eigene Idee hast), dann setze dich bitte mit uns in IRC oder über die Mailingliste in Verbindung.

Ideen 2021

Transport Next Generation (TNG): Communicator plugins

Das GNUnet-Team arbeitet derzeit an einem Umschreiben der Transportschicht, um Kernprobleme bei der Konnektivität zu beheben. Diese neue Komponente wird gerade unter dem Namen "TNG" entwickelt. Das, was heute als "transport plugin" bekannt ist, wird im TNG als "Communicator" dargestellt. Communicators sind Prozesse mit einem gut definierten API, mittels dem Peers über ein spezifisches Protokoll verbunden werden können. Die primären Protokolle, die bereits implementiert sind, sind UNIX Steckkontakte, UDP Kontakte und TCP Kontakte. Für ein wirklich widerstandsfähiges Netzwerk sind andere Verbindungsoptionen wie WiFi Mesh, Bluetooth, HTTP(S), QUIC oder sogar noch obskurere Alternativen wie Radio erforderlich. Das Ziel dieses Projekts ist es, neue Communicator auszuwählen, zu implementieren und zu testen. Solange TNG noch nicht fertig ist, können Communicator designbedingt gegen den aktuellen API entwickelt und getestet werden. Wir gehen davon aus, daß dieses Projekt von mehreren Studenten bearbeitet werden kann, da man unter einer großen Menge von Protokollen auswählen kann. Die Aufgaben wären:

    Auswahl an zu implementierenden Communicator.
  1. Testen der Communicator.
  2. Dokumentation.
  3. Vorteilhafte Fähigkeiten/Sprachen/Systeme:
  4. C
  5. Kenntnis von HTTPS, QUIC, Bluetooth oder WiFi.

  6. Schwierigkeit:Durchschnitt, aber von ausgewählten Protokollen abhängig.
    Mentoren: Martin Schanzenbach, t3sserakt

Single-process peer

For special platforms such as Android, GNUnet must be usable as a single-peer shared library. Since GNUnet's design fundamentally revolves around a multi-process model that communicate via IPCs, this requires a major change in how GNUnet processes are instantiated. A lot of progress in this direction has already been made but some issues still remain. The project tasks are to:

  1. Get familiar with the GNUnet scheduler and envisioned single-process architecture.
  2. Implement the single-process scheduler and main loop.
  3. Demonstrate the functioning of this change (e.g. in a simple Android App)
Expected outcome:
  1. A new single-process shared library to link against.
  2. Documentation on when and how to build the single-process library.
  3. A demo application.
Advantageous skills/languages/frameworks:
  1. C
  2. Socket programming
  3. Scheduler and IO

Difficulty: Difficult
Size: 175h
Mentors: Martin Schanzenbach

Pluggable REST service components

In the process of supporting a single-process GNUnet peer, the subsystem REST plugins have been consolidated into a single, large REST server that depends on all subsystems. In this work, the student should define and implement a new architure that runs each subsystem's REST interface in its own service, thus making the REST service more resilient and easier to extend. The planned projects tasks are to:

  1. Get familiar with the existing REST service.
  2. Plan a multi-processes architecture for REST services.
  3. Test and document the use of the new architecture / REST service layer.
Expected outcome:
  1. A new multi-process REST service architecture.
  2. The current REST service is modified or replaced with a multi-process service per subsystem.
  3. Architecture and usage documentation.
Advantageous skills/languages/frameworks:
  1. C
  2. Socket programming

Difficulty: Medium
Size: 175h
Mentors: Martin Schanzenbach

gnunet-gtk gtk4 upgrade

reclaimID ist ein dezentrales Identitätssystem, das auf dem GNU-Namenssystem aufbaut. Zur Zeit gibt es eine Webextension, welche das GNUnet verwendet REST API. Damit diese besser angenommen und leichter angewandt werden kann, zielt dieses Projekt darauf ab, einen vollwertigen GNUnet-Knoten innerhalb der Webextension als Absicherung anzubieten. GNUnet kann zu Web Assembly oder JavaScript zusammengetragen werden, wie hier heregezeigt. Die Idee ist, dieses Konzept zu verbessern und mehr von GNUnets Subsystemen zu unterstützen. Die Schwierigkeit des Projekts hängt zum größten Teil von den Fähigkeiten der Studenten bzgl. Toolbau, Emscripten und Improvisation ab. Die unvollständige Aufgabenliste wäre:

  1. Verbessere den gegenwärtigen GNUnet Emscripten-Aufbau, um mehr Subsysteme unterzubringen.
  2. Integriere das Ergebnis in eine Webextension.
  3. Integriere das Ergebnis in die re:claim ID Webextension
Vorteilhafte Kenntnisse/Sprachen/Systeme:
  1. C
  2. emscripten
  3. Webextensions

Schwierigkeit: Herausfordernd
Mentoren: Martin Schanzenbach

Integration of GNU Anastasis into the GNU Taler wallet

The goal of this project is to enable users to store their GNU Taler wallet backup encryption keys in the GNU Anastasis distributed key backup and recovery system, and to use GNU Taler to pay GNU Anastasis service providers for key storage and recovery. The project will focus on implementing the GNU Anastasis user interface on Android inspired by the existing Gtk+ and WebUI and integrating the result with the rest of the GNU Taler Android App.

Mentoren: Christian Grothoff

Erforderliche Kenntnisse: Rust oder C, crypto

Duration: 350h

Schwierigkeitsgrad: mittel

Abgeschlossene Projekte

2019

Migrate gnunet-qr from Python 2.7 to C using libzbar

Python 2.7 nähert sich dem Ende seiner Lebensdauer, und wir möchten die Abhängigkeit von Python beseitigen. Das bestehende GNUnet-qr-Tool ist eine relativ einfache Hülle um Python-zbar, welches selber libzbar umhüllt. Das Ziel dieses Projekt ist es, libzbar direkt für des Scannen von QR-Codes für GNUnet / das GNU-Namen-System zu verwenden (siehe auch #5562).

Mentoren: Christian Grothoff

Erforderliche Kenntnisse:

Schwierigkeitsgrad:

Bericht:

Unvollendet/Abgebrochen, da gnunet-qr nach C außerhalb von GSoc verschoben wurde.

2018

GNUnet Web-based User Interface

Implementierung einer webbasierten Benutzeroberfläche für GNUnet ähnlich wie GNUnet-Gtk mit einem noch zu bestimmenden Framework wie etwa Angular2. Das schließt die Entwicklung und Implementierung von noch nicht existierenden REST APIs, die das GNUnet APIexponieren, mit ein.

Mentoren: Martin Schanzenbach

Erforderliche Fähigkeiten: C, JavaScript, CSS

Schwierigkeitsgrad: mittel

Bericht: GSoC 2018: GNUnet WebUI