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
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
re:claimID/GNUnet Browser Plugin
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
Canonical statistics identifier
Derzeit sind die Schlüssel in unserer Statistikdatenbank zu umfangreich. Zum Beispiel:
nse # flood messages received: 13
nse # peers connected: 4
nse # nodes in the network (estimate): 203
nse # flood messages started: 5
nse # estimated network diameter: 3
nse # flood messages transmitted: 10
Mit derart umfangreichen Schlüsseln gibt es keinen einfachen Weg, ein kompaktes JSON Dokument oder Einträge für eine Zeitreihendatenbank zu bilden. Und es lassen sich keine einzelnen Statistiken anfragen, ohne die Zeile exakt zu copypasten und in Anführungsstriche zu setzen. Kurz zusammengefaßt sind die Ziele...
- Entwickele eine Methode, wie statistische Einträge kanonisch gemacht werden können.
- Setze die Veränderung um und migriere die bestehenden Verwendungen.
- Dokumentiere das bzw. die Format(e) und definiere einen geeigneten Registrierungmechanismus für Bezeichner
Vorteilhafte Kenntnisse/Sprachen/Systeme:
- C
- HTML
Schwierigkeit: Anfänger
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
Rust templates for GNUnet services
Ziel ist es, entweder auf den (veralteten) GNUnet Rust-Bindungen aufzubauen oder dem Pfad von https://github.com/bfix/gnunet-go zu folgen, der versucht, den größten Teil des GNUnet-Stacks neu zu implementieren. Das Endergebnis sollte ein Erweiterungstemplate für GNUnet in der Form des bestehenden C templatesein, welches es ermöglicht, schnell Dienstleistungen und Bibliotheken für GNUnet zu implementieren.
Mentoren: Martin Schanzenbach
Notwendige Fähigkeiten: Solide Kenntnisse in Rust und idealerweise asynchrone E / A.
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