diff options
Diffstat (limited to 'template/gsoc.html.j2')
-rw-r--r-- | template/gsoc.html.j2 | 1157 |
1 files changed, 579 insertions, 578 deletions
diff --git a/template/gsoc.html.j2 b/template/gsoc.html.j2 index 1f5d4f0b..5104e516 100644 --- a/template/gsoc.html.j2 +++ b/template/gsoc.html.j2 | |||
@@ -6,17 +6,6 @@ | |||
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 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 --> |
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"> |
@@ -27,580 +16,592 @@ | |||
27 | </div> | 16 | </div> |
28 | <div class="col"> | 17 | <div class="col"> |
29 | 18 | ||
30 | <h2><a name="current" class="subnav-anchor"></a>{{ _("Current projects (2019)") }}</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 & dvn | 176 | <strong>Mentors:</strong> lynX & 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><a name="past" class="subnav-anchor"></a>{{ _("Past projects") }}</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><a name="finished" class="subnav-anchor"></a>{{ _("Finished projects") }}</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> |