GNUnet 的 Google Summer of Code 項目

作為一個 GNU計畫,GNUnet 多年來持續參與 Google Summer of Code (GSoC)。此頁面列出了所有目前、過去和已完成的項目。如果您想參與並申請以下 2020年的任何計畫或任何尚未完成的過去項目(甚至您自己的計劃),請通過郵件列表與我們聯繫。

2021年的想法

Transport Next Generation (TNG): Communicator plugins

GNUnet 團隊目前正在重寫傳輸層,以解決連接性的核心問題。這個新組件目前以 "TNG" 的名稱開發。目前所謂的 "傳輸插件 (transport plugins)" 在 TNG 中將被表示為 "通信器 (communicators)"。通信器為具有明確定義的 API 的流程,允許透過特定協議連接對等點。已經實現的主要協議為 UNIX sockets、UDP sockets 和 TCP sockets。對於真正有彈性的網路,還需要其他連接選項,例如 WiFi 網狀網路 (WiFi mesh)、藍牙 (Bluetooth)、HTTP(S)、QUIC 或甚至更模糊的替代方案,例如無線電。在這個專案中,其目標是選擇、實施和測試新的通信器。雖然 TNG 尚未準備就緒,但根據設計,可以開發和測試針對當前 API 的通信器。由於有很多協議可供選擇,我們期望這個項目可以由多個學生進行。任務包括:

  1. 決定實施哪些通信器。
  2. 測試通信器。
  3. 文件。
優勢技能/語言/框架:
  1. C
  2. HTTPS、QUIC、藍牙或 WiFi的知識。

難易程度: 中等, 但取決於選定的協議。
導師: 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 是一個建立在 GNU 名稱系統之上的去中心化身份系統。目前,有一個使用 GNUnet REST API 的 Webextension。為了提高採用率和易用性,該項目旨在在 Webextention 中包含一個完整的 GNUnet 節點作為後備。GNUnet 可以編譯為 Web Assembly 或 JavaScript,如此處所示。這個想法是為了改進這個概念並支持更多的 GNUnet 子系統。該項目的難易度在很大程度上取決於學生對構建工具、emscripten 和 improvisation skills 的熟練程度。詳盡的任務清單為:

  1. 改進現有的 GNUnet emscripten 構建以包含更多子系統。
  2. 將結果整合到 Webextention 中。
  3. 將結果整合到 re:claimID Webextension中
優勢技能/語言/框架:
  1. C
  2. emscripten
  3. Webextensions

難易程度: 困難
導師: 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.

導師: Christian Grothoff

所需技能:Rust 或 C,加密

Duration: 350h

難度等級:中

已完成的項目

2019

Migrate gnunet-qr from Python 2.7 to C using libzbar

Python 2.7 即將到達其壽命終點,我們希望可以脫離對 Python 的依賴。現有的 gnunet-qr 工具是圍繞 python-zbar 的一個相當簡單的封套資料 (wrapper),它本身包覆了 libzbar。該計畫的目標是直接使用 libzbar 來掃描 GNUnet/GNU 名稱系統的 QR codes(另請參考 #5562 )。

導師: Christian Grothoff

要求技能:

難度等級:

報告:

未完成/被放棄,因為 gnunet-qr 已移至 GSoC 之外的 C 中。

2018

GNUnet Web-based User Interface

為了予 GNUnet 實現類似於 GNUnet-Gtk的Web-based UI,具有尚未確定的框架,例如 Angular2。這包括尚不存在的REST APIs的設計和實現,而 REST APIs 將公開GNUnet API

導師: Martin Schanzenbach

要求技能:C、JavaScript、CSS

難度等級:中

報告:GSoC 2018:GNUnet WebUI