aboutsummaryrefslogtreecommitdiff
path: root/template/gsoc.html.j2
diff options
context:
space:
mode:
Diffstat (limited to 'template/gsoc.html.j2')
-rw-r--r--template/gsoc.html.j2204
1 files changed, 87 insertions, 117 deletions
diff --git a/template/gsoc.html.j2 b/template/gsoc.html.j2
index 43ed1876..5a8066f4 100644
--- a/template/gsoc.html.j2
+++ b/template/gsoc.html.j2
@@ -9,7 +9,7 @@
9 <div class="row"> 9 <div class="row">
10 <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu for better orientation --> 10 <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu for better orientation -->
11 <nav class="nav subnav position-fixed flex-column border-right" style="position:fixed"> 11 <nav class="nav subnav position-fixed flex-column border-right" style="position:fixed">
12 <a class="nav-link" href="#current">{{ _("Current projects") }}</a> 12 <a class="nav-link" href="#current">{{ _("Ideas 2020") }}</a>
13 <a class="nav-link" href="#past">{{ _("Past projects") }}</a> 13 <a class="nav-link" href="#past">{{ _("Past projects") }}</a>
14 <a class="nav-link" href="#finished">{{ _("Finished projects") }}</a> 14 <a class="nav-link" href="#finished">{{ _("Finished projects") }}</a>
15 </nav> 15 </nav>
@@ -20,12 +20,89 @@
20 <p> 20 <p>
21 {% trans %} 21 {% trans %}
22 As a GNU project, GNUnet has participated in the Google Summer of Code (GSoC) for a number of years. This page lists all current, past, and finished projects. 22 As a GNU project, GNUnet has participated in the Google Summer of Code (GSoC) for a number of years. This page lists all current, past, and finished projects.
23 If you want to participate and apply for any of the ideas for 2020 below or any past project which is not yet finished (or even your own idea), please contact us either in IRC or mailing list.
23 {% endtrans %} 24 {% endtrans %}
24 </p> 25 </p>
25 </section> 26 </section>
26 27
27 28
28 <h2><a name="current" class="subnav-anchor"></a>{{ _("Current projects") }}</h2> 29 <h2><a name="current" class="subnav-anchor"></a>{{ _("Ideas 2020") }}</h2>
30 <section>
31 <h4>re:claimID/GNUnet Browser Plugin</h4>
32 <p>
33 {% trans %}
34 reclaimID is a decentralized identity system build on top of the GNU
35 Name System.
36 Currently, there is a Webextension which uses the GNUnet <a href="https://rest.gnunet.org">REST API</a>.
37 In order to improve adoption and ease of use, this project aims to include
38 a full GNUnet node within the Webextention as a fallback.
39 GNUnet can be compiled to Web Assembly or JavaScript as demonstrated
40 <a href="https://gnunet.io">here</a>.
41 The idea is to improve upon this concept and support more of GNUnet's
42 subsystems.
43
44 The difficulty of this project largely depends on the students
45 proficiency with build tools, emscripten and improvisation skills.
46 There non-exhaustive task list would be:
47 <ol>
48 <li>Improve existing GNUnet emscripten build to include more subsystems.</li>
49 <li>Integrate the result into a Webextention.</li>
50 <li>Integrate the result into the re:claimID Webextension</li>
51 </ol>
52 Advantageous skills/languages/frameworks:
53 <ol>
54 <li>C</li>
55 <li>emscripten</li>
56 <li>Webextensions</li>
57 </ol>
58 <br/>
59 <strong>Difficulty:</strong> Challenging
60 <br/>
61 <strong>Mentors:</strong> Martin Schanzenbach
62 {% endtrans %}
63 </p>
64 </section>
65
66 <section>
67 <h4>Canonical statistics identifier</h4>
68 <p>
69 {% trans %}
70 Currently, the keys in our statistics database are too verbose.
71 For example:
72 </p>
73 <p>
74 nse # flood messages received: 13<br/>
75 nse # peers connected: 4<br/>
76 nse # nodes in the network (estimate): 203<br/>
77 nse # flood messages started: 5<br/>
78 nse # estimated network diameter: 3<br/>
79 nse # flood messages transmitted: 10<br/>
80 </p>
81 <p>
82 With such verbose keys there's no easy way to form compact JSON
83 document or entries for time-series database.
84 And you can't query single stats without having to copypaste the line
85 exactly and put in quotes.
86 In short, the goals are to...
87 <ol>
88 <li>Think of a way how statistics entries can be made canonical.</li>
89 <li>Implement the change and migrate existing uses.</li>
90 <li>Document the format(s) and define an appropriate registration mechanism for identifiers</li>
91 </ol>
92 Relevant bugs: <a href="https://bugs.gnunet.org/view.php?id=5650">#5650</a><br/>
93 Advantageous skills/languages/frameworks:
94 <ol>
95 <li>C</li>
96 <li>HTML</li>
97 </ol>
98 <br/>
99 <strong>Difficulty:</strong> Beginner
100 <br/>
101 <strong>Mentors:</strong> Martin Schanzenbach
102 {% endtrans %}
103 </p>
104 </section>
105
29 <!-- Past projects: Previously proposed, but left unfinished. Inspiration for students. --> 106 <!-- Past projects: Previously proposed, but left unfinished. Inspiration for students. -->
30 <h2><a name="past" class="subnav-anchor"></a>{{ _("Past projects") }}</h2> 107 <h2><a name="past" class="subnav-anchor"></a>{{ _("Past projects") }}</h2>
31 <p> 108 <p>
@@ -42,7 +119,14 @@
42 </p> 119 </p>
43 <p> 120 <p>
44 {% trans %} 121 {% trans %}
45 <strong>Mentors:</strong> <a href="https://www.goebel-consult.de/">Hartmut Goebel</a> 122 Includes: Implementation of rudimentary Android compatibility for GNUnet,
123 in part by porting the GNUnet utils scheduler to act as
124 a thin wrapper over libuv.
125 {% endtrans %}
126 </p>
127 <p>
128 {% trans %}
129 <strong>Mentors:</strong> <a href="https://www.goebel-consult.de/">Hartmut Goebel</a>, Jeff Burdges, Christian Grothoff
46 {% endtrans %} 130 {% endtrans %}
47 </p> 131 </p>
48 </section> 132 </section>
@@ -68,71 +152,6 @@
68 </p> 152 </p>
69 </section> 153 </section>
70 154
71 <section>
72 <h4>re:claimID OpenID Connect performance improvements</h4>
73 <p>
74 {% trans %}
75 reclaimID is a decentralized identity system build on top of the GNU
76 Name System.
77 Upon authorization, the user provides a requesting party (RP) such as a website
78 with an authorization ticket (e.g. piggybacked in an OpenID authorization code).
79 The RP uses information contained in this ticket to
80 <ol>
81 <li> Retrieve the decryption key from GNS</li>
82 <li> Retrieve the user attributes from GNS</li>
83 </ol>
84 The GNS lookups ensure that the RP receives up-to-date attributes and functional
85 decryption keys. However, in particular the RP-specific encryption key
86 resolution can be slow and even fail depending on the network topology.
87 We propose that in an initial exchange, in particular OpenID authorization code
88 flows, we try to incorporate key and maybe even an attribute set in the ticket
89 exchange.
90
91 In order to mitigate this issue, this project is meant to investigate and implement how...
92 <ol>
93 <li> ... decryption keys can be added to an initial exchange in OpenID.</li>
94 <li> ... initial set(s) of attributes can be piggybacked in OpenID.</li>
95 </ol>
96 <br/>
97 <strong>Mentors:</strong> Martin Schanzenbach
98 {% endtrans %}
99 </p>
100 </section>
101
102 <section>
103 <h4>re:claimID alternative GNS-based encryption</h4>
104 <p>
105 {% trans %}
106 re:claimID is a decentralized identity system build on top of the GNU
107 Name System.
108 The initial design and implementation of re:claimID includes an attribute-based
109 encryption module in order to prevent unauthorized access to attributes in the
110 name system.
111 Our motivation for re:claimID was for it to be name system agnostic, which
112 means the design theoretically also works for other name systems such as
113 namecoin.
114 Other name systems often do not have built-in mechanisms in order to do this.
115 Hence, we implemented an ABE access control layer. Our ABE implementation
116 requires two third party libraries: libpbc and libgabe. While we could merge
117 libgabe into the gnunet service implementation of re:claimID, libpbc is a
118 rather large, third party library which lacks packaging in distributions and
119 for platforms.
120 On the other hand, GNS supports record data encryption using symmetric keys as
121 labels.
122 If we make the access control layer of re:claimID more generic in order to
123 support both ABE and GNS encryption, we could reduce the required depenencies.
124 This would result in gnunet packages to include re:claimID by default.
125
126 In short, the goals are to...
127 <ol>
128 <li> ... improve performance by reducing encryption overhead.</li>
129 <li> ... reduce dependencies.</li>
130 </ol>
131 <br/>
132 <strong>Mentors:</strong> Martin Schanzenbach
133 {% endtrans %}
134 </p>
135 </section>
136 155
137 <section> 156 <section>
138 <h4>Enable all networking applications to run over GNUnet out of the box</h4> 157 <h4>Enable all networking applications to run over GNUnet out of the box</h4>
@@ -233,25 +252,6 @@
233 </p> 252 </p>
234 </section> 253 </section>
235 <section> 254 <section>
236 <h4>RESTful GNUnet</h4>
237 <p>
238 {% trans %}
239 Design and implementation
240 of <a href="http://jsonapi.org/">REST APIs</a> that expose
241 the
242 <a href="https://docs.gnunet.org/doxygen/modules.html">GNUnet API</a>
243 so that easy, hands-on development is
244 possible. Also, browser-based UIs will be much easier to
245 create on top of REST APIs.
246 {% endtrans %}
247 </p>
248 <p>
249 {% trans %}
250 <strong>Mentors:</strong> Martin Schanzenbach
251 {% endtrans %}
252 </p>
253 </section>
254 <section>
255 <h4>Rust implementation of GNUnet utils</h4> 255 <h4>Rust implementation of GNUnet utils</h4>
256 <p> 256 <p>
257 {% trans %} 257 {% trans %}
@@ -268,21 +268,6 @@
268 </p> 268 </p>
269 </section> 269 </section>
270 <section> 270 <section>
271 <h4>Android compatibility for GNUnet</h4>
272 <p>
273 {% trans %}
274 Implement rudimentary Android compatibility for GNUnet,
275 in part by porting the GNUnet utils scheduler to act as
276 a thin wrapper over libuv.
277 {% endtrans %}
278 </p>
279 <p>
280 {% trans %}
281 <strong>Mentors:</strong> Jeff Burdges and Christian Grothoff
282 {% endtrans %}
283 </p>
284 </section>
285 <section>
286 <h4>Implementation of a replacement for PANDA</h4> 271 <h4>Implementation of a replacement for PANDA</h4>
287 <p> 272 <p>
288 {% trans %} 273 {% trans %}
@@ -527,21 +512,6 @@
527 <p><strong>Mentors:</strong> Krista Grothoff, Jeff Burdges</p> 512 <p><strong>Mentors:</strong> Krista Grothoff, Jeff Burdges</p>
528 </section> 513 </section>
529 <section> 514 <section>
530 <h4>Implementation of a replacement for PANDA</h4>
531 <p>
532 {% trans %}
533 Implementation of a replacement for PANDA (see Pond) with better
534 security, and maybe integration with the GNU Name System for key
535 exchange.
536 {% endtrans %}
537 </p>
538 <p>
539 {% trans %}
540 <strong>Mentors:</strong> Jeff Burdges
541 {% endtrans %}
542 </p>
543 </section>
544 <section>
545 <h4>Supporting GNU Guix's package distribution</h4> 515 <h4>Supporting GNU Guix's package distribution</h4>
546 <p> 516 <p>
547 {% trans %} 517 {% trans %}