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.j21159
1 files changed, 580 insertions, 579 deletions
diff --git a/template/gsoc.html.j2 b/template/gsoc.html.j2
index 9b378f3b..5104e516 100644
--- a/template/gsoc.html.j2
+++ b/template/gsoc.html.j2
@@ -6,19 +6,8 @@
6 <h1>{{ _("GNUnet's Google Summer of Code projects") }}</h1> 6 <h1>{{ _("GNUnet's Google Summer of Code projects") }}</h1>
7 </header> 7 </header>
8 8
9 <div class="row container justify-content-center">
10 <div class="col-6">
11 {% trans %}
12 As a GNU project, GNUnet has participated in the
13 Google Summer of Code (GSoC) for a number of years.
14 This page lists all current, past, and finished
15 projects.
16 {% endtrans %}
17 </div>
18 </div>
19
20 <div class="row"> 9 <div class="row">
21 <div class="col-2"> 10 <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu for better orientation -->
22 <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">
23 <a class="nav-link" href="#current">{{ _("Current projects") }}</a> 12 <a class="nav-link" href="#current">{{ _("Current projects") }}</a>
24 <a class="nav-link" href="#past">{{ _("Past projects") }}</a> 13 <a class="nav-link" href="#past">{{ _("Past projects") }}</a>
@@ -27,580 +16,592 @@
27 </div> 16 </div>
28 <div class="col"> 17 <div class="col">
29 18
30 <h2>{{ _("Current projects (2019)") }}<a name="current"></a></h2> 19 <section>
31 <section> 20 <p>
32 <h4>Android Port</h4> 21 {% trans %}
33 <p> 22 As a GNU project, GNUnet has participated in the
34 {% trans %} 23 Google Summer of Code (GSoC) for a number of years.
35 It is time for GNUnet to run properly on Android. Note that 24 This page lists all current, past, and finished
36 GNUnet is written in C, and this is not about rewriting 25 projects.
37 GNUnet in Java, but about getting the C code to run on Android. 26 {% endtrans %}
38 {% endtrans %} 27 </p>
39 </p> 28 </section>
40 <p> 29
41 {% trans %} 30
42 <strong>Mentors:</strong> <a href="https://www.goebel-consult.de/">Hartmut Goebel</a> 31 <h2><a name="current" class="subnav-anchor"></a>{{ _("Current projects (2019)") }}</h2>
43 {% endtrans %} 32 <section>
44 </p> 33 <h4>Android Port</h4>
45 </section> 34 <p>
35 {% trans %}
36 It is time for GNUnet to run properly on Android. Note that
37 GNUnet is written in C, and this is not about rewriting
38 GNUnet in Java, but about getting the C code to run on Android.
39 {% endtrans %}
40 </p>
41 <p>
42 {% trans %}
43 <strong>Mentors:</strong> <a href="https://www.goebel-consult.de/">Hartmut Goebel</a>
44 {% endtrans %}
45 </p>
46 </section>
46 47
47 <section> 48 <section>
48 <h4>Help with Continuous Integration setup</h4> 49 <h4>Help with Continuous Integration setup</h4>
49 <p> 50 <p>
50 {% trans %} 51 {% trans %}
51 There is a push for migrating our CI to Gitlab. The CI should 52 There is a push for migrating our CI to Gitlab. The CI should
52 eventually not just run "make check" on various platforms, but also 53 eventually not just run "make check" on various platforms, but also
53 perform tests with multiple peers running in different VMs with 54 perform tests with multiple peers running in different VMs with
54 specific network topologies (i.e. NAT) between them being simulated. 55 specific network topologies (i.e. NAT) between them being simulated.
55 The CI should also be integrated with Gauger for performance 56 The CI should also be integrated with Gauger for performance
56 regression analysis. Running jobs only when dependencies have changed 57 regression analysis. Running jobs only when dependencies have changed
57 and scripting more granular triggers or ideally automatic dependency 58 and scripting more granular triggers or ideally automatic dependency
58 discovery (as done by the autotools) is also important. 59 discovery (as done by the autotools) is also important.
59 {% endtrans %} 60 {% endtrans %}
60 </p> 61 </p>
61 <p> 62 <p>
62 {% trans %} 63 {% trans %}
63 <strong>Mentors:</strong> TBD 64 <strong>Mentors:</strong> TBD
64 {% endtrans %} 65 {% endtrans %}
65 </p> 66 </p>
66 </section> 67 </section>
67 68
68 <section> 69 <section>
69 <h4>Migrate gnunet-qr from Python 2.7 to C using libzbar</h4> 70 <h4>Migrate gnunet-qr from Python 2.7 to C using libzbar</h4>
70 <p> 71 <p>
71 {% trans %} 72 {% trans %}
72 Python 2.7 is reaching its end-of-life, and we want to get rid 73 Python 2.7 is reaching its end-of-life, and we want to get rid
73 of the dependency on Python. The existing gnunet-qr tool is a 74 of the dependency on Python. The existing gnunet-qr tool is a
74 rather simple wrapper around python-zbar, which itself wraps 75 rather simple wrapper around python-zbar, which itself wraps
75 libzbar. The goal of this project is to directly use libzbar 76 libzbar. The goal of this project is to directly use libzbar
76 to scan QR codes for GNUnet / the GNU Name System (see 77 to scan QR codes for GNUnet / the GNU Name System (see
77 also <a href="https://bugs.gnunet.org/view.php?id=5562">#5562</a>). 78 also <a href="https://bugs.gnunet.org/view.php?id=5562">#5562</a>).
78 <br> 79 <br>
79 <strong>Mentors:</strong> Christian Grothoff 80 <strong>Mentors:</strong> Christian Grothoff
80 {% endtrans %} 81 {% endtrans %}
81 </p> 82 </p>
82 </section> 83 </section>
83 84
84 <section> 85 <section>
85 <h4>re:claimID OpenID Connect performance improvements</h4> 86 <h4>re:claimID OpenID Connect performance improvements</h4>
86 <p> 87 <p>
87 {% trans %} 88 {% trans %}
88 reclaimID is a decentralized identity system build on top of the GNU 89 reclaimID is a decentralized identity system build on top of the GNU
89 Name System. 90 Name System.
90 Upon authorization, the user provides a requesting party (RP) such as a website 91 Upon authorization, the user provides a requesting party (RP) such as a website
91 with an authorization ticket (e.g. piggybacked in an OpenID authorization code). 92 with an authorization ticket (e.g. piggybacked in an OpenID authorization code).
92 The RP uses information contained in this ticket to 93 The RP uses information contained in this ticket to
93 <ol> 94 <ol>
94 <li> Retrieve the decryption key from GNS</li> 95 <li> Retrieve the decryption key from GNS</li>
95 <li> Retrieve the user attributes from GNS</li> 96 <li> Retrieve the user attributes from GNS</li>
96 </ol> 97 </ol>
97 The GNS lookups ensure that the RP receives up-to-date attributes and functional 98 The GNS lookups ensure that the RP receives up-to-date attributes and functional
98 decryption keys. However, in particular the RP-specific encryption key 99 decryption keys. However, in particular the RP-specific encryption key
99 resolution can be slow and even fail depending on the network topology. 100 resolution can be slow and even fail depending on the network topology.
100 We propose that in an initial exchange, in particular OpenID authorization code 101 We propose that in an initial exchange, in particular OpenID authorization code
101 flows, we try to incorporate key and maybe even an attribute set in the ticket 102 flows, we try to incorporate key and maybe even an attribute set in the ticket
102 exchange. 103 exchange.
103 104
104 In order to mitigate this issue, this project is meant to investigate and implement how... 105 In order to mitigate this issue, this project is meant to investigate and implement how...
105 <ol> 106 <ol>
106 <li> ... decryption keys can be added to an initial exchange in OpenID.</li> 107 <li> ... decryption keys can be added to an initial exchange in OpenID.</li>
107 <li> ... initial set(s) of attributes can be piggybacked in OpenID.</li> 108 <li> ... initial set(s) of attributes can be piggybacked in OpenID.</li>
108 </ol> 109 </ol>
109 <br/> 110 <br/>
110 <strong>Mentors:</strong> Martin Schanzenbach 111 <strong>Mentors:</strong> Martin Schanzenbach
111 {% endtrans %} 112 {% endtrans %}
112 </p> 113 </p>
113 </section> 114 </section>
114 115
115 <section> 116 <section>
116 <h4>re:claimID alternative GNS-based encryption</h4> 117 <h4>re:claimID alternative GNS-based encryption</h4>
117 <p> 118 <p>
118 {% trans %} 119 {% trans %}
119 re:claimID is a decentralized identity system build on top of the GNU 120 re:claimID is a decentralized identity system build on top of the GNU
120 Name System. 121 Name System.
121 The initial design and implementation of re:claimID includes an attribute-based 122 The initial design and implementation of re:claimID includes an attribute-based
122 encryption module in order to prevent unauthorized access to attributes in the 123 encryption module in order to prevent unauthorized access to attributes in the
123 name system. 124 name system.
124 Our motivation for re:claimID was for it to be name system agnostic, which 125 Our motivation for re:claimID was for it to be name system agnostic, which
125 means the design theoretically also works for other name systems such as 126 means the design theoretically also works for other name systems such as
126 namecoin. 127 namecoin.
127 Other name systems often do not have built-in mechanisms in order to do this. 128 Other name systems often do not have built-in mechanisms in order to do this.
128 Hence, we implemented an ABE access control layer. Our ABE implementation 129 Hence, we implemented an ABE access control layer. Our ABE implementation
129 requires two third party libraries: libpbc and libgabe. While we could merge 130 requires two third party libraries: libpbc and libgabe. While we could merge
130 libgabe into the gnunet service implementation of re:claimID, libpbc is a 131 libgabe into the gnunet service implementation of re:claimID, libpbc is a
131 rather large, third party library which lacks packaging in distributions and 132 rather large, third party library which lacks packaging in distributions and
132 for platforms. 133 for platforms.
133 On the other hand, GNS supports record data encryption using symmetric keys as 134 On the other hand, GNS supports record data encryption using symmetric keys as
134 labels. 135 labels.
135 If we make the access control layer of re:claimID more generic in order to 136 If we make the access control layer of re:claimID more generic in order to
136 support both ABE and GNS encryption, we could reduce the required depenencies. 137 support both ABE and GNS encryption, we could reduce the required depenencies.
137 This would result in gnunet packages to include re:claimID by default. 138 This would result in gnunet packages to include re:claimID by default.
138 139
139 In short, the goals are to... 140 In short, the goals are to...
140 <ol> 141 <ol>
141 <li> ... improve performance by reducing encryption overhead.</li> 142 <li> ... improve performance by reducing encryption overhead.</li>
142 <li> ... reduce dependencies.</li> 143 <li> ... reduce dependencies.</li>
143 </ol> 144 </ol>
144 <br/> 145 <br/>
145 <strong>Mentors:</strong> Martin Schanzenbach 146 <strong>Mentors:</strong> Martin Schanzenbach
146 {% endtrans %} 147 {% endtrans %}
147 </p> 148 </p>
148 </section> 149 </section>
149 150
150 <section> 151 <section>
151 <h4>Enable all networking applications to run over GNUnet out of the box</h4> 152 <h4>Enable all networking applications to run over GNUnet out of the box</h4>
152 <p> 153 <p>
153 {% trans %} 154 {% trans %}
154 One great problem of the current Internet is the lack of 155 One great problem of the current Internet is the lack of
155 disintermediation. When people want to talk they need a 156 disintermediation. When people want to talk they need a
156 chat service. When they want to share files they need a 157 chat service. When they want to share files they need a
157 file transfer service. Although GNUnet already possesses 158 file transfer service. Although GNUnet already possesses
158 quite advanced integration into Linux networking, a little 159 quite advanced integration into Linux networking, a little
159 extra work is needed for existing applications like irc, 160 extra work is needed for existing applications like irc,
160 www, ftp, rsh, nntpd to run over it in a peer-to-peer way, 161 www, ftp, rsh, nntpd to run over it in a peer-to-peer way,
161 simply by using a GNS hostname like friend.gnu. Once 162 simply by using a GNS hostname like friend.gnu. Once
162 people have added a person to their GNS they can 163 people have added a person to their GNS they can
163 immediately message, exchange files and suchlike directly, 164 immediately message, exchange files and suchlike directly,
164 with nothing but the GNUnet in the middle, using 165 with nothing but the GNUnet in the middle, using
165 applications that have been distributed with unix systems 166 applications that have been distributed with unix systems
166 ever since the 1980's. We can produce an OS distribution 167 ever since the 1980's. We can produce an OS distribution
167 where these things work out of the box with the nicknames 168 where these things work out of the box with the nicknames
168 of people instead of cloud services. For more information 169 of people instead of cloud services. For more information
169 and context, read 170 and context, read
170 {% endtrans %} 171 {% endtrans %}
171 <a href="https://bugs.gnunet.org/view.php?id=4625">bug id 4625</a>. 172 <a href="https://bugs.gnunet.org/view.php?id=4625">bug id 4625</a>.
172 </p> 173 </p>
173 <p> 174 <p>
174 {% trans %} 175 {% trans %}
175 <strong>Mentors:</strong> lynX &amp; dvn 176 <strong>Mentors:</strong> lynX &amp; dvn
176 {% endtrans %} 177 {% endtrans %}
177 </p> 178 </p>
178 </section> 179 </section>
179 <!-- Past projects: Previously proposed, but left unfinished. Inspiration for students. --> 180 <!-- Past projects: Previously proposed, but left unfinished. Inspiration for students. -->
180 <h2>{{ _("Past projects") }}<a name="past"></a></h2> 181 <h2><a name="past" class="subnav-anchor"></a>{{ _("Past projects") }}</h2>
181 <section> 182 <section>
182 <h4>Rust APIs for GNUnet services</h4> 183 <h4>Rust APIs for GNUnet services</h4>
183 <p> 184 <p>
184 {% trans %} 185 {% trans %}
185 There are a variety of GNUNet APIs that should be 186 There are a variety of GNUNet APIs that should be
186 exposed in the Rust wrappers. Implementing these will 187 exposed in the Rust wrappers. Implementing these will
187 require extending the port of GNUNet utils written by 188 require extending the port of GNUNet utils written by
188 Andrew Cann and Kelong Cong. 189 Andrew Cann and Kelong Cong.
189 {% endtrans %} 190 {% endtrans %}
190 </p> 191 </p>
191 <p> 192 <p>
192 {% trans %} 193 {% trans %}
193 As an introduction to the code base, we suggest that the 194 As an introduction to the code base, we suggest that the
194 student and Jeff Burdges together update the 195 student and Jeff Burdges together update the
195 asynchronous IO system from gjio to futures-rs or 196 asynchronous IO system from gjio to futures-rs or
196 another layer built upon it. Jeff Burdges is expected 197 another layer built upon it. Jeff Burdges is expected
197 to concurrently be implementing a GNUNet API for his own 198 to concurrently be implementing a GNUNet API for his own
198 mix network work. 199 mix network work.
199 {% endtrans %} 200 {% endtrans %}
200 </p> 201 </p>
201 <p> 202 <p>
202 {% trans %} 203 {% trans %}
203 <strong>Mentors:</strong> Jeff Burdges 204 <strong>Mentors:</strong> Jeff Burdges
204 {% endtrans %} 205 {% endtrans %}
205 </p> 206 </p>
206 <p> 207 <p>
207 {% trans %} 208 {% trans %}
208 Required Skills: Rust 209 Required Skills: Rust
209 {% endtrans %} 210 {% endtrans %}
210 </p> 211 </p>
211 <p> 212 <p>
212 {% trans %} 213 {% trans %}
213 Difficulty level: low 214 Difficulty level: low
214 {% endtrans %} 215 {% endtrans %}
215 </p> 216 </p>
216 </section> 217 </section>
217 <section> 218 <section>
218 <h4>Tor compatibility for GNUnet</h4> 219 <h4>Tor compatibility for GNUnet</h4>
219 <p> 220 <p>
220 {% trans %} 221 {% trans %}
221 Implement the AnycastExit spec to enable GNUnet clients 222 Implement the AnycastExit spec to enable GNUnet clients
222 to connect over Tor. 223 to connect over Tor.
223 {% endtrans %} 224 {% endtrans %}
224 </p> 225 </p>
225 <p> 226 <p>
226 {% trans %} 227 {% trans %}
227 <strong>Mentors:</strong> Jeff Burdges 228 <strong>Mentors:</strong> Jeff Burdges
228 {% endtrans %} 229 {% endtrans %}
229 </p> 230 </p>
230 <p> 231 <p>
231 {% trans %} 232 {% trans %}
232 Note: There was a Special TLDs spec to allow Tor to 233 Note: There was a Special TLDs spec to allow Tor to
233 resolve domain names using GNS over Tor too, but 234 resolve domain names using GNS over Tor too, but
234 currently that's on hold until folks think more about 235 currently that's on hold until folks think more about
235 how names should be moved around the local system. We're 236 how names should be moved around the local system. We're
236 calling this more collaborative approach NSS2 for now. 237 calling this more collaborative approach NSS2 for now.
237 {% endtrans %} 238 {% endtrans %}
238 </p> 239 </p>
239 <p> 240 <p>
240 {% trans %} 241 {% trans %}
241 Required Skills: C 242 Required Skills: C
242 {% endtrans %} 243 {% endtrans %}
243 </p> 244 </p>
244 <p> 245 <p>
245 {% trans %} 246 {% trans %}
246 Difficulty level: medium 247 Difficulty level: medium
247 {% endtrans %} 248 {% endtrans %}
248 </p> 249 </p>
249 </section> 250 </section>
250 <section> 251 <section>
251 <h4>RESTful GNUnet</h4> 252 <h4>RESTful GNUnet</h4>
252 <p> 253 <p>
253 {% trans %} 254 {% trans %}
254 Design and implementation 255 Design and implementation
255 of <a href="http://jsonapi.org/">REST APIs</a> that expose 256 of <a href="http://jsonapi.org/">REST APIs</a> that expose
256 the 257 the
257 <a href="https://gnunet.org/doxygen/modules.html">GNUnet API</a> 258 <a href="https://gnunet.org/doxygen/modules.html">GNUnet API</a>
258 so that easy, hands-on development is 259 so that easy, hands-on development is
259 possible. Also, browser-based UIs will be much easier to 260 possible. Also, browser-based UIs will be much easier to
260 create on top of REST APIs. 261 create on top of REST APIs.
261 {% endtrans %} 262 {% endtrans %}
262 </p> 263 </p>
263 <p> 264 <p>
264 {% trans %} 265 {% trans %}
265 <strong>Mentors:</strong> Martin Schanzenbach 266 <strong>Mentors:</strong> Martin Schanzenbach
266 {% endtrans %} 267 {% endtrans %}
267 </p> 268 </p>
268 </section> 269 </section>
269 <section> 270 <section>
270 <h4>Rust implementation of GNUnet utils</h4> 271 <h4>Rust implementation of GNUnet utils</h4>
271 <p> 272 <p>
272 {% trans %} 273 {% trans %}
273 Improve the Rust implementation of GNUnet utils, possibly 274 Improve the Rust implementation of GNUnet utils, possibly
274 including adding support for asynchronous IO using mio, or 275 including adding support for asynchronous IO using mio, or
275 perhaps a higher level asynchronous IO library built upon 276 perhaps a higher level asynchronous IO library built upon
276 it, such as rotor, mioco, eventual_io, or gj. 277 it, such as rotor, mioco, eventual_io, or gj.
277 {% endtrans %} 278 {% endtrans %}
278 </p> 279 </p>
279 <p> 280 <p>
280 {% trans %} 281 {% trans %}
281 <strong>Mentors:</strong> Jeff Burdges 282 <strong>Mentors:</strong> Jeff Burdges
282 {% endtrans %} 283 {% endtrans %}
283 </p> 284 </p>
284 </section> 285 </section>
285 <section> 286 <section>
286 <h4>Android compatibility for GNUnet</h4> 287 <h4>Android compatibility for GNUnet</h4>
287 <p> 288 <p>
288 {% trans %} 289 {% trans %}
289 Implement rudimentary Android compatibility for GNUnet, 290 Implement rudimentary Android compatibility for GNUnet,
290 in part by porting the GNUnet utils scheduler to act as 291 in part by porting the GNUnet utils scheduler to act as
291 a thin wrapper over libuv. 292 a thin wrapper over libuv.
292 {% endtrans %} 293 {% endtrans %}
293 </p> 294 </p>
294 <p> 295 <p>
295 {% trans %} 296 {% trans %}
296 <strong>Mentors:</strong> Jeff Burdges and Christian Grothoff 297 <strong>Mentors:</strong> Jeff Burdges and Christian Grothoff
297 {% endtrans %} 298 {% endtrans %}
298 </p> 299 </p>
299 </section> 300 </section>
300 <section> 301 <section>
301 <h4>Implementation of a replacement for PANDA</h4> 302 <h4>Implementation of a replacement for PANDA</h4>
302 <p> 303 <p>
303 {% trans %} 304 {% trans %}
304 Implementation of a replacement for PANDA (see Pond) 305 Implementation of a replacement for PANDA (see Pond)
305 with better security, and maybe integration with the GNU 306 with better security, and maybe integration with the GNU
306 Name System for key exchange. 307 Name System for key exchange.
307 {% endtrans %} 308 {% endtrans %}
308 </p> 309 </p>
309 <p> 310 <p>
310 {% trans %} 311 {% trans %}
311 <strong>Mentors:</strong> Jeff Burdges 312 <strong>Mentors:</strong> Jeff Burdges
312 {% endtrans %} 313 {% endtrans %}
313 </p> 314 </p>
314 <p> 315 <p>
315 {% trans %} 316 {% trans %}
316 Required Skills: Rust or C, crypto 317 Required Skills: Rust or C, crypto
317 {% endtrans %} 318 {% endtrans %}
318 </p> 319 </p>
319 <p> 320 <p>
320 {% trans %} 321 {% trans %}
321 Difficulty level: high 322 Difficulty level: high
322 {% endtrans %} 323 {% endtrans %}
323 </p> 324 </p>
324 </section> 325 </section>
325 <section> 326 <section>
326 <h4>secushare: Implement social networking features on top of pubsub channels</h4> 327 <h4>secushare: Implement social networking features on top of pubsub channels</h4>
327 <p> 328 <p>
328 {% trans %} 329 {% trans %}
329 Implement different place types and file sharing by 330 Implement different place types and file sharing by
330 creating a new place for the shared content. 331 creating a new place for the shared content.
331 {% endtrans %} 332 {% endtrans %}
332 </p> 333 </p>
333 <p> 334 <p>
334 {% trans %} 335 {% trans %}
335 Place types to be implemented: 336 Place types to be implemented:
336 {% endtrans %} 337 {% endtrans %}
337 </p> 338 </p>
338 {% trans %} 339 {% trans %}
339 <ul> 340 <ul>
340 <li>File: generic file with comments</li> 341 <li>File: generic file with comments</li>
341 <li>Image: display an image with comments referencing a region of the image</li> 342 <li>Image: display an image with comments referencing a region of the image</li>
342 <li>Sound: play a sound file with comments referencing a timestamp</li> 343 <li>Sound: play a sound file with comments referencing a timestamp</li>
343 <li>Directory/Album: pointers to File / Image / Sound places</li> 344 <li>Directory/Album: pointers to File / Image / Sound places</li>
344 <li>Event: with RSVP</li> 345 <li>Event: with RSVP</li>
345 <li>Survey: ask your social neighborhood questions in a structured form</li> 346 <li>Survey: ask your social neighborhood questions in a structured form</li>
346 </ul> 347 </ul>
347 {% endtrans %} 348 {% endtrans %}
348 <p> 349 <p>
349 {% trans %} 350 {% trans %}
350 Also provide the following UI functionality: 351 Also provide the following UI functionality:
351 {% endtrans %} 352 {% endtrans %}
352 </p> 353 </p>
353 {% trans %} 354 {% trans %}
354 <ul> 355 <ul>
355 <li>Fork existing channels, reorganize people into new chatrooms or channels.</li> 356 <li>Fork existing channels, reorganize people into new chatrooms or channels.</li>
356 <li>Share a post (edit and repost something elsewhere, on a fan page for example).</li> 357 <li>Share a post (edit and repost something elsewhere, on a fan page for example).</li>
357 <li>Edit a previously published post + offer edit history to readers.</li> 358 <li>Edit a previously published post + offer edit history to readers.</li>
358 <li>Control expiry of channel history.</li> 359 <li>Control expiry of channel history.</li>
359 </ul> 360 </ul>
360 {% endtrans %} 361 {% endtrans %}
361 <p> 362 <p>
362 {% trans %} 363 {% trans %}
363 See also <a href="http://secushare.org/features">http://secushare.org/features</a> 364 See also <a href="http://secushare.org/features">http://secushare.org/features</a>
364 {% endtrans %} 365 {% endtrans %}
365 </p> 366 </p>
366 <p> 367 <p>
367 {% trans %} 368 {% trans %}
368 <strong>Mentors:</strong> lynX 369 <strong>Mentors:</strong> lynX
369 {% endtrans %} 370 {% endtrans %}
370 </p> 371 </p>
371 <p> 372 <p>
372 {% trans %} 373 {% trans %}
373 Required Skills: C/C++ 374 Required Skills: C/C++
374 {% endtrans %} 375 {% endtrans %}
375 </p> 376 </p>
376 <p> 377 <p>
377 {% trans %} 378 {% trans %}
378 Difficulty level: high 379 Difficulty level: high
379 {% endtrans %} 380 {% endtrans %}
380 </p> 381 </p>
381 </section> 382 </section>
382 <section> 383 <section>
383 <h4>secushare: Implement a Social Graph API for contact adoption and more</h4> 384 <h4>secushare: Implement a Social Graph API for contact adoption and more</h4>
384 <p> 385 <p>
385 {% trans %} 386 {% trans %}
386 Implement aggregation of distributed state from 387 Implement aggregation of distributed state from
387 various channels 388 various channels
388 in order to provide for a powerful social graph API capable of 389 in order to provide for a powerful social graph API capable of
389 producing social network profiles, dashboards, 390 producing social network profiles, dashboards,
390 a calendar out of 391 a calendar out of
391 upcoming event invitations (if available), 392 upcoming event invitations (if available),
392 social search functionality 393 social search functionality
393 and most of all to make it easy for users to 394 and most of all to make it easy for users to
394 adopt cryptographic 395 adopt cryptographic
395 identities of their contacts/friends simply by finding 396 identities of their contacts/friends simply by finding
396 them in the 397 them in the
397 social graph of their 398 social graph of their
398 existing contacts ("This is Linda. You have 11 399 existing contacts ("This is Linda. You have 11
399 contacts in common with her. [ADD]"). 400 contacts in common with her. [ADD]").
400 {% endtrans %} 401 {% endtrans %}
401 </p> 402 </p>
402 <p> 403 <p>
403 {% trans %} 404 {% trans %}
404 Related to 405 Related to
405 <a href="http://secushare.org/rendezvous">secushare.org/rendezvous</a> 406 <a href="http://secushare.org/rendezvous">secushare.org/rendezvous</a>
406 {% endtrans %} 407 {% endtrans %}
407 </p> 408 </p>
408 <p> 409 <p>
409 {% trans %} 410 {% trans %}
410 <strong>Mentors:</strong> t3sserakt, lynX 411 <strong>Mentors:</strong> t3sserakt, lynX
411 {% endtrans %} 412 {% endtrans %}
412 </p> 413 </p>
413 <p> 414 <p>
414 {% trans %} 415 {% trans %}
415 Required Skills: C 416 Required Skills: C
416 {% endtrans %} 417 {% endtrans %}
417 </p> 418 </p>
418 <p> 419 <p>
419 {% trans %} 420 {% trans %}
420 Difficulty level: high 421 Difficulty level: high
421 {% endtrans %} 422 {% endtrans %}
422 </p> 423 </p>
423 </section> 424 </section>
424 <section> 425 <section>
425 <h4>secushare: Implement integration with tradition e-mail</h4> 426 <h4>secushare: Implement integration with tradition e-mail</h4>
426 {% trans %} 427 {% trans %}
427 <ul> 428 <ul>
428 <li> 429 <li>
429 Emulate IMAP/SMTP protocols as necessary to transform 430 Emulate IMAP/SMTP protocols as necessary to transform
430 traditional mail clients into secushare user 431 traditional mail clients into secushare user
431 interfaces. 432 interfaces.
432 </li> 433 </li>
433 <li> 434 <li>
434 Think of ways to map e-mail addresses to secushare 435 Think of ways to map e-mail addresses to secushare
435 identities. 436 identities.
436 </li> 437 </li>
437 <li> 438 <li>
438 Encode or translate various e-mail features into 439 Encode or translate various e-mail features into
439 secushare equivalents. 440 secushare equivalents.
440 </li> 441 </li>
441 <li> 442 <li>
442 Parts of secushare are currently written in Rust, 443 Parts of secushare are currently written in Rust,
443 therefore Rust is preferred for this task but it is 444 therefore Rust is preferred for this task but it is
444 not an requirement. 445 not an requirement.
445 </li> 446 </li>
446 </ul> 447 </ul>
447 {% endtrans %} 448 {% endtrans %}
448 <p> 449 <p>
449 {% trans %} 450 {% trans %}
450 <strong>Mentors:</strong> t3sserakt, lynX 451 <strong>Mentors:</strong> t3sserakt, lynX
451 {% endtrans %} 452 {% endtrans %}
452 </p> 453 </p>
453 <p> 454 <p>
454 {% trans %} 455 {% trans %}
455 Required Skills: C 456 Required Skills: C
456 {% endtrans %} 457 {% endtrans %}
457 </p> 458 </p>
458 <p> 459 <p>
459 {% trans %} 460 {% trans %}
460 Difficulty level: high 461 Difficulty level: high
461 {% endtrans %} 462 {% endtrans %}
462 </p> 463 </p>
463 </section> 464 </section>
464 <section> 465 <section>
465 <h4>GNUnet auction</h4> 466 <h4>GNUnet auction</h4>
466 <p> 467 <p>
467 {% trans %} 468 {% trans %}
468 Implementation of the GNUnet auction system described in 469 Implementation of the GNUnet auction system described in
469 Chapter 3 of 470 Chapter 3 of
470 <a href="https://gnunet.org/libbrand-thesis">this thesis</a>. 471 <a href="https://gnunet.org/libbrand-thesis">this thesis</a>.
471 Specific tasks are adding smart 472 Specific tasks are adding smart
472 contract creation and round time enforcement to 473 contract creation and round time enforcement to
473 libbrandt as well as creating the 474 libbrandt as well as creating the
474 GNUnet auction service, library and the three user interface 475 GNUnet auction service, library and the three user interface
475 programs create, info and join. 476 programs create, info and join.
476 {% endtrans %} 477 {% endtrans %}
477 </p> 478 </p>
478 <p> 479 <p>
479 {% trans %} 480 {% trans %}
480 <strong>Mentors:</strong> mate, cg 481 <strong>Mentors:</strong> mate, cg
481 {% endtrans %} 482 {% endtrans %}
482 </p> 483 </p>
483 <p> 484 <p>
484 {% trans %} 485 {% trans %}
485 Required Skills: C 486 Required Skills: C
486 {% endtrans %} 487 {% endtrans %}
487 </p> 488 </p>
488 <p> 489 <p>
489 {% trans %} 490 {% trans %}
490 Difficulty level: medium 491 Difficulty level: medium
491 {% endtrans %} 492 {% endtrans %}
492 </p> 493 </p>
493 </section> 494 </section>
494 <section> 495 <section>
495 <h4>Implementation of additional transports</h4> 496 <h4>Implementation of additional transports</h4>
496 <p> 497 <p>
497 {% trans %} 498 {% trans %}
498 Implementation of additional transports to make GNUnet communication 499 Implementation of additional transports to make GNUnet communication
499 more robust in the presence of problematic networks: 500 more robust in the presence of problematic networks:
500 GNUnet-over-SMTP, GNUnet-over-DNS 501 GNUnet-over-SMTP, GNUnet-over-DNS
501 {% endtrans %} 502 {% endtrans %}
502 </p> 503 </p>
503 <p> 504 <p>
504 {% trans %} 505 {% trans %}
505 <strong>Mentors:</strong> Matthias Wachs 506 <strong>Mentors:</strong> Matthias Wachs
506 {% endtrans %} 507 {% endtrans %}
507 </p> 508 </p>
508 </section> 509 </section>
509 <section> 510 <section>
510 <h4>Implementation of ALG-based NAT traversal methods</h4> 511 <h4>Implementation of ALG-based NAT traversal methods</h4>
511 <p> 512 <p>
512 {% trans %} 513 {% trans %}
513 Implementation of ALG-based NAT traversal methods (FTP/SIP-based hole 514 Implementation of ALG-based NAT traversal methods (FTP/SIP-based hole
514 punching, better STUN support) 515 punching, better STUN support)
515 {% endtrans %} 516 {% endtrans %}
516 </p> 517 </p>
517 <p> 518 <p>
518 {% trans %} 519 {% trans %}
519 <strong>Mentors:</strong> Matthias Wachs 520 <strong>Mentors:</strong> Matthias Wachs
520 {% endtrans %} 521 {% endtrans %}
521 </p> 522 </p>
522 </section> 523 </section>
523 <section> 524 <section>
524 <h4>Integration of the GNU Name System with GnuPG</h4> 525 <h4>Integration of the GNU Name System with GnuPG</h4>
525 <p> 526 <p>
526 {% trans %} 527 {% trans %}
527 <strong>Mentors:</strong> Matthias Wachs, Christian Grothoff, Jeff Burdges 528 <strong>Mentors:</strong> Matthias Wachs, Christian Grothoff, Jeff Burdges
528 {% endtrans %} 529 {% endtrans %}
529 </p> 530 </p>
530 </section> 531 </section>
531 <section> 532 <section>
532 <h4>libaboss improvements</h4> 533 <h4>libaboss improvements</h4>
533 <p> 534 <p>
534 {% trans %} 535 {% trans %}
535 Improving libaboss to make computation on shared secrets (including 536 Improving libaboss to make computation on shared secrets (including
536 repeated multiplication) based 537 repeated multiplication) based
537 on <a href="https://dl.acm.org/citation.cfm?doid=62212.62213">Ben-Or 538 on <a href="https://dl.acm.org/citation.cfm?doid=62212.62213">Ben-Or
538 et al.</a> if possible. This in particular means moving libaboss to 539 et al.</a> if possible. This in particular means moving libaboss to
539 bignums (gcry_mpi). 540 bignums (gcry_mpi).
540 {% endtrans %} 541 {% endtrans %}
541 </p> 542 </p>
542 <p><strong>Mentors:</strong> Krista Grothoff, Jeff Burdges</p> 543 <p><strong>Mentors:</strong> Krista Grothoff, Jeff Burdges</p>
543 </section> 544 </section>
544 <section> 545 <section>
545 <h4>Implementation of a replacement for PANDA</h4> 546 <h4>Implementation of a replacement for PANDA</h4>
546 <p> 547 <p>
547 {% trans %} 548 {% trans %}
548 Implementation of a replacement for PANDA (see Pond) with better 549 Implementation of a replacement for PANDA (see Pond) with better
549 security, and maybe integration with the GNU Name System for key 550 security, and maybe integration with the GNU Name System for key
550 exchange. 551 exchange.
551 {% endtrans %} 552 {% endtrans %}
552 </p> 553 </p>
553 <p> 554 <p>
554 {% trans %} 555 {% trans %}
555 <strong>Mentors:</strong> Jeff Burdges 556 <strong>Mentors:</strong> Jeff Burdges
556 {% endtrans %} 557 {% endtrans %}
557 </p> 558 </p>
558 </section> 559 </section>
559 <section> 560 <section>
560 <h4>Supporting GNU Guix's package distribution</h4> 561 <h4>Supporting GNU Guix's package distribution</h4>
561 <p> 562 <p>
562 {% trans %} 563 {% trans %}
563 Please refer to the description for this project listed under 564 Please refer to the description for this project listed under
564 GNU Guix project ideas. 565 GNU Guix project ideas.
565 {% endtrans %} 566 {% endtrans %}
566 </p> 567 </p>
567 </section> 568 </section>
568 <h2>{{ _("Finished projects") }}<a name="finished"></a></h2> 569 <h2><a name="finished" class="subnav-anchor"></a>{{ _("Finished projects") }}</h2>
569 <!-- Commentary: Finished projects, descriptions and Links to write-ups about them. --> 570 <!-- Commentary: Finished projects, descriptions and Links to write-ups about them. -->
570 <h3>2018</h3> 571 <h3>2018</h3>
571 <section> 572 <section>
572 <h4>GNUnet Web-based User Interface</h4> 573 <h4>GNUnet Web-based User Interface</h4>
573 <p> 574 <p>
574 {% trans %} 575 {% trans %}
575 Implementation of a Web-based UI for GNUnet similar to 576 Implementation of a Web-based UI for GNUnet similar to
576 GNUnet-Gtk with a yet to be determined framework such as 577 GNUnet-Gtk with a yet to be determined framework such as
577 Angular2. This includes the design and implementation of 578 Angular2. This includes the design and implementation of
578 not yet existing <a href="http://jsonapi.org/">REST APIs</a> 579 not yet existing <a href="http://jsonapi.org/">REST APIs</a>
579 that expose the 580 that expose the
580 <a href="https://gnunet.org/doxygen/modules.html">GNUnet API</a>. 581 <a href="https://gnunet.org/doxygen/modules.html">GNUnet API</a>.
581 {% endtrans %} 582 {% endtrans %}
582 </p> 583 </p>
583 <p> 584 <p>
584 {% trans %} 585 {% trans %}
585 <strong>Mentors:</strong> Martin Schanzenbach 586 <strong>Mentors:</strong> Martin Schanzenbach
586 {% endtrans %} 587 {% endtrans %}
587 </p> 588 </p>
588 <p> 589 <p>
589 {% trans %} 590 {% trans %}
590 Required Skills: C, JavaScript, CSS 591 Required Skills: C, JavaScript, CSS
591 {% endtrans %} 592 {% endtrans %}
592 </p> 593 </p>
593 <p> 594 <p>
594 {% trans %} 595 {% trans %}
595 Difficulty level: medium 596 Difficulty level: medium
596 {% endtrans %} 597 {% endtrans %}
597 </p> 598 </p>
598 <p> 599 <p>
599 {% trans %} 600 {% trans %}
600 Report: <a href="gsoc-2018-gnunet-webui.html">GSoC 2018: GNUnet WebUI</a> 601 Report: <a href="gsoc-2018-gnunet-webui.html">GSoC 2018: GNUnet WebUI</a>
601 {% endtrans %} 602 {% endtrans %}
602 </p> 603 </p>
603 </section> 604 </section>
604 605
605 </div> 606 </div>
606 </div> 607 </div>