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.
- Testen der Communicator.
- Dokumentation.
- Vorteilhafte Fähigkeiten/Sprachen/Systeme:
- C
- Kenntnis von HTTPS, QUIC, Bluetooth oder WiFi.
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:
- Get familiar with the GNUnet scheduler and envisioned single-process architecture.
- Implement the single-process scheduler and main loop.
- Demonstrate the functioning of this change (e.g. in a simple Android App)
- A new single-process shared library to link against.
- Documentation on when and how to build the single-process library.
- A demo application.
- C
- Socket programming
- 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:
- Get familiar with the existing REST service.
- Plan a multi-processes architecture for REST services.
- Test and document the use of the new architecture / REST service layer.
- A new multi-process REST service architecture.
- The current REST service is modified or replaced with a multi-process service per subsystem.
- Architecture and usage documentation.
- C
- 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:
- Verbessere den gegenwärtigen GNUnet Emscripten-Aufbau, um mehr Subsysteme unterzubringen.
- Integriere das Ergebnis in eine Webextension.
- Integriere das Ergebnis in die re:claim ID Webextension
- C
- emscripten
- 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