aboutsummaryrefslogtreecommitdiff
path: root/template
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-08-13 21:13:19 +0200
committerChristian Grothoff <christian@grothoff.org>2019-08-13 21:13:19 +0200
commit08724a4492d141e3cab8e10aa7cc6efbdb06efb1 (patch)
tree1eaad6014e25ff237fe336e68d5ebb966d88c80b /template
parent9f6e459344520eac4c48dac064b38165b1f44844 (diff)
parentb7e7a95d215eb4301a35331f610b02f9ed58b4cf (diff)
downloadwww-08724a4492d141e3cab8e10aa7cc6efbdb06efb1.tar.gz
www-08724a4492d141e3cab8e10aa7cc6efbdb06efb1.zip
resolve conflict
Diffstat (limited to 'template')
-rw-r--r--template/about.html.j2105
-rw-r--r--template/architecture.html.j2150
-rw-r--r--template/contact.html.j299
-rw-r--r--template/copyright.html.j27
-rw-r--r--template/engage.html.j2206
-rw-r--r--template/ev.html.j2118
-rw-r--r--template/glossary.html.j2211
-rw-r--r--template/gnurl.html.j228
-rw-r--r--template/gsoc.html.j21170
-rw-r--r--template/index.html.j2104
-rw-r--r--template/install-on-archpi.html.j2130
-rw-r--r--template/install-on-debian9.html.j2 (renamed from template/tutorial-debian9.html.j2)288
-rw-r--r--template/install-on-macos.html.j2 (renamed from template/tutorial-macos.html.j2)27
-rw-r--r--template/install-on-netbsd.html.j2 (renamed from template/tutorial-netbsd.html.j2)22
-rw-r--r--template/install-on-ubuntu1804.html.j2 (renamed from template/tutorial-ubuntu1804.html.j2)294
-rw-r--r--template/install.html.j260
-rw-r--r--template/news.html.j2.inc5
-rw-r--r--template/old-news.html.j21
-rw-r--r--template/team.html.j288
-rw-r--r--template/tutorial-archpi.html.j2163
-rw-r--r--template/use.html.j2622
-rw-r--r--template/video.html.j2416
22 files changed, 2253 insertions, 2061 deletions
diff --git a/template/about.html.j2 b/template/about.html.j2
index b3780e52..409fe7a5 100644
--- a/template/about.html.j2
+++ b/template/about.html.j2
@@ -1,9 +1,14 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<div class="container"> 3<article class="container">
4 <article> 4
5 <section> 5 <header>
6 <h3>{{ _("About GNUnet") }}</h3> 6 <h1>{{ _("About GNUnet") }}</h1>
7 </header>
8
9 <div class="row">
10 <div class="col">
11 <h3>{{ _("What is GNUnet?") }}</h3>
7 <p> 12 <p>
8 {% trans %} 13 {% trans %}
9 GNUnet is an alternative network stack for building secure, 14 GNUnet is an alternative network stack for building secure,
@@ -13,7 +18,8 @@
13 include all kinds of basic protocol components and applications 18 include all kinds of basic protocol components and applications
14 towards the creation of a GNU internet. 19 towards the creation of a GNU internet.
15 {% endtrans %} 20 {% endtrans %}
16 <br> 21 </p>
22 <p>
17 {% trans %} 23 {% trans %}
18 Today, the actual use and thus the social requirements for a global 24 Today, the actual use and thus the social requirements for a global
19 network differs widely from those goals of 1970. While the Internet 25 network differs widely from those goals of 1970. While the Internet
@@ -21,29 +27,32 @@
21 operated by a command hierarchy and when necessary isolated from the 27 operated by a command hierarchy and when necessary isolated from the
22 rest of the world, the situation is less tenable for civil society. 28 rest of the world, the situation is less tenable for civil society.
23 {% endtrans %} 29 {% endtrans %}
24 <br> 30 </p>
31 <p>
25 {% trans %} 32 {% trans %}
26 Due to fundamental Internet design choices, Internet traffic can be 33 Due to fundamental Internet design choices, Internet traffic can be
27 misdirected, intercepted, censored and manipulated by hostile routers 34 misdirected, intercepted, censored and manipulated by hostile routers
28 on the network. And indeed, the modern Internet has evolved exactly 35 on the network. And indeed, the modern Internet has evolved exactly
29 to the point where, as Matthew Green put it, ``the network is 36 to the point where, as Matthew Green put it,
30 hostile''. 37 <a href="https://blog.cryptographyengineering.com/2015/08/16/the-network-is-hostile/">"the network is hostile"</a>.
31 {% endtrans %} 38 {% endtrans %}
32 <br> 39 </p>
40 <p>
33 {% trans %} 41 {% trans %}
34 We believe liberal societies need a network architecture that uses the 42 We believe liberal societies need a network architecture that uses the
35 anti-authoritarian decentralized peer-to-peer paradigm and 43 anti-authoritarian decentralized peer-to-peer paradigm and
36 privacy-preserving cryptographic protocols. The goal of the GNUnet 44 privacy-preserving cryptographic protocols. The goal of the GNUnet
37 project is to provide a Free Software realization of this ideal. 45 project is to provide a Free Software realization of this ideal.
38 {% endtrans %} 46 {% endtrans %}
39 <br> 47 </p>
40 <br> 48 <p>
41 {% trans %} 49 {% trans %}
42 Specifically, GNUnet tries to follow the following design principles, 50 Specifically, GNUnet tries to follow the following design principles,
43 in order of importance: 51 in order of importance:
44 {% endtrans %} 52 {% endtrans %}
45 <ol> 53 </p>
46 <li> 54 <ol>
55 <li>
47 {% trans %} 56 {% trans %}
48 GNUnet must be implemented as <a href="https://www.gnu.org/philosophy/free-sw.html">Free Software</a>. 57 GNUnet must be implemented as <a href="https://www.gnu.org/philosophy/free-sw.html">Free Software</a>.
49 {% endtrans %} 58 {% endtrans %}
@@ -63,38 +72,64 @@
63 {% trans %} 72 {% trans %}
64 To get know and learn more, please check our <a href="https://docs.gnunet.org/handbook/gnunet.html">handbook</a>, especially the <a href="https://docs.gnunet.org/handbook/gnunet.html#Key-Concepts">chapter on "Key Concepts"</a>, explaining the fundamental concepts of GNUnet: 73 To get know and learn more, please check our <a href="https://docs.gnunet.org/handbook/gnunet.html">handbook</a>, especially the <a href="https://docs.gnunet.org/handbook/gnunet.html#Key-Concepts">chapter on "Key Concepts"</a>, explaining the fundamental concepts of GNUnet:
65 <ul> 74 <ul>
66 <li><a href="https://docs.gnunet.org/#Authentication">Authentication</a></li> 75 <li><a href="https://docs.gnunet.org/handbook/gnunet.html#Authentication">Authentication</a></li>
67 <li><a href="https://docs.gnunet.org/#Accounting-to-Encourage-Resource-Sharing">Accounting to Encourage Resource Sharing</a></li> 76 <li><a href="https://docs.gnunet.org/handbook/gnunet.html#Accounting-to-Encourage-Resource-Sharing">Accounting to Encourage Resource Sharing</a></li>
68 <li><a href="https://docs.gnunet.org/#Confidentiality">Confidentiality</a></li> 77 <li><a href="https://docs.gnunet.org/handbook/gnunet.html#Confidentiality">Confidentiality</a></li>
69 <li><a href="https://docs.gnunet.org/#Anonymity">Anonymity</a></li> 78 <li><a href="https://docs.gnunet.org/handbook/gnunet.html#Anonymity">Anonymity</a></li>
70 <li><a href="https://docs.gnunet.org/#Deniability">Deniability</a></li> 79 <li><a href="https://docs.gnunet.org/handbook/gnunet.html#Deniability">Deniability</a></li>
71 <li><a href="https://docs.gnunet.org/#Peer-Identities">Peer Identities</a></li> 80 <li><a href="https://docs.gnunet.org/handbook/gnunet.html#Peer-Identities">Peer Identities</a></li>
72 <li><a href="https://docs.gnunet.org/#Zones-in-the-GNU-Name-System-_0028GNS-Zones_0029">Zones in the GNU Name System (GNS Zones)</a></li> 81 <li><a href="https://docs.gnunet.org/handbook/gnunet.html#Zones-in-the-GNU-Name-System-_0028GNS-Zones_0029">Zones in the GNU Name System (GNS Zones)</a></li>
73 <li><a href="https://docs.gnunet.org/#Egos">Egos</a></li> 82 <li><a href="https://docs.gnunet.org/handbook/gnunet.html#Egos">Egos</a></li>
74 </ul> 83 </ul>
75 {% endtrans %} 84 {% endtrans %}
85 </p>
86 </div>
87 <div class="col">
88 <h3>{{ _("More Resources") }}</h3>
89 <p>
76 {% trans %} 90 {% trans %}
77 There are much more ressources to learn about GNUnet besides the <a href="https://docs.gnunet.org/handbook/gnunet.html">main handbook</a>, such as the <a href="https://bib.gnunet.org/">bibliography</a>, lots of <a href="https://gnunet.org/en/video.html">videos</a> or a <a href="https://gnunet.org/en/glossary.html">glossary</a>. You are very welcome to <a href="https://gnunet.org/en/engage.html">get engaged into the conversation</a>, <a href="https://gnunet.org/en/tutorial.html">install GNUnet</a>, <a href="https://gnunet.org/en/use.html">use it</a> and <a href="https://gnunet.org/en/contribute.html">contribute</a>. 91 There are many more resources to learn about GNUnet besides the <a href="https://docs.gnunet.org/handbook/gnunet.html">handbook</a>, such as the <a href="https://bib.gnunet.org/">bibliography</a> with papers covering the various layers, many <a href="https://gnunet.org/en/video.html">videos</a> or a brief <a href="https://gnunet.org/en/glossary.html">glossary</a>.
92 {% endtrans %}
93 </p>
94 <p>
95 {% trans %}
96 You are most welcome to <a href="engage.html">get engaged into the conversation</a>, <a href="install.html">install GNUnet</a>, <a href="use.html">use it</a> and <a href="contribute.html">contribute</a> in various ways.
97 {% endtrans %}
98 </p>
99 <p>
100 {% trans %}
101 Please be aware that this project is (despite of it's age) still in an early alpha stage when it comes to software &#8211; its not an easy task to rewrite the whole Internet!
78 {% endtrans %} 102 {% endtrans %}
79 <br> 103 <br>
80 </p> 104 </p>
81 <h4>{{ _("Current funding") }}</h3> 105 <h3>{{ _("Current funding") }}</h3>
82 <p> 106 <p>
83 {% trans %} 107 <ul>
84 We currently do not have any grants. All work is done by volunteers. 108 <li>
85 {% endtrans %} 109 <p>
110 {% trans %}
111 We're receiving funding from NLnet's Next Generation Internet
112 funding line to document and implement
113 the GNU Name System protocol in a way suitable for the
114 IETF standardization process.
115 {% endtrans %}
116 <br>
117 <a href="https://nlnet.nl/">NLnet Foundation</a><br>
118 <img src="{{ url('static/images/nlnet_logo.gif') }}" alt="NLnet logo">
119 </p>
120 </li>
121 </ul>
86 <br> 122 <br>
87 {% trans %} 123 {% trans %}
88 We are grateful for free hosting offered by the following organizations: 124 We are grateful for free hosting offered by the following organizations:
89 {% endtrans %} 125 {% endtrans %}
90 <ul> 126 <ul>
91 <li><a href="https://www.tum.de/">Technische Universit&auml;t M&uuml;nchen</a></li> 127 <li><a href="https://www.tum.de/">Technische Universit&auml;t M&uuml;nchen</a></li>
92 <li><a href="https://www.inria.fr/">Inria</a></li>
93 <li><a href="https://www.bfh.ch/">Berner Fachhochschule</a></li> 128 <li><a href="https://www.bfh.ch/">Berner Fachhochschule</a></li>
94 <li><a href="https://www.gnu.org/">The GNU Project</a></li> 129 <li><a href="https://www.gnu.org/">The GNU Project</a></li>
95 </ul> 130 </ul>
96 </p> 131 </p>
97 <h4>{{ _("Past funding") }}</h3> 132 <h3>{{ _("Past funding") }}</h3>
98 <p> 133 <p>
99 {% trans %} 134 {% trans %}
100 We are grateful for past funding from the following organizations: 135 We are grateful for past funding from the following organizations:
@@ -102,7 +137,7 @@
102 <ul> 137 <ul>
103 <li> 138 <li>
104 <p> 139 <p>
105 <a href="https://renewablefreedom.org/">Renewable Freedom Foundation</a><br> 140 <a href="https://renewablefreedom.org/">Renewable Freedom Foundation / Stiftung Erneuerbare Freiheit</a><br>
106 <img src="{{ url('static/images/rff_logo.png') }}" alt="RFF logo"> 141 <img src="{{ url('static/images/rff_logo.png') }}" alt="RFF logo">
107 </p> 142 </p>
108 </li> 143 </li>
@@ -126,7 +161,7 @@
126 </li> 161 </li>
127 </ul> 162 </ul>
128 </p> 163 </p>
129 </section> 164 </div><!-- END:col -->
130 </article> 165 </div><!-- END:row -->
131</div> 166</div><!-- END:container -->
132{% endblock body_content %} 167{% endblock body_content %}
diff --git a/template/architecture.html.j2 b/template/architecture.html.j2
index 312bda72..e7d62c08 100644
--- a/template/architecture.html.j2
+++ b/template/architecture.html.j2
@@ -1,51 +1,117 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<!-- Jumbotron --> 3<article class="container">
4<div class="container-fluid"> 4
5 <div class="container text-center"> 5 <header>
6 <h1>{{ _("GNUnet System Architecture") }}</h1> 6 <h1>{{ _("GNUnet System Architecture") }}</h1>
7 <h2><i>This page is a work-in-progress</i></h2> 7 </header>
8 <p> 8
9 </p> 9 <div class="container">
10 </div> 10 <div class="row">
11</div> 11 <div class="col-10">
12<!-- TODO: This image is too big, it should scale dynamically --> 12 <img class="img-fluid border rounded" src="../static/images/gnunet-arch-full.svg">
13<div class="container-wide"> 13 </div>
14 <div class="text-center"> 14 <div class="col-2 d-none d-sm-block">
15 <img class="img-fluid" style="width:auto" style="border:1px solid #222" src="../static/images/gnunet-arch-full.svg"> 15 <h4>{{ _("Legend") }}:</h4>
16 <dl>
17 <dt>house</dt>
18 <dd>application</dd>
19 </dl>
20 <dl>
21 <dt>circle</dt>
22 <dd>application</dd>
23 </dl>
24 <dl>
25 <dt>box</dt>
26 <dd>daemon</dd>
27 </dl>
28 <dl>
29 <dt>diamond</dt>
30 <dd>library</dd>
31 </dl>
32 <dl>
33 <dt>blackline</dt>
34 <dd>dependency</dd>
35 </dl>
36 <dl>
37 <dt>blue line</dt>
38 <dd>extension via plugin</dd>
39 </dl>
40 <dl>
41 <dt>red line</dt>
42 <dd>possibly useful</dd>
43 </dl>
44 <dl>
45 <dt>dashed</dt>
46 <dd>in planning</dd>
47 </dl>
48 </div>
49 </div>
16 </div> 50 </div>
17</div>
18<div class="container">
19 <div class="row">
20 <div class="col-lg-6">
21 <h2>{{ _("Foundations") }}</h2>
22 <p>
23 {% trans %}
24 The foundations of GNUnet are a distributed hash
25 table (R5N), an SCTP-like end-to-end encrypted
26 messaging layer (CADET), a public key infrastructure
27 (GNS) and a pluggable transport system (TRANSPORT).<br>
28 Using public keys for addresses
29 and self-organized decentralized routing algorithms,
30 these subsystems replace the traditional TCP/IP stack.
31 {% endtrans %}
32 </p>
33 51
52 <div class="container">
53 <div class="row">
54 <div class="col-md">
55 <h2>{{ _("Foundations") }}</h2>
56 <p>
57 {% trans %}
58 The foundations of GNUnet are a distributed hash
59 table (R5N), an SCTP-like end-to-end encrypted
60 messaging layer (CADET), a public key infrastructure
61 (GNS) and a pluggable transport system (TRANSPORT).<br>
62 Using public keys for addresses
63 and self-organized decentralized routing algorithms,
64 these subsystems replace the traditional TCP/IP stack.
65 {% endtrans %}
66 </p>
67
68 </div>
69 <div class="col-md">
70 <h2>{{ _("Security") }}</h2>
71
72 <p>
73 {% trans %}
74 GNUnet is implemented using a multi-process architecture.
75 Each subsystem runs as a separate process, providing
76 fault-isolation and enabling tight permissions to be
77 granted to each subsystem. Naturally, the
78 implementation is a <a href="https://www.gnu.org/">GNU</a>
79 package, and will always remain free software.
80 {% endtrans %}
81 </p>
82 </div>
34 </div> 83 </div>
35 <div class="col-lg-6"> 84
36 <h2>{{ _("Security") }}</h2> 85 <div class="row">
37 86 <div class="col-md">
38 <p> 87 <h2>{{ _("System architecture") }}</h2>
39 {% trans %} 88 <p>
40 GNUnet is implemented using a multi-process architecture. 89 Read more about the system architecure in the respective section of our <a href="https://docs.gnunet.org/handbook/gnunet.html#System-Architecture" target="_blank">handbook</a>.
41 Each subsystem runs as a separate process, providing 90 </p>
42 fault-isolation and enabling tight permissions to be 91 </div>
43 granted to each subsystem. Naturally, the 92 <div class="col-md">
44 implementation is a <a href="https://www.gnu.org/">GNU</a> 93 <h2>{{ _("Subsystems") }}</h2>
45 package, and will always remain free software. 94 <p>
46 {% endtrans %} 95 Read more about the subsystems (or GNUnet services) in the respective section of our <a href="https://docs.gnunet.org/handbook/gnunet.html#Code-overview" target="_blank">handbook</a>.
47 </p> 96 </p>
97 </div>
98 </div>
99
100 <div class="row">
101 <div class="col-md">
102 <h2>{{ _("libgnunetutil") }}</h2>
103 <p>
104 libgnunetutil is the fundamental library that all GNUnet code builds upon. Ideally, this library should contain most of the platform dependent code (except for user interfaces and really special needs that only few applications have). Read <a href="https://docs.gnunet.org/handbook/gnunet.html#libgnunetutil">more</a>.
105 </p>
106 </div>
107 <div class="col-md">
108 <h2>{{ _("APIs") }}</h2>
109 <p>
110 GNUnet offers variaty of APIs for <a href="https://docs.gnunet.org/handbook/gnunet.html#Interprocess-communication-API-_0028IPC_0029" target="_blank">accessing services</a> (using IPC), <a href="https://docs.gnunet.org/handbook/gnunet.html#Service-API">running services</a>, <a href="https://docs.gnunet.org/handbook/gnunet.html#Message-Queue-API">message queues</a>, or <a href="https://docs.gnunet.org/handbook/gnunet.html#Cryptography-API" target="_blank">cryptographic operations</a>.
111 </p>
112 </div>
48 </div> 113 </div>
49 </div> 114 </div>
50</div> 115
116</article>
51{% endblock body_content %} 117{% endblock body_content %}
diff --git a/template/contact.html.j2 b/template/contact.html.j2
index aa74fcc5..adf5691d 100644
--- a/template/contact.html.j2
+++ b/template/contact.html.j2
@@ -1,61 +1,64 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<article class="container">
3 4
4<div class="jumbotron"> 5 <header>
5 <div class="container text-center">
6 <h1>{{ _("Contact information") }}</h1> 6 <h1>{{ _("Contact information") }}</h1>
7 </header>
8
9 <div class="row">
10 <div class="col-lg-6">
11 <h2>{{ _("The mailing list") }}</h2>
12 <p>
13 {% trans %}
14 An archived, public mailing list for GNUnet is
15 hosted at
16 <a href="https://lists.gnu.org/mailman/listinfo/gnunet-developers">https://lists.gnu.org/mailman/listinfo/gnunet-developers</a>. You can send messages to the list
17 at <a href="mailto:gnunet-developers@gnu.org">gnunet-developers@gnu.org</a>.
18 {% endtrans %}
19 </p>
20 </div>
21
22 <div class="col-lg-6">
23 <h2>{{ _("The IRC channel") }}</h2>
24 <p>
25 {% trans %}
26 <tt>#gnunet</tt> is reachable via
27 <a href="https://freenode.net">irc.freenode.net</a>.
28 There is also an
29 <a href="https://old.gnunet.org/bot/log/gnunet">archive</a>
30 available (currently unavailable, we are working on restoring access to it).
31 {% endtrans %}
32 </p>
33 </div>
7 </div> 34 </div>
8</div>
9 35
10<div class="container"> 36 <div class="row">
11<div class="row"> 37 <div class="col-lg-6">
12 <div class="col-lg-6"> 38 <h2>{{ _("Contacting individuals") }}</h2>
13 <h2>{{ _("The mailing list") }}</h2>
14 <p> 39 <p>
15 {% trans %} 40 {% trans %}
16 An archived, public mailing list for GNUnet is 41 GNUnet developers are generally reachable at
17 hosted at 42 either <tt>PSEUDONYM@gnunet.org</tt> or
18 <a href="https://lists.gnu.org/mailman/listinfo/gnunet-developers">https://lists.gnu.org/mailman/listinfo/gnunet-developers</a>. You can send messages to the list 43 <tt>LASTNAME@gnunet.org</tt>. Most of us
19 at <a href="mailto:gnunet-developers@gnu.org">gnunet-developers@gnu.org</a>. 44 support receiving GnuPG encrypted Emails.
20 {% endtrans %} 45 {% endtrans %}
21 </p> 46 </p>
22 </div> 47 </div>
23 48
24 <div class="col-lg-6"> 49 <div class="col-lg-6">
25 <h2>{{ _("The IRC channel") }}</h2> 50 <h2>{{ _("Reporting bugs") }}</h2>
26 <p> 51 <p>
27 {% trans %} 52 {% trans %}
28 #gnunet is reachable via irc.freenode.net. There is also an <a href="https://old.gnunet.org/bot/log/gnunet">archive</a> availabe. 53 We track open feature requests and bugs for projects
29 {% endtrans %} 54 within GNUnet in our
55 <a href="https://bugs.gnunet.org/">Bug tracker</a>.
56 You can also report bugs or feature requests to the
57 <a href="https://lists.gnu.org/mailman/listinfo/bug-gnunet">bug-gnunet</a>
58 mailing list. The mailinglist requires no subscription.
59 {% endtrans %}
30 </p> 60 </p>
61 </div>
31 </div> 62 </div>
32</div> 63</article>
33
34<div class="row">
35 <div class="col-lg-6">
36 <h2>{{ _("Contacting individuals") }}</h2>
37 <p>
38 {% trans %}
39 GNUnet developers are generally reachable at
40 <tt>PSEUDONYM@gnunet.org</tt>. Most of us
41 support receiving GnuPG encrypted Emails.
42 {% endtrans %}
43 </p>
44 </div>
45
46 <div class="col-lg-6">
47 <h2>{{ _("Reporting bugs") }}</h2>
48 <p>
49 {% trans %}
50 We track open feature requests and bugs for projects
51 within GNUnet in our
52 <a href="https://bugs.gnunet.org/">Bug tracker</a>.
53 You can also report bugs or feature requests to the
54 <a href="https://lists.gnu.org/mailman/listinfo/bug-gnunet">bug-gnunet</a>
55 mailing list. The mailinglist requires no subscription.
56 {% endtrans %}
57 </p>
58 </div>
59</div>
60</div>
61{% endblock body_content %} 64{% endblock body_content %}
diff --git a/template/copyright.html.j2 b/template/copyright.html.j2
index d3501c60..ca779567 100644
--- a/template/copyright.html.j2
+++ b/template/copyright.html.j2
@@ -1,9 +1,12 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<article class="container">
4
5 <header>
6 <h1>{{ _("Copyright Assignment") }}</h1>
7 </header>
3 8
4<div class="container-fluid">
5 <div class="container text-center"> 9 <div class="container text-center">
6 <h1>{{ _("Copyright Assignment") }}</h1><br><br>
7 <!-- Note: source of the pdf/copyright.pdf is in gitolite-admin/ --> 10 <!-- Note: source of the pdf/copyright.pdf is in gitolite-admin/ -->
8 {% trans %} 11 {% trans %}
9 <p> 12 <p>
diff --git a/template/engage.html.j2 b/template/engage.html.j2
index bf9edf48..2fa2fe9d 100644
--- a/template/engage.html.j2
+++ b/template/engage.html.j2
@@ -1,123 +1,101 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3 <article class="d-flex flex-column p-2 bd-highlight"> 3<article class="container">
4 <div class="container">
5 <div class="text-center">
6 <header>
7 <h1>{{ _("Engage!") }}</h1>
8 </header>
9 </div>
10 </div>
11 <div class="container">
12
13<!-- OBEN LINKS -->
14
15 <div class="row">
16 <div class="col-lg-5">
17 <h2>Join the conversation!</h2>
18 <p>
19 There are many ways to get engaged with GNUnet. A first step is to join the conversation on the mailing lists and on our IRC channel to keep up with development, find technical help, and discuss GNUnet:
20 </p>
21 <h4>Mailing List</h4>
22 <p>
23 You can get help on our mailing list <a href="https://lists.gnu.org/mailman/listinfo/help-gnunet">help-gnunet</a>. <br>If you want to hack on GNUnet or generally want to be informed about recent updates and happenings, get in touch over our mailing list <a href="https://lists.gnu.org/mailman/listinfo/gnunet-developers">gnunet-developers</a>.
24 </p>
25 <h4>IRC</h4>
26 <p>
27 Most of the GNUnet developers are on the <a href="ircs://chat.freenode.net:6697/#gnunet">IRC channel #gnunet on freenode</a>. Please be patient and stay around at least for some hours to get an answer for your request. <!-- There is also a Matrix bridge to the IRC where you can get a backlog without staying connected. -->
28 </p>
29 <h4>Mumble</h4>
30 <p>
31 We have a monthly get-together on mumble where we talk about recent developments, strategies, and politics ;-) <br>
32 We come together on that day of the month, where n.day==n.month. E.g. we’ll meet on 6th of June, 7th of July, 8th of August, 9th of September, 10th of October and so on. We will usually start around 8 PM CEST, but try to be there earlier and stay longer just to hang around together.<br>
33 To connect just enter "gnunet.org" as server into your mumble client; leave everything else as default.
34 </p>
35 </p>
36 <h4>PSYC</h4>
37 <p>
38 You find some of us on PSYC using the following adresses:
39 <ul>
40 <li>psyc://loupsycedyglgamf.onion/@welcome</li>
41 <li>irc://loupsycedyglgamf.onion:67/welcome</li>
42 <li>psyc://psyced.org/@welcome</li>
43 <li>irc://psyced.org/welcome</li>
44 <li>xmpp:*welcome@psyced.org</li>
45 </li>
46 </p>
47 </div>
48
49<!-- OBEN RECHTS -->
50
51 <div class="col-lg-5 offset-md-1">
52 <h2>Install GNUnet!</h2>
53 <p>
54 Another thing you might want now is your own GNUnet installation. As we haven’t packaged the new versions yet (June 2019) we provide <a href="https://gnunet.org/en/tutorial.html">some tutorials how to install step-by-step</a>.
55 </p>
56 <h2>Use GNUnet!</h2>
57 <p>
58 <a href="https://gnunet.org/en/use.html">Let's gets started...</a>
59 </p>
60 <h2>Report bugs!</h2>
61 <p>
62 While using GNUnet you will find bugs. Here are some notes on how to do that the most effective way:
63 <ul>
64 <li>Run 'gnunet-bugreport'</li>
65 <li>Report the output into our <a href="https://bugs.gnunet.org/">bug tracker</a>. Add more details e.g. what happened and what you expected to happen. </li>
66 <li>If you do not want to use the public bug tracker, you can also eMail to bug-gnunet@gnu.org.</li>
67 <li>Please inform us if your operating system applies any vendor changes to GNUnet which you know about (to exclude sources of problems introduced by your OS).</li>
68 <li>Wait until your bug report is acknowledged/replied to. Note that only volunteers work on this – responses may take a while.</li>
69 <li>Please follow up with eventual questions about the bug. </li>
70 <li>Once a fix is there: Check if it's working as expected, so that we can properly close the bug report and/or give you credits :)</li>
71 </ul>
72 </p>
73 <h2>Contribute!</h2>
74 <p>
75 There are various ways to contribute. We especially need coders with C skills and knowledge of crypto – but supporting with this website, it's translations, the bibliography and our wide documentation efforts are most welcome, too. As we are delivereing a new version now regularly, some packaging skills (for any OS) would a great thing to have – and if you are a designer we would need a hand, too.
76 </p>
77 </div>
78 </div>
79
80
81<!-- MITTE LINKS ^ -->
82 4
83 <div class="row"> 5 <header>
84 <div class="col-lg-5"> 6 <h1>{{ _("Engage!") }}</h1>
85 <h2>Bibliography</h2> 7 </header>
86 <p>If you are more the reading kind of person, please take a seat <a href="https://bib.gnunet.org/">in our libary...</a></p>
87 <h2>Videos</h2>
88 <p>...or if you rather want hear us talking to you, lean back and watch some <a href="https://gnunet.org/en/video">videos</a> of our talks at conferences.</p>
89 </div>
90 8
91 9 <div class="row">
92<!-- MITTE RECHTS --> 10 <div class="col-md">
93 11 <h2>Join the conversation!</h2>
94 <div class="col-lg-5 offset-md-1"> 12 <p>
95 <h2>Get together!</h2> 13 There are many ways to get engaged with GNUnet. A first step is to join the conversation on the mailing lists and on our IRC channel to keep up with development, find technical help, and discuss GNUnet:
96 <p> 14 </p>
97 We meet in meatspace occasionally, mostly in Germany and Switzerland. The usual occasions are: 15 <h4>Mailing List</h4>
98 <ul> 16 <p>
99 <li><a href="https://events.ccc.de/congress">Chaos Communication Congress</a> in Leipzig (DE), 27th-30th December</li> 17 You can get help on our mailing list <a href="https://lists.gnu.org/mailman/listinfo/help-gnunet">help-gnunet</a>. <br>If you want to hack on GNUnet or generally want to be informed about recent updates and happenings, get in touch over our mailing list <a href="https://lists.gnu.org/mailman/listinfo/gnunet-developers">gnunet-developers</a>.
100 <li><a href="https://datenspuren.de">Datenspuren</a> in Dresden (DE), usually by mid/end of September</li> 18 </p>
101 <li>GNUnet Hackweek in Mont-Soleil (CH), usually by the end of June</li> 19 <h4>IRC</h4>
102 <li>Other meetings happening throughout the year: You’ll get to know about it on our Mailinglist (or propose them yourself).</li> 20 <p>
103 </ul> 21 Most of the GNUnet developers are on the
104 </p> 22 IRC channel #gnunet on freenode (connect via
105 </div> 23 <a href="ircs://chat.freenode.net:6697/#gnunet">ircs://chat.freenode.net:6697/#gnunet</a>).
24 Please be patient and stay around at least for some hours to get an answer for your request. <!-- There is also a Matrix bridge to the IRC where you can get a backlog without staying connected. -->
25 </p>
26 <h4>Mumble</h4>
27 <p>
28 We have a monthly get-together on mumble where we talk about recent developments, strategies, and politics.<br>
29 We come together on that day of the month, where n.day==n.month. E.g. we’ll meet on 6th of June, 7th of July, 8th of August, 9th of September, 10th of October and so on. We will usually start around 8 PM CEST, but try to be there earlier and stay longer just to hang around together.<br>
30 To connect just enter "gnunet.org" as server into your mumble client; leave everything else as default.
31 </p>
32 </p>
33 <h4>PSYC</h4>
34 <p>
35 You find some of us on PSYC using the following adresses:
36 <ul>
37 <li>psyc://loupsycedyglgamf.onion/@welcome</li>
38 <li>irc://loupsycedyglgamf.onion:67/welcome</li>
39 <li>psyc://psyced.org/@welcome</li>
40 <li>irc://psyced.org/welcome</li>
41 <li>xmpp:*welcome@psyced.org</li>
42 </li>
43 </p>
106 </div> 44 </div>
107 45 <div class="col-md">
108 <!-- TEMPLATE 46 <h2>Install GNUnet!</h2>
109 47 <p>
110 <div class="row"> 48 Another thing you might want now is your own GNUnet installation. As we haven’t packaged the new versions yet (June 2019) we provide <a href="https://gnunet.org/en/tutorial.html">some tutorials how to install step-by-step</a>.
111 <div class="col-lg-5"> 49 </p>
112 </div> 50 <h2>Use GNUnet!</h2>
113 <!-- UNTEN LINKS ^ --> 51 <p>
114 <div class="col-lg-5 offset-md-1"> 52 <a href="use.html">Let's get started...</a>
115 </div> 53 </p>
116 <!-- UNTEN RECHTS ^ --> 54 <h2>Report bugs!</h2>
55 <p>
56 While using GNUnet you will find bugs. Here are some notes on how to do that the most effective way:
57 </p>
58 <ul>
59 <li>Run 'gnunet-bugreport'</li>
60 <li>Report the output into our <a href="https://bugs.gnunet.org/">bug tracker</a>. Add more details e.g. what happened and what you expected to happen. </li>
61 <li>If you do not want to use the public bug tracker, you can also eMail to bug-gnunet@gnu.org.</li>
62 <li>Please inform us if your operating system or package manager applies any vendor changes to GNUnet which you know about (to exclude potential problems introduced by third parties).</li>
63 <li>Wait until your bug report is acknowledged/replied to. Note that only volunteers work on this, responses may take a while.</li>
64 <li>Please follow up with eventual questions about the bug. </li>
65 <li>Once a fix is there: Check if it's working as expected, so that we can properly close the bug report and/or give you credits :)</li>
66 </ul>
67 <h2>Contribute!</h2>
68 <p>
69 There are various ways to contribute. We especially need coders with C skills and knowledge of crypto. Development work on this this website, it's translations, the bibliography, our wide documentation, and other efforts are most welcome, too.<br>
70 The core software of GNUnet used to be released with long breaks between releases. Since the 0.11.0 release we try to make releases more regularly. Therefore package maintainers who are interested in working together with an welcoming environment are invited to contribute packages of our software to any OS/PM and request help.<br>
71 Last but not least designers are welcome to contact us about projects which require help.
72 </p>
117 </div> 73 </div>
74 </div>
118 75
119 --> 76 <div class="row">
120 77 <div class="col-md">
78 <h2>Bibliography</h2>
79 <p>If you are more the reading kind of person, please take a seat <a href="https://bib.gnunet.org/">in our libary...</a></p>
80 <h2>Videos</h2>
81 <p>...or if you rather want hear us talking to you, lean back and watch some <a href="video.html">videos</a> of our talks at conferences.</p>
82 </div>
83 <div class="col-md">
84 <h2>Get together!</h2>
85 <p>
86 Occasionaly we meet in "meatspace", mostly in Germany and
87 Switzerland.
88 The usual occasions are:
89 </p>
90 <!-- ul must stand on its own. See html specs -->
91 <ul>
92 <li><a href="https://events.ccc.de/congress">Chaos Communication Congress</a> in Leipzig (DE), 27th-30th December</li>
93 <li><a href="https://datenspuren.de">Datenspuren</a> in Dresden (DE), usually by mid/end of September</li>
94 <li>GNUnet Hackweek in Mont-Soleil (CH), usually by the end of June</li>
95 <li>Other meetings happening throughout the year: You’ll get to know about it on our Mailinglist (or propose them yourself).</li>
96 </ul>
121 </div> 97 </div>
122 </article> 98 </div>
99
100</article>
123{% endblock body_content %} 101{% endblock body_content %}
diff --git a/template/ev.html.j2 b/template/ev.html.j2
index 31c580d9..70c2ad81 100644
--- a/template/ev.html.j2
+++ b/template/ev.html.j2
@@ -1,53 +1,33 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<article> 3<article class="container">
4<div class="container-fluid"> 4
5 <div class="container text-center">
6 <header> 5 <header>
7 <h1>{{ _("Verein zur F&ouml;rderung von GNUnet e.V.") }}</h1> 6 <h1>{{ _("Verein zur F&ouml;rderung von GNUnet e.V.") }}</h1>
8 </header> 7 </header>
9 <p>
10 {% trans %}
11 On December 27th 2013 a group of GNUnet hackers met at 30c3
12 to create the "Verein zur F&ouml;rderung von GNUnet e.V.", an
13 association under German law to support GNUnet development.
14 The Amtsgericht M&uuml;nchen registered the association on the
15 7th of March under VR 205287.
16 {% endtrans %}
17 </p>
18 <p>
19 {% trans %}
20 The association is officially dedicated to supporting research,
21 development and education in the area of secure decentralized
22 networking in general, and GNUnet specifically. This is the
23 official website for the association.
24 {% endtrans %}
25 </p>
26 </div>
27</div>
28 8
29<div class="container">
30 <div class="row"> 9 <div class="row">
31 <div class="col-lg-6"> 10 <div class="col-md">
32 <h3>{{ _("Governance") }}</h3> 11 <h3>{{ _("About GNUnet e.V.") }}</h3>
33 <p> 12 <p>
34 {% trans %} 13 {% trans %}
35 You can find our "Satzung", and the list of members under 14 On December 27th 2013 a group of GNUnet hackers met at 30c3
36 <a href="https://git.gnunet.org/gnunet-ev.git/tree/satzung.tex">https://git.gnunet.org/gnunet-ev.git/tree/satzung.tex</a>. 15 to create the "Verein zur F&ouml;rderung von GNUnet e.V.", an
37 The current board consists of: 16 association under German law to support GNUnet development.
38 <dl><dt>Vorsitz</dt> 17 The Amtsgericht M&uuml;nchen registered the association on the
39 <dd><a href="https://grothoff.org/christian/">Christian Grothoff</a></dd> 18 7th of March under VR 205287.
40 <dt>stellvertretender Vorsitz</dt> 19 {% endtrans %}
41 <dd>xrs</dd> 20 </p>
42 <dt>Kassenwart</dt> 21 <p>
43 <dd>Florian Dold</dd> 22 {% trans %}
44 <dt>Beisitzer</dt> 23 The association is officially dedicated to supporting research,
45 <dd>Lurchi</dd> 24 development and education in the area of secure decentralized
46 </dl> 25 networking in general, and GNUnet specifically. This is the
26 official website for the association.
47 {% endtrans %} 27 {% endtrans %}
48 </p> 28 </p>
49 </div> 29 </div>
50 <div class="col-lg-6"> 30 <div class="col-md">
51 <h3>{{ _("Becoming a Member of GNUnet e.V.") }}</h3> 31 <h3>{{ _("Becoming a Member of GNUnet e.V.") }}</h3>
52 <p> 32 <p>
53 {% trans %} 33 {% trans %}
@@ -65,30 +45,29 @@
65 {% endtrans %} 45 {% endtrans %}
66 </p> 46 </p>
67 </div> 47 </div>
68 </div> 48 </div><!-- END:row -->
49
69 <div class="row"> 50 <div class="row">
70 <div class="col-lg-6"> 51 <div class="col-md">
71 <h3>{{ _("Support Us!") }}</h3> 52 <h3>{{ _("Governance") }}</h3>
72 <p> 53 <p>
73 {% trans %} 54 {% trans %}
74 Everybody is welcome to support us via donations. For 55 You can find our "Satzung", and the list of members under
75 financial contributions, Europeans are able to donate via 56 <a href="https://git.gnunet.org/gnunet-ev.git/tree/satzung.tex">https://git.gnunet.org/gnunet-ev.git/tree/satzung.tex</a>.
76 SEPA. We hope to setup accounts in other major currency areas 57 The current board consists of:
77 in the future. You can also donate via Bitcoin, routing 58 <dl><dt>Vorsitz</dt>
78 details are given below. Please note that we are unable to 59 <dd><a href="https://grothoff.org/christian/">Christian Grothoff</a></dd>
79 provide receipts for your donations. If you are planning to 60 <dt>stellvertretender Vorsitz</dt>
80 donate a significant amount of money, please contact us first 61 <dd>xrs</dd>
81 as it might be better to come to a custom arrangement. 62 <dt>Kassenwart</dt>
82 63 <dd>Florian Dold</dd>
83 <dl><dt>BitCoin</dt> 64 <dt>Beisitzer</dt>
84 <dd>1GNUnetpWeR9Zs3vipdvVywo1GseeksjUh</dd> 65 <dd>Lurchi</dd>
85 <dt>SEPA/IBAN</dt>
86 <dd>DE67830654080004822650 (BIC/SWIFT: GENODEF1SLR)</dd>
87 </dl> 66 </dl>
88 {% endtrans %} 67 {% endtrans %}
89 </p> 68 </p>
90 </div> 69 </div>
91 <div class="col-lg-6"> 70 <div class="col-md">
92 <h3>{{ _("Official Meeting Notes") }}</h3> 71 <h3>{{ _("Official Meeting Notes") }}</h3>
93 <p> 72 <p>
94 <ul> 73 <ul>
@@ -113,8 +92,33 @@
113 </ul> 92 </ul>
114 </p> 93 </p>
115 </div> 94 </div>
116 </div> 95 </div><!-- END:row -->
117</div> 96
97 <div class="row">
98 <div class="col-md">
99 <h3>{{ _("Support Us!") }}</h3>
100 <p>
101 {% trans %}
102 Everybody is welcome to support us via donations. For
103 financial contributions, Europeans are able to donate via
104 SEPA. We hope to setup accounts in other major currency areas
105 in the future. You can also donate via Bitcoin, routing
106 details are given below. Please note that we are unable to
107 provide receipts for your donations. If you are planning to
108 donate a significant amount of money, please contact us first
109 as it might be better to come to a custom arrangement.
110
111 <dl><dt>BitCoin</dt>
112 <dd>1GNUnetpWeR9Zs3vipdvVywo1GseeksjUh</dd>
113 <dt>SEPA/IBAN</dt>
114 <dd>DE67830654080004822650 (BIC/SWIFT: GENODEF1SLR)</dd>
115 </dl>
116 {% endtrans %}
117 </p>
118 </div>
119 <div class="col">
120 </div>
121 </div><!-- END:row -->
118 122
119</div> <!-- /container --> 123</div> <!-- /container -->
120</article> 124</article>
diff --git a/template/glossary.html.j2 b/template/glossary.html.j2
index d8f6c0e5..789074e9 100644
--- a/template/glossary.html.j2
+++ b/template/glossary.html.j2
@@ -1,101 +1,116 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<div class="container"> 3<article class="container">
4<dl> 4
5<dt>{{ _("Ego") }}</dt> 5 <header>
6 <dd> 6 <h1>{{ _("Glossary") }}</h1>
7 {% trans %} 7 </header>
8 We use the term "Ego" to refer to the fact that users in GNUnet 8
9 can have multiple unlinkable identities, in the sense of alter egos. 9 <div class="row">
10 The ability to have more than one identity is crucial, as we may 10 <div class="col">
11 want to keep our egos for business separate from those we use 11 <dl>
12 for political activities or romance.<br> 12 <dt>{{ _("Ego") }}</dt>
13 Egos in GNUnet are technically 13 <dd>
14 equivalent to identities (and the code does not distinguish 14 {% trans %}
15 between them). We simply sometimes use the term "ego" to stress 15 We use the term "Ego" to refer to the fact that users in GNUnet
16 that you can have more than one. 16 can have multiple unlinkable identities, in the sense of alter egos.
17 {% endtrans %} 17 The ability to have more than one identity is crucial, as we may
18 </dd> 18 want to keep our egos for business separate from those we use
19</dt> 19 for political activities or romance.<br>
20<dt>{{ _("Identity") }}</dt> 20 Egos in GNUnet are technically
21 <dd> 21 equivalent to identities (and the code does not distinguish
22 {% trans %} 22 between them). We simply sometimes use the term "ego" to stress
23 In GNUnet users are identified via a public key, and that public 23 that you can have more than one.
24 key is then often referred to as the "Identity" of the user. 24 {% endtrans %}
25 However, the concept is not as draconian as it often is in real 25 </dd>
26 life where many are forced to have one name, one passport and 26 </dt>
27 one unique identification number. 27 <dt>{{ _("Identity") }}</dt>
28 <br> 28 <dd>
29 As long as identities in GNUnet are simply 29 {% trans %}
30 public keys, users are free to create any number of identities, 30 In GNUnet users are identified via a public key, and that public
31 and we call those egos to emphasize the difference. Even though 31 key is then often referred to as the "Identity" of the user.
32 users can create such egos freely, it is possible to have 32 However, the concept is not as draconian as it often is in real
33 an ego certified by some certification authority, resulting 33 life where many are forced to have one name, one passport and
34 in something that more closely resembles the traditional concept 34 one unique identification number.
35 of an identity.<br> 35 <br>
36 For example, a university may certify the identities of its students 36 As long as identities in GNUnet are simply
37 such that they can prove that they are studying. Students may 37 public keys, users are free to create any number of identities,
38 keep their (certified) student identity separate from other egos 38 and we call those egos to emphasize the difference. Even though
39 that they use for other activities in life. 39 users can create such egos freely, it is possible to have
40 {% endtrans %} 40 an ego certified by some certification authority, resulting
41 </dd> 41 in something that more closely resembles the traditional concept
42</dt> 42 of an identity.<br>
43<dt>{{ _("Pseudonym") }}</dt> 43 For example, a university may certify the identities of its students
44 <dd> 44 such that they can prove that they are studying. Students may
45 {% trans %} 45 keep their (certified) student identity separate from other egos
46 A pseudonym is an ego that is specifically intended 46 that they use for other activities in life.
47 to not be linked to one's real name. GNUnet users can create 47 {% endtrans %}
48 many egos, and thus also many pseudonyms. 48 </dd>
49 <br> 49 </dt>
50 Repeated uses of 50 <dt>{{ _("Pseudonym") }}</dt>
51 the same pseudonym are linkable by definition, as they involve 51 <dd>
52 the same public key. Anonymity requires the use of either the 52 {% trans %}
53 special "anonymous" pseudonym (for GNUnet, this is the neutral 53 A pseudonym is an ego that is specifically intended
54 element on the elliptic curve) or a throw-away pseudonym that 54 to not be linked to one's real name. GNUnet users can create
55 is only used once. 55 many egos, and thus also many pseudonyms.
56 {% endtrans %} 56 <br>
57 </dd> 57 Repeated uses of
58</dt> 58 the same pseudonym are linkable by definition, as they involve
59<dt>{{ _("Namespaces") }}</dt> 59 the same public key. Anonymity requires the use of either the
60 <dd> 60 special "anonymous" pseudonym (for GNUnet, this is the neutral
61 {% trans %} 61 element on the elliptic curve) or a throw-away pseudonym that
62 The GNU Name System allows every ego (or identity) to 62 is only used once.
63 securely and privately associate any number of label-value pairs 63 {% endtrans %}
64 with an ego. The values are called record sets following the 64 </dd>
65 terminology of the Domain Name System (DNS). The mapping of 65 </dt>
66 labels to record sets for a given ego is called a namespace. 66 </dl>
67 <br> 67 </div>
68 If records are made public and thus published, it is possible 68
69 for other users to lookup the record given the ego's public key 69 <div class="col-lg-6">
70 and the label. Here, not only the label can thus act as a 70 <dl>
71 passphrase but also the public key -- which despite its name 71 <dt>{{ _("Namespaces") }}</dt>
72 may not be public knowledge and is never disclosed by the GNS 72 <dd>
73 protocol itself. 73 {% trans %}
74 {% endtrans %} 74 The GNU Name System allows every ego (or identity) to
75 </dd> 75 securely and privately associate any number of label-value pairs
76</dt> 76 with an ego. The values are called record sets following the
77<dt>{{ _("Peer") }}</dt> 77 terminology of the Domain Name System (DNS). The mapping of
78 <dd> 78 labels to record sets for a given ego is called a namespace.
79 {% trans %} 79 <br>
80 A "peer" is an instance of GNUnet with its own per-instance 80 If records are made public and thus published, it is possible
81 public key and network addresses. Technically, it is possible 81 for other users to lookup the record given the ego's public key
82 to run multiple peers on the same host, but this only makes 82 and the label. Here, not only the label can thus act as a
83 sense for testing. 83 passphrase but also the public key -- which despite its name
84 <br> 84 may not be public knowledge and is never disclosed by the GNS
85 By design GNUnet supports multiple 85 protocol itself.
86 users to share the same peer, just as UNIX is a multi-user 86 {% endtrans %}
87 system. A "peer" typically consists of a set of foundational GNUnet 87 </dd>
88 services running as the "gnunet" user and allowing all users 88 </dt>
89 in the "gnunet" group to utilize the API. On multi-user 89 <dt>{{ _("Peer") }}</dt>
90 systems, additional "personalized" services may be required 90 <dd>
91 per user. 91 {% trans %}
92 <br> 92 A "peer" is an instance of GNUnet with its own per-instance
93 While peers are also identified by public keys, these 93 public key and network addresses. Technically, it is possible
94 public keys are completely unrelated to egos or 94 to run multiple peers on the same host, but this only makes
95 identities. Namespaces cannot be associated with a 95 sense for testing.
96 peer, only with egos. 96 <br>
97 {% endtrans %} 97 By design GNUnet supports multiple
98 </dd> 98 users to share the same peer, just as UNIX is a multi-user
99</dt> 99 system. A "peer" typically consists of a set of foundational GNUnet
100</div> 100 services running as the "gnunet" user and allowing all users
101 in the "gnunet" group to utilize the API. On multi-user
102 systems, additional "personalized" services may be required
103 per user.
104 <br>
105 While peers are also identified by public keys, these
106 public keys are completely unrelated to egos or
107 identities. Namespaces cannot be associated with a
108 peer, only with egos.
109 {% endtrans %}
110 </dd>
111 </dt>
112 </dl>
113 </div><!-- END:col -->
114 </div><!-- END:row -->
115</div><!-- END:container -->
101{% endblock body_content %} 116{% endblock body_content %}
diff --git a/template/gnurl.html.j2 b/template/gnurl.html.j2
index 8834e967..73d62c8b 100644
--- a/template/gnurl.html.j2
+++ b/template/gnurl.html.j2
@@ -1,8 +1,12 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<div class="container-fluid"> 3<article class="container">
4 <article> 4
5 <header>
5 <h1>gnurl (libgnurl)</h1> 6 <h1>gnurl (libgnurl)</h1>
7 </header>
8
9 <div class="container">
6 <p> 10 <p>
7 {% trans %} 11 {% trans %}
8 libgnurl is a micro fork of libcurl. The goal of libgnurl 12 libgnurl is a micro fork of libcurl. The goal of libgnurl
@@ -115,12 +119,10 @@
115 viceversa. 119 viceversa.
116 {% endtrans %} 120 {% endtrans %}
117 </p> 121 </p>
118 </article> 122 </div>
119</div>
120 123
121<div class="container"> 124 <div class="row container">
122 <div class="row"> 125 <div class="col-md">
123 <div class="col-lg-6">
124 <h3>{{ _("Source Code") }}</h3> 126 <h3>{{ _("Source Code") }}</h3>
125 <p> 127 <p>
126 {% trans %} 128 {% trans %}
@@ -134,7 +136,7 @@
134 {% endtrans %} 136 {% endtrans %}
135 </p> 137 </p>
136 </div> 138 </div>
137 <div class="col-lg-6"> 139 <div class="col-md">
138 <h3>{{ _("Downloads") }}</h3> 140 <h3>{{ _("Downloads") }}</h3>
139 <p> 141 <p>
140 {% trans %} 142 {% trans %}
@@ -149,8 +151,9 @@
149 </p> 151 </p>
150 </div> 152 </div>
151 </div> 153 </div>
152 <div class="row"> 154
153 <div class="col-lg-6"> 155 <div class="row container">
156 <div class="col-md">
154 <h3>{{ _("Reporting Bugs") }}</h3> 157 <h3>{{ _("Reporting Bugs") }}</h3>
155 <p> 158 <p>
156 {% trans %} 159 {% trans %}
@@ -161,7 +164,7 @@
161 {% endtrans %} 164 {% endtrans %}
162 </p> 165 </p>
163 </div> 166 </div>
164 <div class="col-lg-6"> 167 <div class="col-md">
165 <h3>{{ _("Maintainer and Cryptographic signatures") }}</h3> 168 <h3>{{ _("Maintainer and Cryptographic signatures") }}</h3>
166 <p> 169 <p>
167 {% trans %} 170 {% trans %}
@@ -173,7 +176,6 @@
173 </p> 176 </p>
174 </div> 177 </div>
175 </div> 178 </div>
176</div>
177 179
178</div> <!-- /container --> 180</article> <!-- /container -->
179{% endblock body_content %} 181{% endblock body_content %}
diff --git a/template/gsoc.html.j2 b/template/gsoc.html.j2
index fdca054f..5104e516 100644
--- a/template/gsoc.html.j2
+++ b/template/gsoc.html.j2
@@ -1,594 +1,610 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3 <article class="d-flex flex-column p-2 bd-highlight"> 3<article class="container">
4 <div class="container">
5 <div class="text-center">
6 <header>
7 <h1>{{ _("GNUnet's Google Summer of Code projects") }}</h1>
8 </header>
9 <p>
10 {% trans %}
11 As a GNU project, GNUnet has participated in the
12 Google Summer of Code (GSoC) for a number of years.
13 This page lists all current, past, and finished
14 projects.
15 {% endtrans %}
16 </p>
17 </div>
18 <h2>{{ _("Current projects (2019)") }}</h2>
19 <section>
20 <h4>Android Port</h4>
21 <p>
22 {% trans %}
23 It is time for GNUnet to run properly on Android. Note that
24 GNUnet is written in C, and this is not about rewriting
25 GNUnet in Java, but about getting the C code to run on Android.
26 {% endtrans %}
27 </p>
28 <p>
29 {% trans %}
30 <strong>Mentors:</strong> <a href="https://www.goebel-consult.de/">Hartmut Goebel</a>
31 {% endtrans %}
32 </p>
33 </section>
34 4
35 <section> 5 <header>
36 <h4>Help with Continuous Integration setup</h4> 6 <h1>{{ _("GNUnet's Google Summer of Code projects") }}</h1>
37 <p> 7 </header>
38 {% trans %}
39 There is a push for migrating our CI to Gitlab. The CI should
40 eventually not just run "make check" on various platforms, but also
41 perform tests with multiple peers running in different VMs with
42 specific network topologies (i.e. NAT) between them being simulated.
43 The CI should also be integrated with Gauger for performance
44 regression analysis. Running jobs only when dependencies have changed
45 and scripting more granular triggers or ideally automatic dependency
46 discovery (as done by the autotools) is also important.
47 {% endtrans %}
48 </p>
49 <p>
50 {% trans %}
51 <strong>Mentors:</strong> TBD
52 {% endtrans %}
53 </p>
54 </section>
55 8
56 <section> 9 <div class="row">
57 <h4>Migrate gnunet-qr from Python 2.7 to C using libzbar</h4> 10 <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu for better orientation -->
58 <p> 11 <nav class="nav subnav position-fixed flex-column border-right" style="position:fixed">
59 {% trans %} 12 <a class="nav-link" href="#current">{{ _("Current projects") }}</a>
60 Python 2.7 is reaching its end-of-life, and we want to get rid 13 <a class="nav-link" href="#past">{{ _("Past projects") }}</a>
61 of the dependency on Python. The existing gnunet-qr tool is a 14 <a class="nav-link" href="#finished">{{ _("Finished projects") }}</a>
62 rather simple wrapper around python-zbar, which itself wraps 15 </nav>
63 libzbar. The goal of this project is to directly use libzbar 16 </div>
64 to scan QR codes for GNUnet / the GNU Name System (see 17 <div class="col">
65 also <a href="https://bugs.gnunet.org/view.php?id=5562">#5562</a>). 18
66 <br> 19 <section>
67 <strong>Mentors:</strong> Christian Grothoff 20 <p>
68 {% endtrans %} 21 {% trans %}
69 </p> 22 As a GNU project, GNUnet has participated in the
70 </section> 23 Google Summer of Code (GSoC) for a number of years.
24 This page lists all current, past, and finished
25 projects.
26 {% endtrans %}
27 </p>
28 </section>
71 29
72 <section>
73 <h4>re:claimID OpenID Connect performance improvements</h4>
74 <p>
75 {% trans %}
76 reclaimID is a decentralized identity system build on top of the GNU
77 Name System.
78 Upon authorization, the user provides a requesting party (RP) such as a website
79 with an authorization ticket (e.g. piggybacked in an OpenID authorization code).
80 The RP uses information contained in this ticket to
81 <ol>
82 <li> Retrieve the decryption key from GNS</li>
83 <li> Retrieve the user attributes from GNS</li>
84 </ol>
85 The GNS lookups ensure that the RP receives up-to-date attributes and functional
86 decryption keys. However, in particular the RP-specific encryption key
87 resolution can be slow and even fail depending on the network topology.
88 We propose that in an initial exchange, in particular OpenID authorization code
89 flows, we try to incorporate key and maybe even an attribute set in the ticket
90 exchange.
91 30
92 In order to mitigate this issue, this project is meant to investigate and implement how... 31 <h2><a name="current" class="subnav-anchor"></a>{{ _("Current projects (2019)") }}</h2>
93 <ol> 32 <section>
94 <li> ... decryption keys can be added to an initial exchange in OpenID.</li> 33 <h4>Android Port</h4>
95 <li> ... initial set(s) of attributes can be piggybacked in OpenID.</li> 34 <p>
96 </ol> 35 {% trans %}
97 <br/> 36 It is time for GNUnet to run properly on Android. Note that
98 <strong>Mentors:</strong> Martin Schanzenbach 37 GNUnet is written in C, and this is not about rewriting
99 {% endtrans %} 38 GNUnet in Java, but about getting the C code to run on Android.
100 </p> 39 {% endtrans %}
101 </section> 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>
102 47
103 <section> 48 <section>
104 <h4>re:claimID alternative GNS-based encryption</h4> 49 <h4>Help with Continuous Integration setup</h4>
105 <p> 50 <p>
106 {% trans %} 51 {% trans %}
107 re:claimID is a decentralized identity system build on top of the GNU 52 There is a push for migrating our CI to Gitlab. The CI should
108 Name System. 53 eventually not just run "make check" on various platforms, but also
109 The initial design and implementation of re:claimID includes an attribute-based 54 perform tests with multiple peers running in different VMs with
110 encryption module in order to prevent unauthorized access to attributes in the 55 specific network topologies (i.e. NAT) between them being simulated.
111 name system. 56 The CI should also be integrated with Gauger for performance
112 Our motivation for re:claimID was for it to be name system agnostic, which 57 regression analysis. Running jobs only when dependencies have changed
113 means the design theoretically also works for other name systems such as 58 and scripting more granular triggers or ideally automatic dependency
114 namecoin. 59 discovery (as done by the autotools) is also important.
115 Other name systems often do not have built-in mechanisms in order to do this. 60 {% endtrans %}
116 Hence, we implemented an ABE access control layer. Our ABE implementation 61 </p>
117 requires two third party libraries: libpbc and libgabe. While we could merge 62 <p>
118 libgabe into the gnunet service implementation of re:claimID, libpbc is a 63 {% trans %}
119 rather large, third party library which lacks packaging in distributions and 64 <strong>Mentors:</strong> TBD
120 for platforms. 65 {% endtrans %}
121 On the other hand, GNS supports record data encryption using symmetric keys as 66 </p>
122 labels. 67 </section>
123 If we make the access control layer of re:claimID more generic in order to
124 support both ABE and GNS encryption, we could reduce the required depenencies.
125 This would result in gnunet packages to include re:claimID by default.
126 68
127 In short, the goals are to... 69 <section>
128 <ol> 70 <h4>Migrate gnunet-qr from Python 2.7 to C using libzbar</h4>
129 <li> ... improve performance by reducing encryption overhead.</li> 71 <p>
130 <li> ... reduce dependencies.</li> 72 {% trans %}
131 </ol> 73 Python 2.7 is reaching its end-of-life, and we want to get rid
132 <br/> 74 of the dependency on Python. The existing gnunet-qr tool is a
133 <strong>Mentors:</strong> Martin Schanzenbach 75 rather simple wrapper around python-zbar, which itself wraps
134 {% endtrans %} 76 libzbar. The goal of this project is to directly use libzbar
135 </p> 77 to scan QR codes for GNUnet / the GNU Name System (see
136 </section> 78 also <a href="https://bugs.gnunet.org/view.php?id=5562">#5562</a>).
79 <br>
80 <strong>Mentors:</strong> Christian Grothoff
81 {% endtrans %}
82 </p>
83 </section>
137 84
138 <section> 85 <section>
139 <h4>Enable all networking applications to run over GNUnet out of the box</h4> 86 <h4>re:claimID OpenID Connect performance improvements</h4>
140 <p> 87 <p>
141 {% trans %}
142 One great problem of the current Internet is the lack of
143 disintermediation. When people want to talk they need a
144 chat service. When they want to share files they need a
145 file transfer service. Although GNUnet already possesses
146 quite advanced integration into Linux networking, a little
147 extra work is needed for existing applications like irc,
148 www, ftp, rsh, nntpd to run over it in a peer-to-peer way,
149 simply by using a GNS hostname like friend.gnu. Once
150 people have added a person to their GNS they can
151 immediately message, exchange files and suchlike directly,
152 with nothing but the GNUnet in the middle, using
153 applications that have been distributed with unix systems
154 ever since the 1980's. We can produce an OS distribution
155 where these things work out of the box with the nicknames
156 of people instead of cloud services. For more information
157 and context, read
158 {% endtrans %}
159 <a href="https://bugs.gnunet.org/view.php?id=4625">bug id 4625</a>.
160 </p>
161 <p>
162 {% trans %}
163 <strong>Mentors:</strong> lynX &amp; dvn
164 {% endtrans %}
165 </p>
166 </section>
167 <!-- Past projects: Previously proposed, but left unfinished. Inspiration for students. -->
168 <h2>{{ _("Past projects") }}</h2>
169 <section>
170 <h4>Rust APIs for GNUnet services</h4>
171 <p>
172 {% trans %}
173 There are a variety of GNUNet APIs that should be
174 exposed in the Rust wrappers. Implementing these will
175 require extending the port of GNUNet utils written by
176 Andrew Cann and Kelong Cong.
177 {% endtrans %}
178 </p>
179 <p>
180 {% trans %}
181 As an introduction to the code base, we suggest that the
182 student and Jeff Burdges together update the
183 asynchronous IO system from gjio to futures-rs or
184 another layer built upon it. Jeff Burdges is expected
185 to concurrently be implementing a GNUNet API for his own
186 mix network work.
187 {% endtrans %}
188 </p>
189 <p>
190 {% trans %}
191 <strong>Mentors:</strong> Jeff Burdges
192 {% endtrans %}
193 </p>
194 <p>
195 {% trans %}
196 Required Skills: Rust
197 {% endtrans %}
198 </p>
199 <p>
200 {% trans %}
201 Difficulty level: low
202 {% endtrans %}
203 </p>
204 </section>
205 <section>
206 <h4>Tor compatibility for GNUnet</h4>
207 <p>
208 {% trans %}
209 Implement the AnycastExit spec to enable GNUnet clients
210 to connect over Tor.
211 {% endtrans %}
212 </p>
213 <p>
214 {% trans %}
215 <strong>Mentors:</strong> Jeff Burdges
216 {% endtrans %}
217 </p>
218 <p>
219 {% trans %}
220 Note: There was a Special TLDs spec to allow Tor to
221 resolve domain names using GNS over Tor too, but
222 currently that's on hold until folks think more about
223 how names should be moved around the local system. We're
224 calling this more collaborative approach NSS2 for now.
225 {% endtrans %}
226 </p>
227 <p>
228 {% trans %}
229 Required Skills: C
230 {% endtrans %}
231 </p>
232 <p>
233 {% trans %}
234 Difficulty level: medium
235 {% endtrans %}
236 </p>
237 </section>
238 <section>
239 <h4>RESTful GNUnet</h4>
240 <p>
241 {% trans %}
242 Design and implementation
243 of <a href="http://jsonapi.org/">REST APIs</a> that expose
244 the
245 <a href="https://gnunet.org/doxygen/modules.html">GNUnet API</a>
246 so that easy, hands-on development is
247 possible. Also, browser-based UIs will be much easier to
248 create on top of REST APIs.
249 {% endtrans %}
250 </p>
251 <p>
252 {% trans %}
253 <strong>Mentors:</strong> Martin Schanzenbach
254 {% endtrans %}
255 </p>
256 </section>
257 <section>
258 <h4>Rust implementation of GNUnet utils</h4>
259 <p>
260 {% trans %}
261 Improve the Rust implementation of GNUnet utils, possibly
262 including adding support for asynchronous IO using mio, or
263 perhaps a higher level asynchronous IO library built upon
264 it, such as rotor, mioco, eventual_io, or gj.
265 {% endtrans %}
266 </p>
267 <p>
268 {% trans %}
269 <strong>Mentors:</strong> Jeff Burdges
270 {% endtrans %}
271 </p>
272 </section>
273 <section>
274 <h4>Android compatibility for GNUnet</h4>
275 <p>
276 {% trans %}
277 Implement rudimentary Android compatibility for GNUnet,
278 in part by porting the GNUnet utils scheduler to act as
279 a thin wrapper over libuv.
280 {% endtrans %}
281 </p>
282 <p>
283 {% trans %}
284 <strong>Mentors:</strong> Jeff Burdges and Christian Grothoff
285 {% endtrans %}
286 </p>
287 </section>
288 <section>
289 <h4>Implementation of a replacement for PANDA</h4>
290 <p>
291 {% trans %}
292 Implementation of a replacement for PANDA (see Pond)
293 with better security, and maybe integration with the GNU
294 Name System for key exchange.
295 {% endtrans %}
296 </p>
297 <p>
298 {% trans %}
299 <strong>Mentors:</strong> Jeff Burdges
300 {% endtrans %}
301 </p>
302 <p>
303 {% trans %}
304 Required Skills: Rust or C, crypto
305 {% endtrans %}
306 </p>
307 <p>
308 {% trans %}
309 Difficulty level: high
310 {% endtrans %}
311 </p>
312 </section>
313 <section>
314 <h4>secushare: Implement social networking features on top of pubsub channels</h4>
315 <p>
316 {% trans %}
317 Implement different place types and file sharing by
318 creating a new place for the shared content.
319 {% endtrans %}
320 </p>
321 <p>
322 {% trans %}
323 Place types to be implemented:
324 {% endtrans %}
325 </p>
326 {% trans %} 88 {% trans %}
327 <ul> 89 reclaimID is a decentralized identity system build on top of the GNU
328 <li>File: generic file with comments</li> 90 Name System.
329 <li>Image: display an image with comments referencing a region of the image</li> 91 Upon authorization, the user provides a requesting party (RP) such as a website
330 <li>Sound: play a sound file with comments referencing a timestamp</li> 92 with an authorization ticket (e.g. piggybacked in an OpenID authorization code).
331 <li>Directory/Album: pointers to File / Image / Sound places</li> 93 The RP uses information contained in this ticket to
332 <li>Event: with RSVP</li> 94 <ol>
333 <li>Survey: ask your social neighborhood questions in a structured form</li> 95 <li> Retrieve the decryption key from GNS</li>
334 </ul> 96 <li> Retrieve the user attributes from GNS</li>
97 </ol>
98 The GNS lookups ensure that the RP receives up-to-date attributes and functional
99 decryption keys. However, in particular the RP-specific encryption key
100 resolution can be slow and even fail depending on the network topology.
101 We propose that in an initial exchange, in particular OpenID authorization code
102 flows, we try to incorporate key and maybe even an attribute set in the ticket
103 exchange.
104
105 In order to mitigate this issue, this project is meant to investigate and implement how...
106 <ol>
107 <li> ... decryption keys can be added to an initial exchange in OpenID.</li>
108 <li> ... initial set(s) of attributes can be piggybacked in OpenID.</li>
109 </ol>
110 <br/>
111 <strong>Mentors:</strong> Martin Schanzenbach
112 {% endtrans %}
113 </p>
114 </section>
115
116 <section>
117 <h4>re:claimID alternative GNS-based encryption</h4>
118 <p>
119 {% trans %}
120 re:claimID is a decentralized identity system build on top of the GNU
121 Name System.
122 The initial design and implementation of re:claimID includes an attribute-based
123 encryption module in order to prevent unauthorized access to attributes in the
124 name system.
125 Our motivation for re:claimID was for it to be name system agnostic, which
126 means the design theoretically also works for other name systems such as
127 namecoin.
128 Other name systems often do not have built-in mechanisms in order to do this.
129 Hence, we implemented an ABE access control layer. Our ABE implementation
130 requires two third party libraries: libpbc and libgabe. While we could merge
131 libgabe into the gnunet service implementation of re:claimID, libpbc is a
132 rather large, third party library which lacks packaging in distributions and
133 for platforms.
134 On the other hand, GNS supports record data encryption using symmetric keys as
135 labels.
136 If we make the access control layer of re:claimID more generic in order to
137 support both ABE and GNS encryption, we could reduce the required depenencies.
138 This would result in gnunet packages to include re:claimID by default.
139
140 In short, the goals are to...
141 <ol>
142 <li> ... improve performance by reducing encryption overhead.</li>
143 <li> ... reduce dependencies.</li>
144 </ol>
145 <br/>
146 <strong>Mentors:</strong> Martin Schanzenbach
147 {% endtrans %}
148 </p>
149 </section>
150
151 <section>
152 <h4>Enable all networking applications to run over GNUnet out of the box</h4>
153 <p>
154 {% trans %}
155 One great problem of the current Internet is the lack of
156 disintermediation. When people want to talk they need a
157 chat service. When they want to share files they need a
158 file transfer service. Although GNUnet already possesses
159 quite advanced integration into Linux networking, a little
160 extra work is needed for existing applications like irc,
161 www, ftp, rsh, nntpd to run over it in a peer-to-peer way,
162 simply by using a GNS hostname like friend.gnu. Once
163 people have added a person to their GNS they can
164 immediately message, exchange files and suchlike directly,
165 with nothing but the GNUnet in the middle, using
166 applications that have been distributed with unix systems
167 ever since the 1980's. We can produce an OS distribution
168 where these things work out of the box with the nicknames
169 of people instead of cloud services. For more information
170 and context, read
171 {% endtrans %}
172 <a href="https://bugs.gnunet.org/view.php?id=4625">bug id 4625</a>.
173 </p>
174 <p>
175 {% trans %}
176 <strong>Mentors:</strong> lynX &amp; dvn
177 {% endtrans %}
178 </p>
179 </section>
180 <!-- Past projects: Previously proposed, but left unfinished. Inspiration for students. -->
181 <h2><a name="past" class="subnav-anchor"></a>{{ _("Past projects") }}</h2>
182 <section>
183 <h4>Rust APIs for GNUnet services</h4>
184 <p>
185 {% trans %}
186 There are a variety of GNUNet APIs that should be
187 exposed in the Rust wrappers. Implementing these will
188 require extending the port of GNUNet utils written by
189 Andrew Cann and Kelong Cong.
190 {% endtrans %}
191 </p>
192 <p>
193 {% trans %}
194 As an introduction to the code base, we suggest that the
195 student and Jeff Burdges together update the
196 asynchronous IO system from gjio to futures-rs or
197 another layer built upon it. Jeff Burdges is expected
198 to concurrently be implementing a GNUNet API for his own
199 mix network work.
200 {% endtrans %}
201 </p>
202 <p>
203 {% trans %}
204 <strong>Mentors:</strong> Jeff Burdges
205 {% endtrans %}
206 </p>
207 <p>
208 {% trans %}
209 Required Skills: Rust
210 {% endtrans %}
211 </p>
212 <p>
213 {% trans %}
214 Difficulty level: low
215 {% endtrans %}
216 </p>
217 </section>
218 <section>
219 <h4>Tor compatibility for GNUnet</h4>
220 <p>
221 {% trans %}
222 Implement the AnycastExit spec to enable GNUnet clients
223 to connect over Tor.
224 {% endtrans %}
225 </p>
226 <p>
227 {% trans %}
228 <strong>Mentors:</strong> Jeff Burdges
229 {% endtrans %}
230 </p>
231 <p>
232 {% trans %}
233 Note: There was a Special TLDs spec to allow Tor to
234 resolve domain names using GNS over Tor too, but
235 currently that's on hold until folks think more about
236 how names should be moved around the local system. We're
237 calling this more collaborative approach NSS2 for now.
238 {% endtrans %}
239 </p>
240 <p>
241 {% trans %}
242 Required Skills: C
243 {% endtrans %}
244 </p>
245 <p>
246 {% trans %}
247 Difficulty level: medium
248 {% endtrans %}
249 </p>
250 </section>
251 <section>
252 <h4>RESTful GNUnet</h4>
253 <p>
254 {% trans %}
255 Design and implementation
256 of <a href="http://jsonapi.org/">REST APIs</a> that expose
257 the
258 <a href="https://gnunet.org/doxygen/modules.html">GNUnet API</a>
259 so that easy, hands-on development is
260 possible. Also, browser-based UIs will be much easier to
261 create on top of REST APIs.
262 {% endtrans %}
263 </p>
264 <p>
265 {% trans %}
266 <strong>Mentors:</strong> Martin Schanzenbach
267 {% endtrans %}
268 </p>
269 </section>
270 <section>
271 <h4>Rust implementation of GNUnet utils</h4>
272 <p>
273 {% trans %}
274 Improve the Rust implementation of GNUnet utils, possibly
275 including adding support for asynchronous IO using mio, or
276 perhaps a higher level asynchronous IO library built upon
277 it, such as rotor, mioco, eventual_io, or gj.
278 {% endtrans %}
279 </p>
280 <p>
281 {% trans %}
282 <strong>Mentors:</strong> Jeff Burdges
283 {% endtrans %}
284 </p>
285 </section>
286 <section>
287 <h4>Android compatibility for GNUnet</h4>
288 <p>
289 {% trans %}
290 Implement rudimentary Android compatibility for GNUnet,
291 in part by porting the GNUnet utils scheduler to act as
292 a thin wrapper over libuv.
293 {% endtrans %}
294 </p>
295 <p>
296 {% trans %}
297 <strong>Mentors:</strong> Jeff Burdges and Christian Grothoff
298 {% endtrans %}
299 </p>
300 </section>
301 <section>
302 <h4>Implementation of a replacement for PANDA</h4>
303 <p>
304 {% trans %}
305 Implementation of a replacement for PANDA (see Pond)
306 with better security, and maybe integration with the GNU
307 Name System for key exchange.
308 {% endtrans %}
309 </p>
310 <p>
311 {% trans %}
312 <strong>Mentors:</strong> Jeff Burdges
313 {% endtrans %}
314 </p>
315 <p>
316 {% trans %}
317 Required Skills: Rust or C, crypto
318 {% endtrans %}
319 </p>
320 <p>
321 {% trans %}
322 Difficulty level: high
323 {% endtrans %}
324 </p>
325 </section>
326 <section>
327 <h4>secushare: Implement social networking features on top of pubsub channels</h4>
328 <p>
329 {% trans %}
330 Implement different place types and file sharing by
331 creating a new place for the shared content.
332 {% endtrans %}
333 </p>
334 <p>
335 {% trans %}
336 Place types to be implemented:
337 {% endtrans %}
338 </p>
339 {% trans %}
340 <ul>
341 <li>File: generic file with comments</li>
342 <li>Image: display an image with comments referencing a region of the image</li>
343 <li>Sound: play a sound file with comments referencing a timestamp</li>
344 <li>Directory/Album: pointers to File / Image / Sound places</li>
345 <li>Event: with RSVP</li>
346 <li>Survey: ask your social neighborhood questions in a structured form</li>
347 </ul>
348 {% endtrans %}
349 <p>
350 {% trans %}
351 Also provide the following UI functionality:
352 {% endtrans %}
353 </p>
354 {% trans %}
355 <ul>
356 <li>Fork existing channels, reorganize people into new chatrooms or channels.</li>
357 <li>Share a post (edit and repost something elsewhere, on a fan page for example).</li>
358 <li>Edit a previously published post + offer edit history to readers.</li>
359 <li>Control expiry of channel history.</li>
360 </ul>
361 {% endtrans %}
362 <p>
363 {% trans %}
364 See also <a href="http://secushare.org/features">http://secushare.org/features</a>
365 {% endtrans %}
366 </p>
367 <p>
368 {% trans %}
369 <strong>Mentors:</strong> lynX
370 {% endtrans %}
371 </p>
372 <p>
373 {% trans %}
374 Required Skills: C/C++
375 {% endtrans %}
376 </p>
377 <p>
378 {% trans %}
379 Difficulty level: high
380 {% endtrans %}
381 </p>
382 </section>
383 <section>
384 <h4>secushare: Implement a Social Graph API for contact adoption and more</h4>
385 <p>
386 {% trans %}
387 Implement aggregation of distributed state from
388 various channels
389 in order to provide for a powerful social graph API capable of
390 producing social network profiles, dashboards,
391 a calendar out of
392 upcoming event invitations (if available),
393 social search functionality
394 and most of all to make it easy for users to
395 adopt cryptographic
396 identities of their contacts/friends simply by finding
397 them in the
398 social graph of their
399 existing contacts ("This is Linda. You have 11
400 contacts in common with her. [ADD]").
401 {% endtrans %}
402 </p>
403 <p>
404 {% trans %}
405 Related to
406 <a href="http://secushare.org/rendezvous">secushare.org/rendezvous</a>
407 {% endtrans %}
408 </p>
409 <p>
410 {% trans %}
411 <strong>Mentors:</strong> t3sserakt, lynX
412 {% endtrans %}
413 </p>
414 <p>
415 {% trans %}
416 Required Skills: C
335 {% endtrans %} 417 {% endtrans %}
336 <p> 418 </p>
337 {% trans %} 419 <p>
338 Also provide the following UI functionality:
339 {% endtrans %}
340 </p>
341 {% trans %} 420 {% trans %}
421 Difficulty level: high
422 {% endtrans %}
423 </p>
424 </section>
425 <section>
426 <h4>secushare: Implement integration with tradition e-mail</h4>
427 {% trans %}
342 <ul> 428 <ul>
343 <li>Fork existing channels, reorganize people into new chatrooms or channels.</li> 429 <li>
344 <li>Share a post (edit and repost something elsewhere, on a fan page for example).</li> 430 Emulate IMAP/SMTP protocols as necessary to transform
345 <li>Edit a previously published post + offer edit history to readers.</li> 431 traditional mail clients into secushare user
346 <li>Control expiry of channel history.</li> 432 interfaces.
433 </li>
434 <li>
435 Think of ways to map e-mail addresses to secushare
436 identities.
437 </li>
438 <li>
439 Encode or translate various e-mail features into
440 secushare equivalents.
441 </li>
442 <li>
443 Parts of secushare are currently written in Rust,
444 therefore Rust is preferred for this task but it is
445 not an requirement.
446 </li>
347 </ul> 447 </ul>
448 {% endtrans %}
449 <p>
450 {% trans %}
451 <strong>Mentors:</strong> t3sserakt, lynX
452 {% endtrans %}
453 </p>
454 <p>
455 {% trans %}
456 Required Skills: C
457 {% endtrans %}
458 </p>
459 <p>
460 {% trans %}
461 Difficulty level: high
462 {% endtrans %}
463 </p>
464 </section>
465 <section>
466 <h4>GNUnet auction</h4>
467 <p>
468 {% trans %}
469 Implementation of the GNUnet auction system described in
470 Chapter 3 of
471 <a href="https://gnunet.org/libbrand-thesis">this thesis</a>.
472 Specific tasks are adding smart
473 contract creation and round time enforcement to
474 libbrandt as well as creating the
475 GNUnet auction service, library and the three user interface
476 programs create, info and join.
477 {% endtrans %}
478 </p>
479 <p>
480 {% trans %}
481 <strong>Mentors:</strong> mate, cg
482 {% endtrans %}
483 </p>
484 <p>
485 {% trans %}
486 Required Skills: C
487 {% endtrans %}
488 </p>
489 <p>
490 {% trans %}
491 Difficulty level: medium
492 {% endtrans %}
493 </p>
494 </section>
495 <section>
496 <h4>Implementation of additional transports</h4>
497 <p>
498 {% trans %}
499 Implementation of additional transports to make GNUnet communication
500 more robust in the presence of problematic networks:
501 GNUnet-over-SMTP, GNUnet-over-DNS
502 {% endtrans %}
503 </p>
504 <p>
505 {% trans %}
506 <strong>Mentors:</strong> Matthias Wachs
507 {% endtrans %}
508 </p>
509 </section>
510 <section>
511 <h4>Implementation of ALG-based NAT traversal methods</h4>
512 <p>
513 {% trans %}
514 Implementation of ALG-based NAT traversal methods (FTP/SIP-based hole
515 punching, better STUN support)
516 {% endtrans %}
517 </p>
518 <p>
519 {% trans %}
520 <strong>Mentors:</strong> Matthias Wachs
521 {% endtrans %}
522 </p>
523 </section>
524 <section>
525 <h4>Integration of the GNU Name System with GnuPG</h4>
526 <p>
527 {% trans %}
528 <strong>Mentors:</strong> Matthias Wachs, Christian Grothoff, Jeff Burdges
529 {% endtrans %}
530 </p>
531 </section>
532 <section>
533 <h4>libaboss improvements</h4>
534 <p>
535 {% trans %}
536 Improving libaboss to make computation on shared secrets (including
537 repeated multiplication) based
538 on <a href="https://dl.acm.org/citation.cfm?doid=62212.62213">Ben-Or
539 et al.</a> if possible. This in particular means moving libaboss to
540 bignums (gcry_mpi).
541 {% endtrans %}
542 </p>
543 <p><strong>Mentors:</strong> Krista Grothoff, Jeff Burdges</p>
544 </section>
545 <section>
546 <h4>Implementation of a replacement for PANDA</h4>
547 <p>
548 {% trans %}
549 Implementation of a replacement for PANDA (see Pond) with better
550 security, and maybe integration with the GNU Name System for key
551 exchange.
552 {% endtrans %}
553 </p>
554 <p>
555 {% trans %}
556 <strong>Mentors:</strong> Jeff Burdges
557 {% endtrans %}
558 </p>
559 </section>
560 <section>
561 <h4>Supporting GNU Guix's package distribution</h4>
562 <p>
563 {% trans %}
564 Please refer to the description for this project listed under
565 GNU Guix project ideas.
566 {% endtrans %}
567 </p>
568 </section>
569 <h2><a name="finished" class="subnav-anchor"></a>{{ _("Finished projects") }}</h2>
570 <!-- Commentary: Finished projects, descriptions and Links to write-ups about them. -->
571 <h3>2018</h3>
572 <section>
573 <h4>GNUnet Web-based User Interface</h4>
574 <p>
575 {% trans %}
576 Implementation of a Web-based UI for GNUnet similar to
577 GNUnet-Gtk with a yet to be determined framework such as
578 Angular2. This includes the design and implementation of
579 not yet existing <a href="http://jsonapi.org/">REST APIs</a>
580 that expose the
581 <a href="https://gnunet.org/doxygen/modules.html">GNUnet API</a>.
582 {% endtrans %}
583 </p>
584 <p>
585 {% trans %}
586 <strong>Mentors:</strong> Martin Schanzenbach
587 {% endtrans %}
588 </p>
589 <p>
590 {% trans %}
591 Required Skills: C, JavaScript, CSS
592 {% endtrans %}
593 </p>
594 <p>
595 {% trans %}
596 Difficulty level: medium
597 {% endtrans %}
598 </p>
599 <p>
600 {% trans %}
601 Report: <a href="gsoc-2018-gnunet-webui.html">GSoC 2018: GNUnet WebUI</a>
348 {% endtrans %} 602 {% endtrans %}
349 <p> 603 </p>
350 {% trans %} 604 </section>
351 See also <a href="http://secushare.org/features">http://secushare.org/features</a> 605
352 {% endtrans %}
353 </p>
354 <p>
355 {% trans %}
356 <strong>Mentors:</strong> lynX
357 {% endtrans %}
358 </p>
359 <p>
360 {% trans %}
361 Required Skills: C/C++
362 {% endtrans %}
363 </p>
364 <p>
365 {% trans %}
366 Difficulty level: high
367 {% endtrans %}
368 </p>
369 </section>
370 <section>
371 <h4>secushare: Implement a Social Graph API for contact adoption and more</h4>
372 <p>
373 {% trans %}
374 Implement aggregation of distributed state from
375 various channels
376 in order to provide for a powerful social graph API capable of
377 producing social network profiles, dashboards,
378 a calendar out of
379 upcoming event invitations (if available),
380 social search functionality
381 and most of all to make it easy for users to
382 adopt cryptographic
383 identities of their contacts/friends simply by finding
384 them in the
385 social graph of their
386 existing contacts ("This is Linda. You have 11
387 contacts in common with her. [ADD]").
388 {% endtrans %}
389 </p>
390 <p>
391 {% trans %}
392 Related to
393 <a href="http://secushare.org/rendezvous">secushare.org/rendezvous</a>
394 {% endtrans %}
395 </p>
396 <p>
397 {% trans %}
398 <strong>Mentors:</strong> t3sserakt, lynX
399 {% endtrans %}
400 </p>
401 <p>
402 {% trans %}
403 Required Skills: C
404 {% endtrans %}
405 </p>
406 <p>
407 {% trans %}
408 Difficulty level: high
409 {% endtrans %}
410 </p>
411 </section>
412 <section>
413 <h4>secushare: Implement integration with tradition e-mail</h4>
414 {% trans %}
415 <ul>
416 <li>
417 Emulate IMAP/SMTP protocols as necessary to transform
418 traditional mail clients into secushare user
419 interfaces.
420 </li>
421 <li>
422 Think of ways to map e-mail addresses to secushare
423 identities.
424 </li>
425 <li>
426 Encode or translate various e-mail features into
427 secushare equivalents.
428 </li>
429 <li>
430 Parts of secushare are currently written in Rust,
431 therefore Rust is preferred for this task but it is
432 not an requirement.
433 </li>
434 </ul>
435 {% endtrans %}
436 <p>
437 {% trans %}
438 <strong>Mentors:</strong> t3sserakt, lynX
439 {% endtrans %}
440 </p>
441 <p>
442 {% trans %}
443 Required Skills: C
444 {% endtrans %}
445 </p>
446 <p>
447 {% trans %}
448 Difficulty level: high
449 {% endtrans %}
450 </p>
451 </section>
452 <section>
453 <h4>GNUnet auction</h4>
454 <p>
455 {% trans %}
456 Implementation of the GNUnet auction system described in
457 Chapter 3 of
458 <a href="https://gnunet.org/libbrand-thesis">this thesis</a>.
459 Specific tasks are adding smart
460 contract creation and round time enforcement to
461 libbrandt as well as creating the
462 GNUnet auction service, library and the three user interface
463 programs create, info and join.
464 {% endtrans %}
465 </p>
466 <p>
467 {% trans %}
468 <strong>Mentors:</strong> mate, cg
469 {% endtrans %}
470 </p>
471 <p>
472 {% trans %}
473 Required Skills: C
474 {% endtrans %}
475 </p>
476 <p>
477 {% trans %}
478 Difficulty level: medium
479 {% endtrans %}
480 </p>
481 </section>
482 <section>
483 <h4>Implementation of additional transports</h4>
484 <p>
485 {% trans %}
486 Implementation of additional transports to make GNUnet communication
487 more robust in the presence of problematic networks:
488 GNUnet-over-SMTP, GNUnet-over-DNS
489 {% endtrans %}
490 </p>
491 <p>
492 {% trans %}
493 <strong>Mentors:</strong> Matthias Wachs
494 {% endtrans %}
495 </p>
496 </section>
497 <section>
498 <h4>Implementation of ALG-based NAT traversal methods</h4>
499 <p>
500 {% trans %}
501 Implementation of ALG-based NAT traversal methods (FTP/SIP-based hole
502 punching, better STUN support)
503 {% endtrans %}
504 </p>
505 <p>
506 {% trans %}
507 <strong>Mentors:</strong> Matthias Wachs
508 {% endtrans %}
509 </p>
510 </section>
511 <section>
512 <h4>Integration of the GNU Name System with GnuPG</h4>
513 <p>
514 {% trans %}
515 <strong>Mentors:</strong> Matthias Wachs, Christian Grothoff, Jeff Burdges
516 {% endtrans %}
517 </p>
518 </section>
519 <section>
520 <h4>libaboss improvements</h4>
521 <p>
522 {% trans %}
523 Improving libaboss to make computation on shared secrets (including
524 repeated multiplication) based
525 on <a href="https://dl.acm.org/citation.cfm?doid=62212.62213">Ben-Or
526 et al.</a> if possible. This in particular means moving libaboss to
527 bignums (gcry_mpi).
528 {% endtrans %}
529 </p>
530 <p><strong>Mentors:</strong> Krista Grothoff, Jeff Burdges</p>
531 </section>
532 <section>
533 <h4>Implementation of a replacement for PANDA</h4>
534 <p>
535 {% trans %}
536 Implementation of a replacement for PANDA (see Pond) with better
537 security, and maybe integration with the GNU Name System for key
538 exchange.
539 {% endtrans %}
540 </p>
541 <p>
542 {% trans %}
543 <strong>Mentors:</strong> Jeff Burdges
544 {% endtrans %}
545 </p>
546 </section>
547 <section>
548 <h4>Supporting GNU Guix's package distribution</h4>
549 <p>
550 {% trans %}
551 Please refer to the description for this project listed under
552 GNU Guix project ideas.
553 {% endtrans %}
554 </p>
555 </section>
556 <h2>{{ _("Finished projects") }}</h2>
557 <!-- Commentary: Finished projects, descriptions and Links to write-ups about them. -->
558 <h3>2018</h3>
559 <section>
560 <h4>GNUnet Web-based User Interface</h4>
561 <p>
562 {% trans %}
563 Implementation of a Web-based UI for GNUnet similar to
564 GNUnet-Gtk with a yet to be determined framework such as
565 Angular2. This includes the design and implementation of
566 not yet existing <a href="http://jsonapi.org/">REST APIs</a>
567 that expose the
568 <a href="https://gnunet.org/doxygen/modules.html">GNUnet API</a>.
569 {% endtrans %}
570 </p>
571 <p>
572 {% trans %}
573 <strong>Mentors:</strong> Martin Schanzenbach
574 {% endtrans %}
575 </p>
576 <p>
577 {% trans %}
578 Required Skills: C, JavaScript, CSS
579 {% endtrans %}
580 </p>
581 <p>
582 {% trans %}
583 Difficulty level: medium
584 {% endtrans %}
585 </p>
586 <p>
587 {% trans %}
588 Report: <a href="gsoc-2018-gnunet-webui.html">GSoC 2018: GNUnet WebUI</a>
589 {% endtrans %}
590 </p>
591 </section>
592 </div> 606 </div>
593 </article> 607 </div>
608
609</article>
594{% endblock body_content %} 610{% endblock body_content %}
diff --git a/template/index.html.j2 b/template/index.html.j2
index dce96833..5b4a98b7 100644
--- a/template/index.html.j2
+++ b/template/index.html.j2
@@ -1,18 +1,18 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<!-- Jumbotron --> 3<!-- Jumbotron -->
4<div class="jumbotron bg-near-black near-white"> 4<div class="jumbotron">
5 <div class="container"> 5 <div class="container">
6 <div class="row"> 6 <div class="row">
7 <div class="col-lg-6"> 7 <div class="col-lg-6">
8 <center><img src="{{ url('static/images/gnunet-anonymous-logo.png') }}" alt="GNUnet" /></center> 8 <center><img src="{{ url('static/images/gnunet-logo-dark-text.png') }}" alt="GNUnet" /></center>
9 </div> 9 </div>
10 <div class="col-lg-6"> 10 <div class="col-lg-6">
11 <p> 11 <p>
12 {% trans %} 12 {% trans %}
13 GNUnet is a new network protocol stack for building secure, distributed, 13 GNUnet is a new network protocol stack for building secure, distributed,
14 and privacy-preserving applications. With strong roots in academic 14 and privacy-preserving applications. With strong roots in academic
15 <a href="https://old.gnunet.org/bibliography">research</a>, our goal is to replace the 15 <a href="https://bib.gnunet.org">research</a>, our goal is to replace the
16 <a href="https://secushare.org/broken-internet">old insecure Internet</a> 16 <a href="https://secushare.org/broken-internet">old insecure Internet</a>
17 protocol stack. 17 protocol stack.
18 {% endtrans %} 18 {% endtrans %}
@@ -29,7 +29,7 @@
29 {% endtrans %} 29 {% endtrans %}
30 <br><br> 30 <br><br>
31 {% trans %} 31 {% trans %}
32 GNUnet is made for an open society: It's a self-organizing 32 GNUnet is made for a free and open society: It's a self-organizing
33 network and it is 33 network and it is
34 <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a> 34 <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a>
35 as in freedom. GNUnet puts you in control of your data. You 35 as in freedom. GNUnet puts you in control of your data. You
@@ -41,25 +41,22 @@
41 </div> 41 </div>
42 </div> 42 </div>
43 <div class="container text-center"> 43 <div class="container text-center">
44 <p> 44 <p>
45 <a class="btn btn-primary btn-lg" href="about.html"> 45 <a class="btn btn-primary btn-lg" href="#about">
46 {% trans %} 46 {% trans %}
47 About 47 About
48 {% endtrans %} 48 {% endtrans %}
49 </a> 49 </a>
50 <a class="btn btn-primary btn-lg" href="download.html"> 50 &nbsp;
51 <a class="btn btn-primary btn-lg" href="install.html">
51 {% trans %} 52 {% trans %}
52 Install 53 Install
53 {% endtrans %} 54 {% endtrans %}
54 </a> 55 </a>
55 <a class="btn btn-primary btn-lg" href="use.html"> 56 &nbsp;
57 <a class="btn btn-primary btn-lg" href="engage.html">
56 {% trans %} 58 {% trans %}
57 Use 59 Engage
58 {% endtrans %}
59 </a>
60 <a class="btn btn-primary btn-lg" href="ev.html">
61 {% trans %}
62 Join
63 {% endtrans %} 60 {% endtrans %}
64 </a> 61 </a>
65 </p> 62 </p>
@@ -68,11 +65,11 @@
68 65
69 66
70 67
71<div class="container-fluid c_acronym"> 68<div class="container-fluid c_acronym link-white">
72 <div class="container"> 69 <div class="container">
73 <div class="row"> 70 <div class="row">
74 <div class="container text-center"> 71 <div class="container text-center">
75 <h1>{% trans %}The Internet of tomorrow needs GNUnet today{% endtrans %}</h1> 72 <h1><a name="about"></a>{% trans %}The Internet of tomorrow needs GNUnet today{% endtrans %}</h1>
76 </div> 73 </div>
77 </div> 74 </div>
78 <div class="row"> 75 <div class="row">
@@ -89,6 +86,13 @@
89 use it against you and sell it to others - while you can't 86 use it against you and sell it to others - while you can't
90 even notice the thievery nor accuse and hold the scroungers 87 even notice the thievery nor accuse and hold the scroungers
91 accountable. 88 accountable.
89 <!-- Proposal from Fabian Gerlach: The conventional Internet is currently like a system of roads
90 with deep potholes and surveillance cameras all over the place.
91 Even if you still can use the roads (e.g. send emails, or browse
92 websites) your vehicle might gets damaged. And the surveillance
93 cameras will create a movement profile about your life: They
94 recognize your car license plate, track you everywhere you drive,
95 and save this information in a central data base. -->
92 {% endtrans %} 96 {% endtrans %}
93 </section> 97 </section>
94 </p> 98 </p>
@@ -102,6 +106,10 @@
102 insecure by default: protecting against address forgery, 106 insecure by default: protecting against address forgery,
103 routers learning metadata, or choosing trustworthy CAs is 107 routers learning metadata, or choosing trustworthy CAs is
104 nontrivial and sometimes impossible. 108 nontrivial and sometimes impossible.
109 <!-- Proposal from Fabian Gerlach: The Internet is not designed with security in mind:
110 The network generally learns too much about users; it has insecure
111 defaults and high complexity; and it is centralized. That makes it very
112 vulnerable for multiple attacks massively threatening our freedom. -->
105 {% endtrans %} 113 {% endtrans %}
106 </p> 114 </p>
107 <p> 115 <p>
@@ -111,6 +119,10 @@
111 improving addressing, routing, naming and 119 improving addressing, routing, naming and
112 content distribution in a technically robust manner - as 120 content distribution in a technically robust manner - as
113 opposed to ad-hoc designs in place today. 121 opposed to ad-hoc designs in place today.
122 <!-- Proposal from fabian gerlach: GNUnet is built
123 <a href="https://www.w3.org/2014/strint/papers/65.pdf">"privacy by design"</> and
124 "distributed by design". This improves addressing, routing, naming and
125 content distribution in a technically robust manner. -->
114 {% endtrans %} 126 {% endtrans %}
115 </p> 127 </p>
116 </section> 128 </section>
@@ -121,17 +133,22 @@
121 133
122 <p> 134 <p>
123 {% trans %} 135 {% trans %}
124 It seems as if every other distributed or P2P project 136 <!-- replaced with Proposal from Fabian Gerlach:
137 It seems as if every other distributed or P2P project
125 develops its own library stack, covering transports, stream 138 develops its own library stack, covering transports, stream
126 muxing, discovery and others. This divides effort and 139 muxing, discovery and others. This divides effort and
127 multiplies bug count. 140 multiplies bug count.-->
141 Instead of sharing common components and tools for building P2P systems, every P2P project seems to re-invent the wheel.
142 <!-- TODO: rework this sentence. -->
143 This heightens the effort and increases the
144 potential number of vulnerabilities.
128 {% endtrans %} 145 {% endtrans %}
129 <p> 146 <p>
130 {% trans %} 147 {% trans %}
131 GNUnet is a metadata-preserving foundation for your 148 GNUnet is a metadata-preserving foundation for your
132 application, covering areas from addressing to reliable 149 application, covering areas from addressing to reliable
133 bidirectional Axolotl-encrypted channels, with advanced 150 bidirectional Axolotl-encrypted channels, with advanced
134 routing. Our work is based on continuous research spanning 151 routing. Our work is based on continuous research spanning
135 almost two decades. 152 almost two decades.
136 {% endtrans %} 153 {% endtrans %}
137 </p> 154 </p>
@@ -144,20 +161,18 @@
144 <h3>{{ _("Metadata is exposed") }}</h3> 161 <h3>{{ _("Metadata is exposed") }}</h3>
145 <p> 162 <p>
146 {% trans %} 163 {% trans %}
164 Your metadata is just as revealing as the actual content; and it gets exposed on the Internet.<br>
147 Even though transport encryption is increasingly being 165 Even though transport encryption is increasingly being
148 deployed on the Internet, it still reveals data that can 166 deployed on the Internet, it still reveals data that can
149 threaten democracy: the identities of senders and receivers, 167 threaten democracy: the identities of senders and receivers,
150 the times, frequency and the volume of communication are all 168 the times, frequency and the volume of communication are all
151 still revealed. 169 still revealed.<br>
152 <!-- Looks like a weak argumentation to me: 170 <!-- Looks like a weak argumentation to me:
153 which <a 171 which <a
154 href="https://www.freehaven.net/anonbib/cache/websitefingerprinting-pets2016.pdf">enables 172 href="https://www.freehaven.net/anonbib/cache/websitefingerprinting-pets2016.pdf">enables
155 reverse-engineering pages visited via website 173 reverse-engineering pages visited via website
156 fingerprinting</a>. 174 fingerprinting</a>.
157 --> 175 -->
158 {% endtrans %}
159 <p>
160 {% trans %}
161 GNUnet 176 GNUnet
162 <a href="https://secushare.org/anonymity">addresses</a> 177 <a href="https://secushare.org/anonymity">addresses</a>
163 these concerns with perfect forward secrecy via ephemeral 178 these concerns with perfect forward secrecy via ephemeral
@@ -191,6 +206,31 @@
191 </p> 206 </p>
192 </section> 207 </section>
193 </div> 208 </div>
209 <div class="col-lg-4">
210 <section>
211 <h3>{{ _("Learn more about GNUnet") }}</h3>
212 <p>
213 {% trans %}
214 If you want to know more about the GNUnet please continue reading
215 the <a href="about.html">about page</a>. There are much more resources,
216 such as the <a href="https://docs.gnunet.org">main handbook /
217 reference manual</a>, a <a href="https://bib.gnunet.org/">bibliography</a>
218 and <a href="https://gnunet.org/en/video.html">videos</a>.
219 {% endtrans %}
220 </p>
221 <p>
222 {% trans %}
223 You are very welcome to <a href="https://gnunet.org/en/engage.html">
224 get engaged into the conversation</a>,
225 <a href="https://gnunet.org/en/install.html">install GNUnet</a>,
226 <a href="https://gnunet.org/en/use.html">use it</a> and
227 <a href="https://gnunet.org/en/contribute.html">contribute</a>. <br>
228 Be aware that this project is still in an early alpha stage when it comes
229 to software &#8211; its not an easy task to rewrite the whole Internet!
230 {% endtrans %}
231 </p>
232 </section>
233 </div>
194 </div> 234 </div>
195 </div> 235 </div>
196</div> 236</div>
@@ -211,7 +251,7 @@
211 <div class="row"> 251 <div class="row">
212 <div class="col-lg-4"> 252 <div class="col-lg-4">
213 <section> 253 <section>
214 <h3>{{ _("GNU Taler") }}</h3> 254 <h3>{{ _("GNU Taler (Alpha)") }}</h3>
215 <p> 255 <p>
216 {% trans %} 256 {% trans %}
217 <a href="https://taler.net/">GNU Taler</a> 257 <a href="https://taler.net/">GNU Taler</a>
@@ -229,7 +269,8 @@
229 269
230 <p> 270 <p>
231 {% trans %} 271 {% trans %}
232 The GNU Name System (GNS) is a fully decentralized replacement 272 The <a href="use.html#gns">GNU Name System (GNS)</a>
273 is a fully decentralized replacement
233 for the Domain Name System (DNS). Instead of using a 274 for the Domain Name System (DNS). Instead of using a
234 hierarchy, GNS uses a directed graph. Naming conventions 275 hierarchy, GNS uses a directed graph. Naming conventions
235 are similar to DNS, but queries and replies are private even 276 are similar to DNS, but queries and replies are private even
@@ -258,10 +299,11 @@
258 <div class="row"> 299 <div class="row">
259 <div class="col-lg-4"> 300 <div class="col-lg-4">
260 <section> 301 <section>
261 <h3>{{ _("Filesharing") }}</h3> 302 <h3>{{ _("Filesharing (Alpha)") }}</h3>
262 <p> 303 <p>
263 {% trans %} 304 {% trans %}
264 GNUnet filesharing is an application that provides 305 GNUnet <a href="use.html#fs">filesharing</a>
306 is an application that aims to provide
265 censorship-resistant, anonymous filesharing. The publisher is 307 censorship-resistant, anonymous filesharing. The publisher is
266 empowered to make a gradual choice between performance and anonymity. 308 empowered to make a gradual choice between performance and anonymity.
267 {% endtrans %} 309 {% endtrans %}
@@ -270,7 +312,7 @@
270 </div> 312 </div>
271 <div class="col-lg-4"> 313 <div class="col-lg-4">
272 <section> 314 <section>
273 <h3>{{ _("Conversation") }}</h3> 315 <h3>{{ _("Conversation (Pre-Alpha)") }}</h3>
274 <p> 316 <p>
275 {% trans %} 317 {% trans %}
276 GNUnet conversation is an application that provides secure 318 GNUnet conversation is an application that provides secure
@@ -284,7 +326,7 @@
284 </div> 326 </div>
285</div> 327</div>
286 328
287<div class="container-fluid c_acronym"> 329<div class="container-fluid c_acronym link-white">
288 <div class="container"> 330 <div class="container">
289 <div class="row"> 331 <div class="row">
290 <div class="container text-center"> 332 <div class="container text-center">
@@ -333,7 +375,7 @@
333<div class="container"> 375<div class="container">
334 <div class="row"> 376 <div class="row">
335 <div class="container text-center"> 377 <div class="container text-center">
336 <h2>{{ _("News") }}</h2> 378 <h1>{{ _("News") }}<a name="news"></a></h1>
337 </div> 379 </div>
338 </div> 380 </div>
339 <div class="row"> 381 <div class="row">
diff --git a/template/install-on-archpi.html.j2 b/template/install-on-archpi.html.j2
new file mode 100644
index 00000000..fccf46e3
--- /dev/null
+++ b/template/install-on-archpi.html.j2
@@ -0,0 +1,130 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3<article class="container">
4
5 <header>
6 <h1>{{ _("Tutorial: GNUnet on Archlinux/Pi") }}</h1>
7 </header>
8
9
10 Welcome to this GNUnet tutorial for Archlinux on a Raspberry Pi 3. If you want
11 to run a GNUnet node on a separte system, permanently online, with low energy
12 consumption, this might be the thing for you. This tutorial shows you how to
13 install, run, and operate it.
14
15 <h2>{{ _("Requirements") }}</h2>
16
17 <p>First you need the hardware. This tutorial works with a Raspberry Pi 3. The
18 other Pi versions I haven't tested, but they should probably work, too. To
19 install Archlinux on the Pi3, follow the instructions from <a
20 href="https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3">archlinuxarm.org</a>.</p>
21
22 <p>That was easy, right? Our goal now is to build GNUnet from source. So, let's
23 install the tools for building new software.</p>
24
25 <p><code>
26 > sudo pacman -S base-devel
27 </code></p>
28
29 <p>Now we can continue to install the following Archlinux dependencies to
30 compile GNUnet on our Pi.</p>
31
32 <p><code>
33 $ pacman -Su libmicrohttpd libgcrypt gnurl libunistring gnutls libidn
34 libextractor openssl libltdl sqlite texinfo which gettext zlib
35 pkg-config git miniupnpc libextractor jansson nim
36 </code></p>
37
38 <h2>{{ _("Get the Source Code") }}</h2>
39
40 <p>We are getting closer. Download the GNUnet source code which we will build
41 in the next step:<p>
42
43 <p><code>
44 > git clone https://gnunet.org/git/gnunet.git<br>
45 </code></p>
46
47 <p>Now it's time to compile GNUnet.</p>
48
49 <p><code>
50 > cd gnunet<br>
51 > ./bootstrap # Run this to generate the configure files.<br>
52 > ./configure # Use --help to see the various flags available to you.<br>
53 > make -j$(nproc || echo -n 1)<br>
54 > sudo make install<br>
55 </code></p>
56
57 <p>Congrats! GNUnet is now installed!</p>
58
59 <h2>{{ _("Run") }}</h2>
60
61 <p>By default GNUnet looks in our home directory for the file
62 ~/.config/gnunet.conf. We can start with an empty file for now:</p>
63
64 <p><code>
65 > touch ~/.config/gnunet.conf
66 </code></p>
67 <br />
68 <p>
69 It's reccomended that you increase your bandwidth restrictions
70 from the acutely low defaults. The example below sets the WAN
71 and LAN limits to the value "unlimited".
72 </p>
73 <br />
74 <code>
75 $ gnunet-config -s ats -o WAN_QUOTA_IN -V unlimited<br />
76 $ gnunet-config -s ats -o WAN_QUOTA_OUT -V unlimited<br />
77 $ gnunet-config -s ats -o LAN_QUOTA_IN -V unlimited<br />
78 $ gnunet-config -s ats -o LAN_QUOTA_OUT -V unlimited<br />
79 </code>
80 <br />
81 <p>Now we can start it with the commandline tool gnunet-arm (Automatic Restart
82 Manager).</p>
83
84 <p><code>
85 > gnunet-arm -s
86 </code></p>
87
88 <p>It starts the default GNUnet services. We can list them with the -I option:</p>
89
90 <p><code>
91 > gnunet-arm -I<br>
92 Running services:<br>
93 ats (gnunet-service-ats)<br>
94 revocation (gnunet-service-revocation)<br>
95 set (gnunet-service-set)<br>
96 nat (gnunet-service-nat)<br>
97 transport (gnunet-service-transport)<br>
98 peerstore (gnunet-service-peerstore)<br>
99 hostlist (gnunet-daemon-hostlist)<br>
100 identity (gnunet-service-identity)<br>
101 namecache (gnunet-service-namecache)<br>
102 peerinfo (gnunet-service-peerinfo)<br>
103 datastore (gnunet-service-datastore)<br>
104 zonemaster (gnunet-service-zonemaster)<br>
105 zonemaster-monitor (gnunet-service-zonemaster-monitor)<br>
106 nse (gnunet-service-nse)<br>
107 cadet (gnunet-service-cadet)<br>
108 dht (gnunet-service-dht)<br>
109 core (gnunet-service-core)<br>
110 gns (gnunet-service-gns)<br>
111 statistics (gnunet-service-statistics)<br>
112 topology (gnunet-daemon-topology)<br>
113 fs (gnunet-service-fs)<br>
114 namestore (gnunet-service-namestore)<br>
115 vpn (gnunet-service-vpn)<br>
116 </code></p>
117
118 <p>For stopping GNUnet again we can use the -e option.</p>
119
120 <p><code>
121 > gnunet-arm -e
122 </code></p>
123
124 <h2>{{ _("Make sure, it works!") }}</h2>
125 <p>
126 Please head over here: <a href="https://gnunet.org/en/use.html">Use!</a>
127 <p>
128
129</article>
130{% endblock body_content %}
diff --git a/template/tutorial-debian9.html.j2 b/template/install-on-debian9.html.j2
index 74bf7f57..338fa925 100644
--- a/template/tutorial-debian9.html.j2
+++ b/template/install-on-debian9.html.j2
@@ -1,11 +1,12 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<div class="container"> 3<article class="container">
4 4
5 <h2>{{ _("Tutorial: GNUnet on Debian 9") }}</h2> 5 <header>
6 6 <h1>{{ _("Tutorial: GNUnet on Debian 9") }}</h1>
7 <h3>{{ _("Introduction") }}</h3> 7 </header>
8 8
9 <h2>{{ _("Introduction") }}</h2>
9 <p> 10 <p>
10 Welcome to the hopefully painless GNUnet tutorial for Debian 9! It provides 11 Welcome to the hopefully painless GNUnet tutorial for Debian 9! It provides
11 very concrete instructions on how to compile, install and configure a current 12 very concrete instructions on how to compile, install and configure a current
@@ -25,7 +26,7 @@
25 Now let's start! 26 Now let's start!
26 </p> 27 </p>
27 28
28 <h3>{{ _("Requirements") }}</h3> 29 <h2>{{ _("Requirements") }}</h2>
29 30
30 <p> 31 <p>
31 First let's install the following Debian 9 packages to use GNUnet 32 First let's install the following Debian 9 packages to use GNUnet
@@ -41,7 +42,7 @@
41 openssl libnss3-tools libopus-dev libpulse-dev libogg-dev 42 openssl libnss3-tools libopus-dev libpulse-dev libogg-dev
42 </code> 43 </code>
43 44
44 <h3>{{ _("Make an installation directory") }}</h3> 45 <h2>{{ _("Make an installation directory") }}</h2>
45 46
46 <p> 47 <p>
47 Next we create a directory in our home directory where we store 48 Next we create a directory in our home directory where we store
@@ -55,7 +56,7 @@
55 $ mkdir ~/gnunet_installation 56 $ mkdir ~/gnunet_installation
56 </code> 57 </code>
57 58
58 <h3>{{ _("Get the source code") }}</h3> 59 <h2>{{ _("Get the source code") }}</h2>
59 60
60 <p> 61 <p>
61 We download the GNUnet source code using git. On Debian 9 we need the 62 We download the GNUnet source code using git. On Debian 9 we need the
@@ -74,7 +75,7 @@
74 $ git clone --depth 1 https://gnunet.org/git/libmicrohttpd.git 75 $ git clone --depth 1 https://gnunet.org/git/libmicrohttpd.git
75 </code> 76 </code>
76 77
77 <h3>{{ _("Compile and Install") }}</h3> 78 <h2>{{ _("Compile and Install") }}</h2>
78 79
79 80
80 <p> 81 <p>
@@ -99,11 +100,12 @@
99 production version. 100 production version.
100 </p> 101 </p>
101 102
102 <h4>{{ _("Option 1: GNUnet for production / usage") }}</h4> 103 <h3>{{ _("Option 1: GNUnet for production / usage") }}</h3>
103 104
104 <code> 105 <code>
105 $ cd ~/gnunet_installation/gnunet<br> 106 $ cd ~/gnunet_installation/gnunet<br>
106 $ ./bootstrap<br> 107 $ ./bootstrap<br>
108 $ export GNUNET_PREFIX=/usr/local # for example, other locations possible
107 $ ./configure --prefix=$GNUNET_PREFIX --disable-documentation --with-microhttpd=/opt/libmicrohttpd<br> 109 $ ./configure --prefix=$GNUNET_PREFIX --disable-documentation --with-microhttpd=/opt/libmicrohttpd<br>
108 $ sudo addgroup gnunetdns<br> 110 $ sudo addgroup gnunetdns<br>
109 $ sudo adduser --system --group --disabled-login --home /var/lib/gnunet gnunet<br> 111 $ sudo adduser --system --group --disabled-login --home /var/lib/gnunet gnunet<br>
@@ -111,19 +113,18 @@
111 $ sudo make install 113 $ sudo make install
112 </code> 114 </code>
113 115
114 <h4>{{ _("Option 2: GNUnet for development") }}</h4> 116 <h3>{{ _("Option 2: GNUnet for development") }}</h3>
115 117
116 <code> 118 <code>
117 $ cd ~/gnunet_installation/gnunet<br> 119 $ cd ~/gnunet_installation/gnunet<br>
118 $ ./bootstrap<br> 120 $ ./bootstrap<br>
119 $ export GNUNET_PREFIX=/usr<br>
120 $ export CFLAGS="-g -Wall -O0"<br> 121 $ export CFLAGS="-g -Wall -O0"<br>
121 $ ./configure --prefix=$GNUNET_PREFIX --disable-documentation --enable-logging=verbose --with-microhttpd=/opt/libmicrohttpd<br> 122 $ ./configure --prefix=$GNUNET_PREFIX --disable-documentation --enable-logging=verbose --with-microhttpd=/opt/libmicrohttpd<br>
122 $ make -j$(nproc || echo -n 1)<br> 123 $ make -j$(nproc || echo -n 1)<br>
123 $ sudo make install 124 $ sudo make install
124 </code> 125 </code>
125 126
126 <h4>{{ _("Option 3: gnunet-gtk") }}</h4> 127 <h3>{{ _("Option 3: gnunet-gtk") }}</h3>
127 <p> 128 <p>
128 Installing the Gtk+-based graphical user 129 Installing the Gtk+-based graphical user
129 interface can be done on top of either the production or development installation. 130 interface can be done on top of either the production or development installation.
@@ -132,7 +133,6 @@
132 $ sudo apt install libgtk-3-dev libgladeui-dev libunique-dev libqrencode-dev 133 $ sudo apt install libgtk-3-dev libgladeui-dev libunique-dev libqrencode-dev
133 $ cd ~/gnunet_installation/gnunet-gtk<br> 134 $ cd ~/gnunet_installation/gnunet-gtk<br>
134 $ ./bootstrap<br> 135 $ ./bootstrap<br>
135 $ export GNUNET_PREFIX=/usr<br>
136 $ export CFLAGS="-g -Wall -O0"<br> 136 $ export CFLAGS="-g -Wall -O0"<br>
137 $ ./configure --prefix=$GNUNET_PREFIX --with-gnunet=$GNUNET_PREFIX<br> 137 $ ./configure --prefix=$GNUNET_PREFIX --with-gnunet=$GNUNET_PREFIX<br>
138 $ make -j$(nproc || echo -n 1)<br> 138 $ make -j$(nproc || echo -n 1)<br>
@@ -140,7 +140,7 @@
140 </code> 140 </code>
141 141
142<!-- 142<!--
143 <h4>{{ _("Install GNUnet plugin for name resolution") }}</h4> 143 <h3>{{ _("Install GNUnet plugin for name resolution") }}</h3>
144 <p> 144 <p>
145 So now it gets a bit nasty. It's not so bad. All we have to do 145 So now it gets a bit nasty. It's not so bad. All we have to do
146 is copy a file and edit another one. The file we need to copy 146 is copy a file and edit another one. The file we need to copy
@@ -194,7 +194,7 @@
194 <p>That's it. It wasn't that nasty, was it?</p> 194 <p>That's it. It wasn't that nasty, was it?</p>
195--> 195-->
196 196
197 <h3>{{ _("Configuration") }}</h3> 197 <h2>{{ _("Configuration") }}</h2>
198 198
199 <p> 199 <p>
200 Congratulations! GNUnet is now installed! Before we start it we 200 Congratulations! GNUnet is now installed! Before we start it we
@@ -270,249 +270,12 @@
270 $ gnunet-arm -e 270 $ gnunet-arm -e
271 </code> 271 </code>
272 272
273 273 <h2>{{ _("Use GNUnet!") }}</h2>
274 <h3>{{ _("Make sure it works") }}</h3>
275
276 <p>
277 Let's try out some of GNUnet's use cases. Some should be done
278 before others:
279 </p>
280
281 <ul>
282 <li>filesharing</li>
283 <li>A simple chat using CADET</li>
284 <li>Name resolution using GNS on the command line</li>
285 <li>Name resolution using GNS with a browser (do it on the command line first)</li>
286 <li>Serving a website using VPN (do name resolution with a browser first)</li>
287 </ul>
288
289 <h4>{{ _("filesharing") }}</h4>
290
291 <p>
292 Let's publish a file in the GNUnet filesharing network. We use the keywords
293 ("commons" and "state") so other people will be able to search for the file.
294 </p>
295
296 <p>
297 We can choose any file and describe it with meaningful keywords (using the
298 `-k` command line option).
299 </p>
300
301 <code>
302 $ gnunet-publish -k commons -k state ostrom.pdf<br>
303 Publishing `/home/myself/ostrom.pdf' done.<br>
304 URI is `gnunet://fs/chk/M57SXDJ72EWS25CT6307KKJ8K0GCNSPTAZ649NA1NS10MJB4A1GZ9EN4Y02KST9VA5BHE8B335RPXQVBWVZ587Y83WQ7J3DHMBX30Q8.DHNGBN4CB2DBX1QRZ1R0B1Q18WTEAK4R94S9D57C9JMJJ3H7SSQDCV4D1218C4S2VP085AMQQSMG18FCP6NQMZQZJ91XR5NBX7YF0V0.42197237'.
305 </code>
306
307
308 <p>Finding the file by keyword works with `gnunet-search`.</p>
309
310 <code>
311 $ gnunet-search commons<br>
312 #1:<br>
313 gnunet-download -o "ostrom.pdf" gnunet://fs/chk/M57SXDJ72EWS25CT6307KKJ8K0GCNSPTAZ649NA1NS10MJB4A1GZ9EN4Y02KST9VA5BHE8B335RPXQVBWVZ587Y83WQ7J3DHMBX30Q8.DHNGBN4CB2DBX1QRZ1R0B1Q18WTEAK4R94S9D57C9JMJJ3H7SSQDCV4D1218C4S2VP085AMQQSMG18FCP6NQMZQZJ91XR5NBX7YF0V0.42197237
314 </code>
315
316 <p> 274 <p>
317 It gives us the command line call to download the file (and store it as 275 Please head over here: <a href="https://gnunet.org/en/use.html">Use!</a>
318 ostrom.pdf)!
319 </p>
320
321 <h4>{{ _("CADET (and Chat)") }}</h4>
322
323 <p> 276 <p>
324 We can use the `gnunet-cadet` command line tool to open a port and from
325 another machine connect to this port and chat or transfer data. First we need
326 our *peer ID* of the GNUnet peer opening the port.
327 </p>
328 277
329 <code> 278 <h2>{{ _("Uninstall GNUnet and its dependencies") }}</h2>
330 $ gnunet-peerinfo -s<br>
331 I am peer `P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG'.
332 </code>
333
334
335 <p>
336 Now we open the port (it can be any string!):
337 </p>
338
339 <code>
340 $ gnunet-cadet -o my-secret-port
341 </code>
342
343 <p>
344 On the other machine we can connect using the peer ID and the port
345 and start chatting!
346 </p>
347
348 <code>
349 $ gnunet-cadet P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG my-secret-port
350 </code>
351
352 <h4>{{ _("Name resolution using GNS on the command line") }}</h4>
353
354 <p>
355 GNS is the GNU name service, a fully decentralized alternatice to
356 DNS. We'll publish an IP address in a GNS record try to resolve it
357 on the command line. First we need an identity which is the
358 equivalent to a zone in DNS. We'll call it "myself" and create it
359 using the `gnunet-identity` command line tool. Instead of "myself"
360 you can surely use your nick or any other name.
361 </p>
362
363 <code>
364 $ gnunet-identity -C myself
365 </code>
366
367 <p>
368 We can check if it worked using the same tool. We expect the name
369 of our identity and the corresponding public key to be
370 displayed.
371 </p>
372
373 <code>
374 $ gnunet-identity -d<br>
375 myself - HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG
376 </code>
377
378 <p>
379 Now we add a public `A` record to our zone. It has the name "ccc", a value
380 of "195.54.164.39" and it expires after one day.
381 </p>
382
383 <code>
384 $ gnunet-namestore -z myself -a -e "1 d" -p -t A -n ccc -V 195.54.164.39
385 </code>
386
387 <p>
388 Now we can query that record using the command line tool `gnunet-gns`.
389 </p>
390
391 <code>
392 $ gnunet-gns -t A -u ccc.myself<br>
393 ccc.myself:<br>
394 Got `A' record: 195.54.164.39
395 </code>
396
397 <p>
398 So it worked! But only resolving our own records is boring. So we
399 can give our identity (the public key of it to be precise) to
400 someone else so they can try to resolve our records, too. The
401 other person (Bob) has to add it to his namestore like this:
402 <p>
403
404 <code>
405 $ gnunet-namestore -z myself -a -e never -p -t PKEY -n alice -V HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG
406 </code>
407
408 <p>
409 Our identity in Bobs namestore is a public record (-p) and never
410 expires (-e never). Now Bob (let's assume he has called his identity
411 myself, too) should be able to resolve our "ccc" record, too!
412 </p>
413
414 <code>
415 $ gnunet-gns -t A -u ccc.alice.myself<br>
416 ccc.alice.myself:<br>
417 Got `A' record: 195.54.164.39
418 </code>
419
420 <p>
421 It can continue like this. A friend of Bob would be able to
422 resolve our records too because Bob published our identity in a
423 public record. Bobs friend would simply use "ccc.alice.bob.myself"
424 to resolve our "ccc" record.
425 </p>
426
427
428 <h4>{{ _("Name resolution using GNS with a browser") }}</h4>
429
430 <p>
431 In the previous use case "Name resolution using GNS on the
432 command line" we got an idea about what GNS is about, but now
433 let's use it with a browser, to make it actually useful. Currently
434 Firefox and Chromium are known to work.
435 </p>
436
437 <p>
438 Many websites enforce HTTPS and thus provide certificates for
439 their hostnames (and not our GNS names). Browsers don't like wrong
440 hostnames in certificates and will present error messages. So
441 GNUnet has to trick them by generating own certificates for our
442 GNS names. This means we need to create our own certificate
443 authority and tell our browser about it. Luckily there's a script
444 for it:
445 </p>
446
447 <code>
448 $ gnunet-gns-proxy-setup-ca
449 </code>
450
451 <p>
452 After executing this script the Browser has to be restarted.
453 </p>
454
455 <p>
456 GNUnet provides a proxy service (gnunet-gns-proxy) that the
457 browser can send DNS and HTTP traffic to. It will try to resolve
458 names with GNS first and forward the rest of the DNS traffic to
459 the system's DNS resolver. It will also take care of the HTTP
460 traffic, so the browser gets valid certificates and the web server
461 will not be confused by our GNS hostnames. Our GNS namestore
462 doesn't know about any DNS hostnames yet, so we have to store
463 them, too. For our "ccc" A record, we have to store a LEHO (legacy
464 hostname) record, too. It must contain the website's original DNS
465 hostname:
466 </p>
467
468 <code>
469 $ gnunet-namestore -z myself -a -e "1 d" -p -t LEHO -n ccc -V www.ccc.de
470 </code>
471
472 <p>
473 Now let's start gnunet-gns-proxy.
474 </p>
475
476 <code>
477 $ /usr/lib/gnunet/libexec/gnunet-gns-proxy
478 </code>
479
480 <p>
481 Our browser has to be configured so it uses our proxy. In Firefox
482 we have to set these options under "about:config":
483 </p>
484
485 <code>
486 network.proxy.socks: localhost<br>
487 network.proxy.socks_port: 7777<br>
488 network.proxy.socks_remote_dns true<br>
489 network.proxy.type: 1
490 </code>
491
492 <p>
493 To tell Chromium to use the proxy, it has to be started with the
494 "--proxy-server" command line option:
495 </p>
496
497 <code>
498 $ chromium --proxy-server="socks5://127.0.0.1:7777"
499 </code>
500
501 <p>
502 Now we should be able to resolve our GNS names in the browser! We
503 just have to type "https://ccc.myself" into the address bar. If
504 our friend Bob prepared his system, too, he can resolve our record
505 by typing "ccc.alice.myself".
506 </p>
507
508
509 <h4>{{ _("VPN") }}</h4>
510
511 <p>
512 TBD
513 </p>
514
515 <h3>{{ _("Uninstall GNUnet and its dependencies") }}</h3>
516 279
517 <code> 280 <code>
518 $ cd ~/gnunet_installation/gnunet<br> 281 $ cd ~/gnunet_installation/gnunet<br>
@@ -528,15 +291,9 @@
528 $ sudo rm /lib/$(uname -m)-linux-gnu/libnss_gns.so.2 291 $ sudo rm /lib/$(uname -m)-linux-gnu/libnss_gns.so.2
529 </code> 292 </code>
530 293
531 <h3>{{ _("Appendix A: Optional GNUnet features") }}</h3> 294 <h2>{{ _("Troubleshooting") }}</h2>
532
533 <p>
534 TBD
535 </p>
536 295
537 <h3>{{ _("Troubleshooting") }}</h3> 296 <h3>{{ _("You can't reach other people's nodes") }}</h3>
538
539 <h4>{{ _("You can't reach other people's nodes") }}</h4>
540 297
541 <p> 298 <p>
542 Should our computer not have reached the open GNUnet network automatically, 299 Should our computer not have reached the open GNUnet network automatically,
@@ -565,7 +322,6 @@
565 gnunet-peerinfo -p <string> 322 gnunet-peerinfo -p <string>
566 </code> 323 </code>
567 324
568
569 <p> 325 <p>
570 Now our GNUnet nodes can attempt reaching each other directly. This may 326 Now our GNUnet nodes can attempt reaching each other directly. This may
571 still fail due to NAT traversal issues. 327 still fail due to NAT traversal issues.
@@ -573,7 +329,7 @@
573 329
574 330
575<!-- 331<!--
576 <h4>{{ _("OMG you guys broke my internet") }}</h4> 332 <h3>{{ _("OMG you guys broke my internet") }}</h3>
577 333
578 <p> 334 <p>
579 We can replace `/etc/nsswitch.conf` with the backup we made earlier 335 We can replace `/etc/nsswitch.conf` with the backup we made earlier
@@ -586,5 +342,5 @@
586 </code> 342 </code>
587--> 343-->
588 344
589</div> 345</article>
590{% endblock body_content %} 346{% endblock body_content %}
diff --git a/template/tutorial-macos.html.j2 b/template/install-on-macos.html.j2
index 22ede95f..7a56441f 100644
--- a/template/tutorial-macos.html.j2
+++ b/template/install-on-macos.html.j2
@@ -1,8 +1,11 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<div class="container"> 3<article class="container">
4
5 <header>
6 <h1>{{ _("Tutorial: GNUnet on macOS 10.14 (Mojave)") }}</h1>
7 </header>
4 8
5 <h2>{{ _("Tutorial: GNUnet on macOS 10.14 (Mojave)") }}</h2>
6 9
7 <p> 10 <p>
8 Welcome to the hopefully painless GNUnet tutorial for macOS Mojave! It provides 11 Welcome to the hopefully painless GNUnet tutorial for macOS Mojave! It provides
@@ -11,14 +14,14 @@
11 developers, who want to get in touch with GNUnet for the first time. 14 developers, who want to get in touch with GNUnet for the first time.
12 </p> 15 </p>
13 16
14 <h3>{{ _("Requirements") }}</h3> 17 <h2>{{ _("Requirements") }}</h2>
15 18
16 <p> 19 <p>
17 As a bare minimum, we recommend you install <a href="https://brew.sh">homebrew</a> and <a href="https://developer.apple.com/xcode/">XCode</a> before reading any further. 20 As a bare minimum, we recommend you install <a href="https://brew.sh">homebrew</a> and <a href="https://developer.apple.com/xcode/">XCode</a> before reading any further.
18 </p> 21 </p>
19 22
20 23
21 <h3>{{ _("Installation") }}</h3> 24 <h2>{{ _("Installation") }}</h2>
22 <p> 25 <p>
23 GNUnet is available through homebrew: 26 GNUnet is available through homebrew:
24 </p> 27 </p>
@@ -31,12 +34,12 @@
31 34
32 <p>And you're done!. <br/> 35 <p>And you're done!. <br/>
33 GNUnet has a number of services and features. 36 GNUnet has a number of services and features.
34 Please check <a href="https://docs.gnunet.org">our documentation</a> 37 Please check <a href="https://docs.gnunet.org/">our documentation</a>
35 to learn how to use them. If you find anything odd or bugs, please 38 to learn how to use them. If you find anything odd or bugs, please
36 <a href="https://gnunet.org/bugs">let us know</a>. 39 <a href="https://gnunet.org/bugs">let us know</a>.
37 </p> 40 </p>
38 41
39 <h3>{{_("First steps")}}</h3> 42 <h2>{{_("First steps")}}</h2>
40 <p> 43 <p>
41 Congratulations! GNUnet is now installed! Before starting it you 44 Congratulations! GNUnet is now installed! Before starting it you
42 may create a configuration file. By default GNUnet looks in 45 may create a configuration file. By default GNUnet looks in
@@ -116,7 +119,7 @@ vpn (gnunet-service-vpn)
116 </code> 119 </code>
117 </p> 120 </p>
118 121
119 <h3>{{ _("Alternative: Installation from source") }}</h3> 122 <h2>{{ _("Alternative: Installation from source") }}</h2>
120 123
121 <p> 124 <p>
122 The following instructions are only really interesting for developers 125 The following instructions are only really interesting for developers
@@ -141,7 +144,7 @@ vpn (gnunet-service-vpn)
141 </code> 144 </code>
142 </p> 145 </p>
143 146
144 <h4>{{ _("Get the source code") }}</h4> 147 <h3>{{ _("Get the source code") }}</h3>
145 <p> 148 <p>
146 <code> 149 <code>
147 $ cd ~<br> 150 $ cd ~<br>
@@ -149,7 +152,7 @@ vpn (gnunet-service-vpn)
149 </code> 152 </code>
150 </p> 153 </p>
151 154
152 <h4>{{ _("Compile and Install") }}</h4> 155 <h3>{{ _("Compile and Install") }}</h3>
153 156
154 157
155 <p> 158 <p>
@@ -161,7 +164,7 @@ vpn (gnunet-service-vpn)
161 production version. 164 production version.
162 </p> 165 </p>
163 166
164 <h5>{{ _("Option 1: GNUnet for production / usage") }}</h5> 167 <h4>{{ _("Option 1: GNUnet for production / usage") }}</h4>
165 168
166 <p> 169 <p>
167 <code> 170 <code>
@@ -194,12 +197,12 @@ vpn (gnunet-service-vpn)
194 </code> 197 </code>
195 </p> 198 </p>
196 199
197 <h5>{{ _("Option 2: GNUnet experimental") }}</h5> 200 <h4>{{ _("Option 2: GNUnet experimental") }}</h4>
198 201
199 <p> 202 <p>
200 Perform the same steps as for Option 1, but add the configure flat '--enable-experimental' 203 Perform the same steps as for Option 1, but add the configure flat '--enable-experimental'
201 </p> 204 </p>
202 205
203 206
204</div> 207</article>
205{% endblock body_content %} 208{% endblock body_content %}
diff --git a/template/tutorial-netbsd.html.j2 b/template/install-on-netbsd.html.j2
index 2d582989..adf15033 100644
--- a/template/tutorial-netbsd.html.j2
+++ b/template/install-on-netbsd.html.j2
@@ -1,8 +1,10 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<div class="container"> 3<article class="container">
4 4
5 <h2>{{ _("Tutorial: GNUnet on NetBSD 8.0 CURRENT") }}</h2> 5 <header>
6 <h1>{{ _("Tutorial: GNUnet on NetBSD 8.0 CURRENT") }}</h1>
7 </header>
6 8
7 <p> 9 <p>
8 Welcome to the GNUnet tutorial for NetBSD! 10 Welcome to the GNUnet tutorial for NetBSD!
@@ -14,7 +16,7 @@
14 developers, who want to get in touch with GNUnet for the first time. 16 developers, who want to get in touch with GNUnet for the first time.
15 </p> 17 </p>
16 18
17 <h3>{{ _("Requirements") }}</h3> 19 <h2>{{ _("Requirements") }}</h2>
18 20
19 <p> 21 <p>
20 As a bare minimum, we recommend you install <a href="http://pkgsrc.org">pkgsrc</a>. This tutorial assumes you have the CURRENT version checked out. Additionally you might want to install <code>devel/git-base</code> and git clone <a href="http://pkgsrc.org/wip/">pkgsrc-wip</a> into the <code>wip</code> folder in your pkgsrc folder: 22 As a bare minimum, we recommend you install <a href="http://pkgsrc.org">pkgsrc</a>. This tutorial assumes you have the CURRENT version checked out. Additionally you might want to install <code>devel/git-base</code> and git clone <a href="http://pkgsrc.org/wip/">pkgsrc-wip</a> into the <code>wip</code> folder in your pkgsrc folder:
@@ -25,7 +27,7 @@
25 $ git clone git://wip.pkgsrc.org/pkgsrc-wip.git wip 27 $ git clone git://wip.pkgsrc.org/pkgsrc-wip.git wip
26 </code> 28 </code>
27 </p> 29 </p>
28 <h3>{{ _("Installation") }}</h3> 30 <h2>{{ _("Installation") }}</h2>
29 <p> 31 <p>
30 Note: $ stands for commands run as unprivileged user, # for commands run as root user. 32 Note: $ stands for commands run as unprivileged user, # for commands run as root user.
31 </p> 33 </p>
@@ -89,7 +91,7 @@
89 <p> 91 <p>
90 And you're done!.<br> 92 And you're done!.<br>
91 GNUnet has a number of services and features. 93 GNUnet has a number of services and features.
92 Please check <a href="https://docs.gnunet.org">our documentation</a> 94 Please check <a href="https://docs.gnunet.org/">our documentation</a>
93 to learn how to use them. If you find anything odd or bugs, please 95 to learn how to use them. If you find anything odd or bugs, please
94 <a href="https://bugs.gnunet.org">let us know</a>. 96 <a href="https://bugs.gnunet.org">let us know</a>.
95 </p> 97 </p>
@@ -97,7 +99,7 @@
97 Note that the rc.d file which is installed is not yet functional. 99 Note that the rc.d file which is installed is not yet functional.
98 </p> 100 </p>
99 101
100 <h3>{{_("First steps")}}</h3> 102 <h2>{{_("First steps")}}</h2>
101 <p> 103 <p>
102 Congratulations! GNUnet is now installed! Before starting it you 104 Congratulations! GNUnet is now installed! Before starting it you
103 may create a configuration file. By default GNUnet looks in 105 may create a configuration file. By default GNUnet looks in
@@ -177,7 +179,7 @@
177 </code> 179 </code>
178 </p> 180 </p>
179 181
180 <h3>{{ _("Alternative: Installation from source") }}</h3> 182 <h2>{{ _("Alternative: Installation from source") }}</h2>
181 183
182 <p> 184 <p>
183 The following instructions are only really interesting for developers 185 The following instructions are only really interesting for developers
@@ -219,7 +221,7 @@
219 </ul> 221 </ul>
220 </p> 222 </p>
221 223
222 <h4>{{ _("Get the source code") }}</h4> 224 <h3>{{ _("Get the source code") }}</h3>
223 <p> 225 <p>
224 <code> 226 <code>
225 $ cd ~<br> 227 $ cd ~<br>
@@ -227,7 +229,7 @@
227 </code> 229 </code>
228 </p> 230 </p>
229 231
230 <h4>{{ _("Compile and Install") }}</h4> 232 <h3>{{ _("Compile and Install") }}</h3>
231 <p> 233 <p>
232 You have a choice between two options: 234 You have a choice between two options:
233 build the *production version* or *development version*. If 235 build the *production version* or *development version*. If
@@ -277,5 +279,5 @@
277 <p> 279 <p>
278 This allows you to get more verbose logs when you export GNUNET_FORCE_LOG=";;;;DEBUG" before you run tests. 280 This allows you to get more verbose logs when you export GNUNET_FORCE_LOG=";;;;DEBUG" before you run tests.
279 </p> 281 </p>
280</div> 282</article>
281{% endblock body_content %} 283{% endblock body_content %}
diff --git a/template/tutorial-ubuntu1804.html.j2 b/template/install-on-ubuntu1804.html.j2
index 32d4dc91..fb218110 100644
--- a/template/tutorial-ubuntu1804.html.j2
+++ b/template/install-on-ubuntu1804.html.j2
@@ -1,12 +1,12 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<article class="container"> 3<article class="container">
4<!--<article> --> 4
5<header> 5 <header>
6 <h2>{{ _("Tutorial: GNUnet on Ubuntu 18.04") }}</h2> 6 <h1>{{ _("Tutorial: GNUnet on Ubuntu 18.04") }}</h1>
7</header> 7 </header>
8<section> 8
9 <h3>{{ _("Introduction") }}</h3> 9 <h2>{{ _("Introduction") }}</h2>
10 <p> 10 <p>
11 Welcome to the hopefully painless GNUnet tutorial for Ubuntu 18.04! 11 Welcome to the hopefully painless GNUnet tutorial for Ubuntu 18.04!
12 It provides very concrete instructions on how to compile, install 12 It provides very concrete instructions on how to compile, install
@@ -23,9 +23,7 @@
23 <p> 23 <p>
24 Now let's start! 24 Now let's start!
25 </p> 25 </p>
26</section> 26 <h2>{{ _("Requirements") }}</h2>
27<section>
28 <h3>{{ _("Requirements") }}</h3>
29 <p> 27 <p>
30 First let's install the following Ubuntu 18.04 packages to use 28 First let's install the following Ubuntu 18.04 packages to use
31 GNUnet painlessly. Optional dependencies are listed in Appendix 29 GNUnet painlessly. Optional dependencies are listed in Appendix
@@ -39,9 +37,8 @@
39 openssl libnss3-tools libmicrohttpd-dev libopus-dev libpulse-dev \<br> 37 openssl libnss3-tools libmicrohttpd-dev libopus-dev libpulse-dev \<br>
40 libogg-dev 38 libogg-dev
41 </code> 39 </code>
42</section> 40
43<section> 41 <h2>{{ _("Make an installation directory") }}</h2>
44 <h3>{{ _("Make an installation directory") }}</h3>
45 <p> 42 <p>
46 Next we create a directory in our home directory where we store 43 Next we create a directory in our home directory where we store
47 the source code later. We should keep this directory after 44 the source code later. We should keep this directory after
@@ -52,9 +49,8 @@
52 <code> 49 <code>
53 $ mkdir ~/gnunet_installation 50 $ mkdir ~/gnunet_installation
54 </code> 51 </code>
55</section> 52
56<section> 53 <h2>{{ _("Get the source code") }}</h2>
57 <h3>{{ _("Get the source code") }}</h3>
58 <p> 54 <p>
59 We download the GNUnet source code using git. 55 We download the GNUnet source code using git.
60 </p> 56 </p>
@@ -62,9 +58,7 @@
62 $ cd ~/gnunet_installation<br> 58 $ cd ~/gnunet_installation<br>
63 $ git clone --depth 1 https://gnunet.org/git/gnunet.git<br> 59 $ git clone --depth 1 https://gnunet.org/git/gnunet.git<br>
64 </code> 60 </code>
65</section> 61 <h2>{{ _("Compile and Install") }}</h2>
66<section>
67 <h3>{{ _("Compile and Install") }}</h3>
68 <p> 62 <p>
69 Installing GNUnet is not hard. We have two options: 63 Installing GNUnet is not hard. We have two options:
70 installing a *production version* and installing a *development version*. If 64 installing a *production version* and installing a *development version*. If
@@ -73,9 +67,7 @@
73 debug symbols that can be displayed with a debugger). Otherwise choose the 67 debug symbols that can be displayed with a debugger). Otherwise choose the
74 production version. 68 production version.
75 </p> 69 </p>
76</section> 70 <h3>{{ _("Option 1: GNUnet for production / usage") }}</h3>
77<section>
78 <h4>{{ _("Option 1: GNUnet for production / usage") }}</h4>
79 <code> 71 <code>
80 $ cd ~/gnunet_installation/gnunet<br> 72 $ cd ~/gnunet_installation/gnunet<br>
81 $ ./bootstrap<br> 73 $ ./bootstrap<br>
@@ -85,14 +77,11 @@
85 $ make -j$(nproc || echo -n 1)<br> 77 $ make -j$(nproc || echo -n 1)<br>
86 $ sudo make install 78 $ sudo make install
87 </code> 79 </code>
88</section> 80 <h3>{{ _("Option 2: GNUnet for development") }}</h3>
89<section>
90 <h4>{{ _("Option 2: GNUnet for development") }}</h4>
91 81
92 <code> 82 <code>
93 $ cd ~/gnunet_installation/gnunet<br> 83 $ cd ~/gnunet_installation/gnunet<br>
94 $ ./bootstrap<br> 84 $ ./bootstrap<br>
95 $ export GNUNET_PREFIX=/usr<br>
96 $ export CFLAGS="-g -Wall -O0"<br> 85 $ export CFLAGS="-g -Wall -O0"<br>
97 $ ./configure --prefix=$GNUNET_PREFIX --disable-documentation --enable-logging=verbose <br> 86 $ ./configure --prefix=$GNUNET_PREFIX --disable-documentation --enable-logging=verbose <br>
98 $ make -j$(nproc || echo -n 1)<br> 87 $ make -j$(nproc || echo -n 1)<br>
@@ -100,7 +89,7 @@
100 </code> 89 </code>
101 90
102 <!-- 91 <!--
103<h4>{{ _("Install GNUnet plugin for name resolution") }}</h4> 92<h3>{{ _("Install GNUnet plugin for name resolution") }}</h3>
104 So now it gets a bit nasty. It's not so bad. All we have to do is copy a file and edit another one. The file we need to copy is GNUnet's plugin for the Name Service Switch (NSS) in unix systems. Different unixes expect it in different locations and GNUnet's build system does not try to guess. On Ubuntu 18.04 we have to do 93 So now it gets a bit nasty. It's not so bad. All we have to do is copy a file and edit another one. The file we need to copy is GNUnet's plugin for the Name Service Switch (NSS) in unix systems. Different unixes expect it in different locations and GNUnet's build system does not try to guess. On Ubuntu 18.04 we have to do
105 94
106 <code> 95 <code>
@@ -137,9 +126,7 @@
137 126
138 <p>That's it. It wasn't that nasty, was it?</p> 127 <p>That's it. It wasn't that nasty, was it?</p>
139--> 128-->
140</section> 129 <h2>{{ _("Configuration") }}</h2>
141<section>
142 <h3>{{ _("Configuration") }}</h3>
143 130
144 <p> 131 <p>
145 Congratulations! GNUnet is now installed! Before we start it we 132 Congratulations! GNUnet is now installed! Before we start it we
@@ -213,234 +200,12 @@
213 <code> 200 <code>
214 $ gnunet-arm -e 201 $ gnunet-arm -e
215 </code> 202 </code>
216</section> 203 <h2>{{ _("Use GNUnet!") }}</h2>
217<section> 204 <p>
218 <h3>{{ _("Make sure it works") }}</h3> 205 Please head over here: <a href="https://gnunet.org/en/use.html">Use!</a>
219 206 <p>
220 <p>
221 Let's try out some of GNUnet's use cases. Some should be done before others:
222 </p>
223
224 <ul>
225 <li>filesharing</li>
226 <li>A simple chat using CADET</li>
227 <li>Name resolution using GNS on the command line</li>
228 <li>Name resolution using GNS with a browser (do it on the command line first)</li>
229 <li>Serving a website using VPN (do name resolution with a browser first)</li>
230 </ul>
231</section>
232<section>
233 <h4>{{ _("filesharing") }}</h4>
234
235 <p>
236 Let's publish a file in the GNUnet filesharing network. We use the keywords
237 ("commons" and "state") so other people will be able to search for the file.
238 </p>
239
240 <p>
241 We can choose any file and describe it with meaningful keywords (using the
242 `-k` command line option).
243 </p>
244
245 <code>
246 $ gnunet-publish -k commons -k state ostrom.pdf<br>
247 Publishing `/home/myself/ostrom.pdf' done.<br>
248 URI is `gnunet://fs/chk/M57SXDJ72EWS25CT6307KKJ8K0GCNSPTAZ649NA1NS10MJB4A1GZ9EN4Y02KST9VA5BHE8B335RPXQVBWVZ587Y83WQ7J3DHMBX30Q8.DHNGBN4CB2DBX1QRZ1R0B1Q18WTEAK4R94S9D57C9JMJJ3H7SSQDCV4D1218C4S2VP085AMQQSMG18FCP6NQMZQZJ91XR5NBX7YF0V0.42197237'.
249 </code>
250
251 <p>
252 Finding the file by keyword works with `gnunet-search`.
253 </p>
254
255 <code>
256 $ gnunet-search commons<br>
257 #1:<br>
258 gnunet-download -o "ostrom.pdf" gnunet://fs/chk/M57SXDJ72EWS25CT6307KKJ8K0GCNSPTAZ649NA1NS10MJB4A1GZ9EN4Y02KST9VA5BHE8B335RPXQVBWVZ587Y83WQ7J3DHMBX30Q8.DHNGBN4CB2DBX1QRZ1R0B1Q18WTEAK4R94S9D57C9JMJJ3H7SSQDCV4D1218C4S2VP085AMQQSMG18FCP6NQMZQZJ91XR5NBX7YF0V0.42197237
259 </code>
260
261 <p>
262 It gives us the command line call to download the file (and store it as
263 ostrom.pdf)!
264 </p>
265</section>
266<section>
267 <h4>{{ _("CADET (and Chat)") }}</h4>
268
269 <p>
270 We can use the `gnunet-cadet` command line tool to open a port and from
271 another machine connect to this port and chat or transfer data. First we need
272 our *peer ID* of the GNUnet peer opening the port.
273 </p>
274
275 <code>
276 $ gnunet-peerinfo -s<br>
277 I am peer `P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG'.
278 </code>
279
280 <p>
281 Now we open the port (it can be any string!):
282 </p>
283
284 <code>
285 $ gnunet-cadet -o my-secret-port
286 </code>
287
288 <p>On the other machine we can connect using the peer ID and the port and start chatting!</p>
289
290 <code>
291 $ gnunet-cadet P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG my-secret-port
292 </code>
293</section>
294<section>
295 <h4>{{ _("Name resolution using GNS on the command line") }}</h4>
296
297 <p>GNS is the GNU name service, a fully decentralized alternatice to DNS. We'll publish an IP address in a GNS record try to resolve it on the command line. First we need an identity which is the
298 equivalent to a zone in DNS. We'll call it "myself" and create it using the
299 `gnunet-identity` command line tool. Instead of "myself" you can surely use your
300 nick or any other name. </p>
301
302 <code>
303 $ gnunet-identity -C myself
304 </code>
305
306 <p>We can check if it worked using the same tool. We expect the name of our identity and the corresponding public key to be displayed.</p>
307
308 <code>
309 $ gnunet-identity -d<br>
310 myself - HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG
311 </code>
312
313 <p>
314 Now we add a public `A` record to our zone. It has the name "ccc", a value
315 of "195.54.164.39" and it expires after one day.
316 </p>
317
318 <code>
319 $ gnunet-namestore -z myself -a -e "1 d" -p -t A -n ccc -V 195.54.164.39
320 </code>
321
322 <p>Now we can query that record using the command line tool `gnunet-gns`.</p>
323
324 <code>
325 $ gnunet-gns -t A -u ccc.myself<br>
326 ccc.myself:<br>
327 Got `A' record: 195.54.164.39
328 </code>
329 207
330 <p> 208 <h2>{{ _("Uninstall GNUnet and its dependencies") }}</h2>
331 So it worked! But only resolving our own records is boring. So we
332 can give our identity (the public key of it to be precise) to
333 someone else so they can try to resolve our records, too. The
334 other person (Bob) has to add it to his namestore like this:
335 </p>
336
337 <code>
338 $ gnunet-namestore -z myself -a -e never -p -t PKEY -n alice -V HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG
339 </code>
340
341 <p>
342 Our identity in Bobs namestore is a public record (-p) and never
343 expires (-e never). Now Bob (let's assume he has called his
344 identity myself, too) should be able to resolve our "ccc" record,
345 too!
346 </p>
347
348 <code>
349 $ gnunet-gns -t A -u ccc.alice.myself<br>
350 ccc.alice.myself:<br>
351 Got `A' record: 195.54.164.39
352 </code>
353
354 <p>
355 It can continue like this. A friend of Bob would be able to
356 resolve our records too because Bob published our identity in a
357 public record. Bobs friend would simply use "ccc.alice.bob.myself"
358 to resolve our "ccc" record.
359 </p>
360</section>
361<section>
362 <h4>{{ _("Name resolution using GNS with a browser") }}</h4>
363
364 <p>
365 In the previous use case "Name resolution using GNS on the command line" we got an idea
366 about what GNS is about, but now let's use it with a browser, to make it actually useful. Currently Firefox and Chromium are known to work.
367 </p>
368
369 <p>
370 Many websites enforce HTTPS and thus provide certificates for
371 their hostnames (and not our GNS names). Browsers don't like wrong
372 hostnames in certificates and will present error messages. So GNUnet
373 has to trick them by generating own certificates for our GNS
374 names. This means we need to create our own certificate authority
375 and tell our browser about it. Luckily there's a script for it:
376 </p>
377
378 <code>
379 $ gnunet-gns-proxy-setup-ca
380 </code>
381
382 <p>After executing this script the Browser has to be restarted.</p>
383
384 <p>
385 GNUnet provides a proxy service (gnunet-gns-proxy) that the
386 browser can send DNS and HTTP traffic to. It will try to resolve
387 names with GNS first and forward the rest of the DNS traffic to
388 the system's DNS resolver. It will also take care of the HTTP
389 traffic, so the browser gets valid certificates and the web server
390 will not be confused by our GNS hostnames. Our GNS namestore
391 doesn't know about any DNS hostnames yet, so we have to store
392 them, too. For our "ccc" A record, we have to store a LEHO (legacy
393 hostname) record, too. It must contain the website's original DNS
394 hostname:
395 </p>
396
397 <code>
398 $ gnunet-namestore -z myself -a -e "1 d" -p -t LEHO -n ccc -V www.ccc.de
399 </code>
400
401 <p>Now let's start gnunet-gns-proxy.</p>
402
403 <code>
404 $ /usr/lib/gnunet/libexec/gnunet-gns-proxy
405 </code>
406
407 <p>
408 Our browser has to be configured so it uses our proxy. In Firefox
409 we have to set these options under "about:config":
410 </p>
411
412 <code>
413 network.proxy.socks: localhost<br>
414 network.proxy.socks_port: 7777<br>
415 network.proxy.socks_remote_dns true<br>
416 network.proxy.type: 1
417 </code>
418
419 <p>
420 To tell Chromium to use the proxy, it has to be started with the
421 "--proxy-server" command line option:
422 </p>
423
424 <code>
425 $ chromium --proxy-server="socks5://127.0.0.1:7777"
426 </code>
427
428 <p>
429 Now we should be able to resolve our GNS names in the browser! We
430 just have to type "https://ccc.myself" into the address bar. If
431 our friend Bob prepared his system, too, he can resolve our record
432 by typing "ccc.alice.myself".
433 </p>
434</section>
435<section>
436 <h4>{{ _("VPN") }}</h4>
437
438 <p>
439 TBD
440 </p>
441</section>
442<section>
443 <h3>{{ _("Uninstall GNUnet and its dependencies") }}</h3>
444 209
445 <code> 210 <code>
446 $ cd ~/gnunet_installation/gnunet<br> 211 $ cd ~/gnunet_installation/gnunet<br>
@@ -455,19 +220,9 @@
455 $ sudo mv /etc/nsswitch.conf.original /etc/nsswitch.conf<br> 220 $ sudo mv /etc/nsswitch.conf.original /etc/nsswitch.conf<br>
456 $ sudo rm /lib/$(uname -m)-linux-gnu/libnss_gns.so.2 221 $ sudo rm /lib/$(uname -m)-linux-gnu/libnss_gns.so.2
457 </code> 222 </code>
458</section>
459<section>
460 <h3>{{ _("Appendix A: Optional GNUnet features") }}</h3>
461 223
462 <p> 224 <h2>{{ _("Troubleshooting") }}</h2>
463 TBD 225 <h3>{{ _("You can't reach other people's nodes") }}</h3>
464 </p>
465</section>
466<section>
467 <h3>{{ _("Troubleshooting") }}</h3>
468</section>
469<section>
470 <h4>{{ _("You can't reach other people's nodes") }}</h4>
471 226
472 <p> 227 <p>
473 Should our computer not have reached the open GNUnet network automatically, 228 Should our computer not have reached the open GNUnet network automatically,
@@ -498,7 +253,7 @@
498 <p>Now our GNUnet nodes can attempt reaching each other directly. This may 253 <p>Now our GNUnet nodes can attempt reaching each other directly. This may
499 still fail due to NAT traversal issues.</p> 254 still fail due to NAT traversal issues.</p>
500 255
501 <!--<h4>{{ _("OMG you guys broke my internet") }}</h4> 256 <!--<h3>{{ _("OMG you guys broke my internet") }}</h3>
502 257
503 <p>We can replace `/etc/nsswitch.conf` with the backup we made earlier 258 <p>We can replace `/etc/nsswitch.conf` with the backup we made earlier
504 (`/etc/nsswitch.conf.original`). Now DNS resolution should work again without a 259 (`/etc/nsswitch.conf.original`). Now DNS resolution should work again without a
@@ -507,6 +262,5 @@
507 <code> 262 <code>
508 $ cp /etc/nsswitch.conf.original /etc/nsswitch.conf 263 $ cp /etc/nsswitch.conf.original /etc/nsswitch.conf
509 </code>--> 264 </code>-->
510</section>
511</article> 265</article>
512{% endblock body_content %} 266{% endblock body_content %}
diff --git a/template/install.html.j2 b/template/install.html.j2
new file mode 100644
index 00000000..84c581a5
--- /dev/null
+++ b/template/install.html.j2
@@ -0,0 +1,60 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3<article class="container">
4
5 <header>
6 <h1>{{ _("Install") }}</h1>
7 </header>
8
9 <div class="row container justify-content-center">
10 <div class="col-md">
11 {% trans %}
12 <p>The following GNUnet installation instructions help you building from source for your distribution.</p>
13 <p><i>Please note that the installation process will get much easier once we have proper packages again (planned for winter 2019).</i></p>
14 <p>You have already installed GNUnet and want to use it?
15 <a href="https://gnunet.org/en/use">Check this out!</a> </p>
16 {% endtrans %}
17 </div>
18 <div class="col-md">
19 {% trans %}
20 <p>Please be aware that this project is still in an early alpha
21 stage when it comes to running software &#8211; its not an easy task
22 to rewrite the whole Internet! We are happy to get your
23 <a href="engage.html">helping hand</a> anytime!</p>
24 <p>Further information is available in our <a href="https://docs.gnunet.org/#toc-Using-GNUnet-1">handbook</a>.</p>
25 <p>If you have any queries about the installation or the usage, please <a href="engage.html">get in touch!</a></p>
26 {% endtrans %}
27 </div>
28 </div>
29
30 <div class="row container justify-content-center text-center">
31 <div class="col-md">
32 <p><a href="install-on-ubuntu1804.html"><img src="{{ url('static/images/ubuntu-logo32.png') }}" class="distro-logo"></a></p>
33 <h3>Ubuntu 18.04</h3>
34 </div>
35 <div class="col-md">
36 <p><a href="install-on-debian9.html"><img src="{{ url('static/images/debian-logo.svg') }}" class="distro-logo"></a></p>
37 <h3>Debian 9</h3>
38 </div>
39 <div class="col-md">
40 <!-- Not the officially distributed file, but it's the same logo, in svg. Use this. -->
41 <p><a href="install-on-netbsd.html"><img src="{{ url('static/images/NetBSD_Logo.svg') }}" class="distro-logo"></a></p>
42 <h3>NetBSD</h3>
43 </div>
44 </div>
45
46 <div class="row container justify-content-center text-center">
47 <div class="col-md">
48 <p><a href="install-on-macos.html"><img src="{{ url('static/images/apple-logo.svg') }}" class="distro-logo"></a></p>
49 <h3>macOS</h3>
50 </div>
51 <div class="col-md">
52 <p><a href="install-on-archpi.html"><img src="{{ url('static/images/archlinux-logo.svg') }}" class="distro-logo" style="width:300px;height:auto"></a></p>
53 <h3>Arch-Pi</h3>
54 </div>
55 <div class="col-md">
56 </div>
57 </div>
58
59</article>
60{% endblock body_content %}
diff --git a/template/news.html.j2.inc b/template/news.html.j2.inc
index 25108ba6..8c3054c2 100644
--- a/template/news.html.j2.inc
+++ b/template/news.html.j2.inc
@@ -1,3 +1,7 @@
1{% include "news/2019-0.11.6.inc" %}
2{% include "news/2019-07-GHM_Aug_2019.inc" %}
3{% include "news/2019-06-DSTJ.inc" %}
4{% include "news/2019-06.inc" %}
1{% include "news/2019-0.11.5.inc" %} 5{% include "news/2019-0.11.5.inc" %}
2{% include "news/2019-0.11.4.inc" %} 6{% include "news/2019-0.11.4.inc" %}
3{% include "news/2019-0.11.3.inc" %} 7{% include "news/2019-0.11.3.inc" %}
@@ -5,5 +9,4 @@
5{% include "news/2019-0.11.1.inc" %} 9{% include "news/2019-0.11.1.inc" %}
6{% include "news/2019-0.11.0.inc" %} 10{% include "news/2019-0.11.0.inc" %}
7{% include "news/2019-02.inc" %} 11{% include "news/2019-02.inc" %}
8{% include "news/2018-07.inc" %}
9<a href="old-news.html"><h3>{{ _("More news")}}</h3></a> 12<a href="old-news.html"><h3>{{ _("More news")}}</h3></a>
diff --git a/template/old-news.html.j2 b/template/old-news.html.j2
index 671af1c1..ebee3239 100644
--- a/template/old-news.html.j2
+++ b/template/old-news.html.j2
@@ -17,6 +17,7 @@
17<div class="container"> 17<div class="container">
18 <div class="row"> 18 <div class="row">
19 <div class="col-lg-12"> 19 <div class="col-lg-12">
20{% include "news/2018-07.inc" %}
20{% include "news/2018-06.inc" %} 21{% include "news/2018-06.inc" %}
21{% include "news/2018-08.inc" %} 22{% include "news/2018-08.inc" %}
22{% include "news/2017-10.inc" %} 23{% include "news/2017-10.inc" %}
diff --git a/template/team.html.j2 b/template/team.html.j2
index 5faa6b13..030ca6df 100644
--- a/template/team.html.j2
+++ b/template/team.html.j2
@@ -1,32 +1,28 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<article class="container">
4
5 <header>
6 <h1>{{ _("The developer team working on GNUnet") }}</h1>
7 </header>
8
3 <section class="team"> 9 <section class="team">
4 <!-- list alphabetical --> 10 <!-- list alphabetical -->
5 <div class="container"> 11 <div class="container">
6 <div class="row"> 12 <div class="row">
7 <div class="col-md-10 col-md-offset-1"> 13 <div class="col-md-10 col-md-offset-1">
8 <div class="col-lg-12"> 14 <div class="col-lg-12">
9 <h6 class="description">The developer team working on GNUnet</h6>
10 <div class="row pt-md"> 15 <div class="row pt-md">
11 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile"> 16 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile">
12 <div class="img-box img-none"> 17 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
13 <i class="fa fa-user"></i>
14 <ul class="text-center">
15 </ul>
16 </div>
17 <h1>Bart Polot</h1> 18 <h1>Bart Polot</h1>
18 <h2>{{ _("NSE, CADET.") }}</h2> 19 <h2>{{ _("NSE, CADET.") }}</h2>
19 <p></p> 20 <p></p>
20 </div> 21 </div>
21 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile"> 22 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile">
22 <div class="img-box img-none"> 23 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
23 <i class="fa fa-user"></i>
24 <ul class="text-center">
25 <a href="http://my.pages.de"><li><i class="fas fa-home"></i></li></a>
26 </ul>
27 </div>
28 <h1>carlo von lynX</h1> 24 <h1>carlo von lynX</h1>
29 <h2>{{ _("secushare, PSYC, multicast, advocacy, sights and sounds, UX.") }}</h2> 25 <h2>{{ _("Secushare, PSYC, multicast, advocacy, sights and sounds, UX.") }}</h2>
30 <p></p> 26 <p></p>
31 </div> 27 </div>
32 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile"> 28 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile">
@@ -40,24 +36,10 @@
40 <h2>{{ _("GNU maintainer.") }}</h2> 36 <h2>{{ _("GNU maintainer.") }}</h2>
41 <p></p> 37 <p></p>
42 </div> 38 </div>
43 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile">
44 <div class="img-box img-none">
45 <i class="fa fa-user"></i>
46 <ul class="text-center">
47 </ul>
48 </div>
49 <h1>Christian K&uuml;hne</h1>
50 <h2>{{ _("secushare, Social, PSYC, Multicast, data protection theory.") }}</h2>
51 <p></p>
52 </div>
53 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile"> 39 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile">
54 <div class="img-box img-none"> 40 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
55 <i class="fa fa-user"></i>
56 <ul class="text-center">
57 </ul>
58 </div>
59 <h1>dvn</h1> 41 <h1>dvn</h1>
60 <h2>{{ _("Continuous Integration, secushare, packaging (Guix).") }}</h2> 42 <h2>{{ _("Continuous Integration, Secushare, packaging (Guix).") }}</h2>
61 <p></p> 43 <p></p>
62 </div> 44 </div>
63 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile"> 45 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile">
@@ -82,33 +64,21 @@
82 <p></p> 64 <p></p>
83 </div> 65 </div>
84 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile"> 66 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile">
85 <div class="img-box img-none"> 67 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
86 <i class="fa fa-user"></i>
87 <ul class="text-center">
88 </ul>
89 </div>
90 <h1>Julius B&uuml;nger</h1> 68 <h1>Julius B&uuml;nger</h1>
91 <h2>{{ _("Random peer sampling") }}</h2> 69 <h2>{{ _("Random peer sampling") }}</h2>
92 <p></p> 70 <p></p>
93 </div> 71 </div>
94 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile"> 72 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile">
95 <div class="img-box img-none"> 73 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
96 <i class="fa fa-user"></i>
97 <ul class="text-center">
98 </ul>
99 </div>
100 <h1>LRN</h1> 74 <h1>LRN</h1>
101 <h2>{{ _("W32 port.") }}</h2> 75 <h2>{{ _("W32 port.") }}</h2>
102 <p></p> 76 <p></p>
103 </div> 77 </div>
104 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile"> 78 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile">
105 <div class="img-box img-none"> 79 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
106 <i class="fa fa-user"></i>
107 <ul class="text-center">
108 </ul>
109 </div>
110 <h1>lurchi</h1> 80 <h1>lurchi</h1>
111 <h2>{{ _("secushare, Social, PSYC, Multicast") }}</h2> 81 <h2>{{ _("Secushare, Social, PSYC, Multicast") }}</h2>
112 <p></p> 82 <p></p>
113 </div> 83 </div>
114 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile"> 84 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile">
@@ -127,6 +97,7 @@
127 <img src="{{ url('static/team-images/ng0.jpg') }}" alt="ng0" class="img-fluid"> 97 <img src="{{ url('static/team-images/ng0.jpg') }}" alt="ng0" class="img-fluid">
128 <ul class="text-center"> 98 <ul class="text-center">
129 <a href="https://n0.is"><li><i class="fas fa-home"></i></li></a> 99 <a href="https://n0.is"><li><i class="fas fa-home"></i></li></a>
100 <a href="https://keys.openpgp.org/search?q=ng0%40gnunet.org"><li><i class="fas fa-key"></i></li></a>
130 </ul> 101 </ul>
131 </div> 102 </div>
132 <h1>ng0</h1> 103 <h1>ng0</h1>
@@ -134,11 +105,7 @@
134 <p></p> 105 <p></p>
135 </div> 106 </div>
136 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile"> 107 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile">
137 <div class="img-box img-none"> 108 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
138 <i class="fa fa-user"></i>
139 <ul class="text-center">
140 </ul>
141 </div>
142 <h1>Nils Durner</h1> 109 <h1>Nils Durner</h1>
143 <h2>{{ _("W32 port.") }}</h2> 110 <h2>{{ _("W32 port.") }}</h2>
144 <p></p> 111 <p></p>
@@ -161,33 +128,32 @@
161 </ul> 128 </ul>
162 </div> 129 </div>
163 <h1>t3sserakt</h1> 130 <h1>t3sserakt</h1>
164 <h2>{{ _("secushare, Social, PSYC, Multicast.") }}</h2> 131 <h2>{{ _("Secushare, Social, PSYC, Multicast.") }}</h2>
165 <p></p> 132 <p></p>
166 </div> 133 </div>
167 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile"> 134 <div class="col-lg-3 col-md-3 col-sm-4 col-xs-12 profile">
168 <div class="img-box img-none"> 135 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
169 <i class="fa fa-user"></i>
170 <ul class="text-center">
171 </ul>
172 </div>
173 <h1>tg</h1> 136 <h1>tg</h1>
174 <h2>{{ _("Multicast.") }}</h2> 137 <h2>{{ _("Multicast.") }}</h2>
175 <p></p> 138 <p></p>
176 </div> 139 </div>
177 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile"> 140 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile">
178 <div class="img-box img-none"> 141 <img src="{{ url('static/team-images/no-foto.svg') }}" alt="lynX" class="img-fluid">
179 <i class="fa fa-user"></i>
180 <ul class="text-center">
181 </ul>
182 </div>
183 <h1>wldhx</h1> 142 <h1>wldhx</h1>
184 <h2>{{ _("Web site, packaging (Nix/Guix).") }}</h2> 143 <h2>{{ _("Web site, packaging (Nix/Guix).") }}</h2>
185 <p></p> 144 <p></p>
186 </div> 145 </div>
146 <div class="col-lg-3 col-md-3 col-sm-4 col-12 profile">
147 <img src="{{ url('static/team-images/xrs.jpg') }}" alt="xrs" class="img-fluid">
148 <h1>xrs</h1>
149 <h2>{{ _("Secushare, Data Protection Theory, Computer Science &amp; Society.") }}</h2>
150 <p></p>
151 </div>
187 </div> 152 </div>
188 </div> 153 </div>
189 </div> 154 </div>
190 </div> 155 </div>
191 </div> 156 </div>
192 </section> 157 </section>
158</article>
193{% endblock body_content %} 159{% endblock body_content %}
diff --git a/template/tutorial-archpi.html.j2 b/template/tutorial-archpi.html.j2
deleted file mode 100644
index 2fdfab07..00000000
--- a/template/tutorial-archpi.html.j2
+++ /dev/null
@@ -1,163 +0,0 @@
1{% extends "common/base.j2" %}
2{% block body_content %}
3<div class="container">
4
5<h2>{{ _("Tutorial: GNUnet on Archlinux/Pi") }}</h2>
6
7Welcome to this GNUnet tutorial for Archlinux on a Raspberry Pi 3. If you want
8to run a GNUnet node on a separte system, permanently online, with low energy
9consumption, this might be the thing for you. This tutorial shows you how to
10install, run, and operate it.
11
12<h3>{{ _("Requirements") }}</h3>
13
14<p>First you need the hardware. This tutorial works with a Raspberry Pi 3. The
15other Pi versions I haven't tested, but they should probably work, too. To
16install Archlinux on the Pi3, follow the instructions from <a
17href="https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-3">archlinuxarm.org</a>.</p>
18
19<p>That was easy, right? Our goal now is to build GNUnet from source. So, let's
20install the tools for building new software.</p>
21
22<p><code>
23> sudo pacman -S base-devel
24</code></p>
25
26<p>Now we can continue to install the following Archlinux dependencies to
27compile GNUnet on our Pi.</p>
28
29<p><code>
30$ pacman -Su libmicrohttpd libgcrypt gnurl libunistring gnutls libidn
31libextractor openssl libltdl sqlite texinfo which gettext zlib
32pkg-config git miniupnpc libextractor jansson nim
33</code></p>
34
35<h3>{{ _("Get the Source Code") }}</h3>
36
37<p>We are getting closer. Download the GNUnet source code which we will build
38in the next step:<p>
39
40<p><code>
41> git clone https://gnunet.org/git/gnunet.git<br>
42</code></p>
43
44<p>Now it's time to compile GNUnet.</p>
45
46<p><code>
47> cd gnunet<br>
48> ./bootstrap # Run this to generate the configure files.<br>
49> ./configure # Use --help to see the various flags available to you.<br>
50> make -j$(nproc || echo -n 1)<br>
51> sudo make install<br>
52</code></p>
53
54<p>Congrats! GNUnet is now installed!</p>
55
56<h3>{{ _("Run") }}</h3>
57
58<p>By default GNUnet looks in our home directory for the file
59~/.config/gnunet.conf. We can start with an empty file for now:</p>
60
61<p><code>
62> touch ~/.config/gnunet.conf
63</code></p>
64 <br />
65 <p>
66 It's reccomended that you increase your bandwidth restrictions
67 from the acutely low defaults. The example below sets the WAN
68 and LAN limits to the value "unlimited".
69 </p>
70 <br />
71 <code>
72 $ gnunet-config -s ats -o WAN_QUOTA_IN -V unlimited<br />
73 $ gnunet-config -s ats -o WAN_QUOTA_OUT -V unlimited<br />
74 $ gnunet-config -s ats -o LAN_QUOTA_IN -V unlimited<br />
75 $ gnunet-config -s ats -o LAN_QUOTA_OUT -V unlimited<br />
76 </code>
77 <br />
78<p>Now we can start it with the commandline tool gnunet-arm (Automatic Restart
79Manager).</p>
80
81<p><code>
82> gnunet-arm -s
83</code></p>
84
85<p>It starts the default GNUnet services. We can list them with the -I option:</p>
86
87<p><code>
88> gnunet-arm -I<br>
89Running services:<br>
90ats (gnunet-service-ats)<br>
91revocation (gnunet-service-revocation)<br>
92set (gnunet-service-set)<br>
93nat (gnunet-service-nat)<br>
94transport (gnunet-service-transport)<br>
95peerstore (gnunet-service-peerstore)<br>
96hostlist (gnunet-daemon-hostlist)<br>
97identity (gnunet-service-identity)<br>
98namecache (gnunet-service-namecache)<br>
99peerinfo (gnunet-service-peerinfo)<br>
100datastore (gnunet-service-datastore)<br>
101zonemaster (gnunet-service-zonemaster)<br>
102zonemaster-monitor (gnunet-service-zonemaster-monitor)<br>
103nse (gnunet-service-nse)<br>
104cadet (gnunet-service-cadet)<br>
105dht (gnunet-service-dht)<br>
106core (gnunet-service-core)<br>
107gns (gnunet-service-gns)<br>
108statistics (gnunet-service-statistics)<br>
109topology (gnunet-daemon-topology)<br>
110fs (gnunet-service-fs)<br>
111namestore (gnunet-service-namestore)<br>
112vpn (gnunet-service-vpn)<br>
113</code></p>
114
115<p>For stopping GNUnet again we can use the -e option.</p>
116
117<p><code>
118> gnunet-arm -e
119</code></p>
120
121<h3>{{ _("Make sure, it works!") }}</h3>
122
123After starting GNUnet you should make sure that your peer is connecting to the
124P2P-network. By typing gnunet-core you should see something like this:
125
126<p><code>
127> gnunet-core<br>
128Tue Oct 30 19:58:48 2018: connection established DSTJ (timeout in 293 s)<br>
129Tue Oct 30 19:58:48 2018: connection established A4MK (timeout in 292 s)<br>
130Tue Oct 30 19:58:48 2018: connection established 7WRD (timeout in 299 s)<br>
131Tue Oct 30 19:58:48 2018: connection established 5WBG (timeout in 299 s)<br>
132</code></p>
133
134<h3>{{ _("Chat the cat") }}</h3>
135
136<p>To be able to chat, we need to install and compile additional
137software.</p>
138
139<p><code>
140> git clone https://gnunet.org/git/gnunet-nim.git<br>
141> cd gnunet-nim/examples<br>
142> nim c groupchat.nim
143</code></p>
144
145<p>Fine! We can now try to enter a chat server running on another GNUnet node.
146
147<p><code>
148> LD_LIBRARY_PATH=/path/to/gnunetlibs ./groupchat --config=/path/to/gnunet.conf --server=YV6G9EP9K3X41BM3FJ3D29BDZR6358XNZ6KDZVV7DFW729YB0KCG --port=welcome --nick=YOURNICK
149</code></p>
150
151<p>You should now see something like this:</p>
152
153<p><code>
154> 2018-10-30 19:50:10 Welcome 8Q2T! participants: @[] <br>
155Hello GNUnet!<br>
1562018-10-30 19:52:53 [8Q2T] Hello GNUnet!
157</code></p>
158
159<p>Here we have typed "Hello gnunet!" to standard in which is then written out
160to standard out after having been sent back from GNUnet.</p>
161
162</div>
163{% endblock body_content %}
diff --git a/template/use.html.j2 b/template/use.html.j2
index 2f90aade..e5a696e5 100644
--- a/template/use.html.j2
+++ b/template/use.html.j2
@@ -1,235 +1,397 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<article class="container"> 3<article class="container">
4<!--<article> --> 4
5<header> 5 <header>
6 <h2>{{ _("How to use GNUnet - in a nutshell") }}</h2> 6 <h1>{{ _("How to use GNUnet - in a nutshell") }}</h1>
7</header> 7 </header>
8 8
9<section> 9 <div class="row">
10 <h3>{{ _("Make sure your GNUnet installation works...") }}</h3> 10 <div class="col-2 d-none d-lg-block"><!-- for large viewports show menu for better orientation -->
11 11 <nav class="nav subnav position-fixed flex-column border-right" style="position:fixed">
12 <p> 12 <a class="nav-link" href="#filesharing">{{ _("Filesharing") }}</a>
13 ... and play around with it. So let's try out some of GNUnet's use cases. Please mind that some should be done in a particular order, one after another: 13 <a class="nav-link" href="#cadet">{{ _("CADET") }}</a>
14 </p> 14 <a class="nav-link" href="#groupchat">{{ _("Minimal Groupchat") }}</a>
15 15 <a class="nav-link" href="#gns_cli">{{ _("GNS with CLI") }}</a>
16 <ul> 16 <a class="nav-link" href="#gns_browser">{{ _("GNS with Browser") }}</a>
17 <li>filesharing</li> 17 <a class="nav-link" href="#vpn">{{ _("VPN") }}</a>
18 <li>A simple chat using CADET</li> 18 <a class="nav-link" href="#conversation">{{ _("Conversation") }}</a>
19 <li>Name resolution using GNS on the command line</li> 19 </nav>
20 <li>Name resolution using GNS with a browser (do it on the command line first)</li> 20 </div>
21 <li>Serving a website using VPN (do name resolution with a browser first)</li> 21
22 </ul> 22 <div class="col">
23</section> 23 <section>
24<section> 24 <p>
25 <h4>{{ _("filesharing") }}</h4> 25 This document is just a brief intro on what can be done with GNUnet. Find much more in our <a ref="https://docs.gnunet.org/">documentation</a>, e.g. in the section <a href="https://docs.gnunet.org/handbook/gnunet.html#toc-Using-GNUnet-1">"using GNUnet"</a> in the handbook.
26 26
27 <p> 27 The configuration in the handbook is done with the UI interface gnunet-gtk.
28 Let's publish a file in the GNUnet filesharing network. We use the keywords 28 </p>
29 ("commons" and "state") so other people will be able to search for the file. 29 </section>
30 </p> 30
31 31 <section>
32 <p> 32 <h3>{{ _("Make sure your GNUnet installation works...") }}</h3>
33 We can choose any file and describe it with meaningful keywords (using the 33 <p>After installing and starting GNUnet you should make sure that your peer is connecting
34 `-k` command line option). 34 to the P2P-network. By typing gnunet-core you should see something like this:
35 </p> 35 </p>
36 36 <p>
37 <code> 37 <code>
38 $ gnunet-publish -k commons -k state ostrom.pdf<br> 38 $ gnunet-core <br>
39 Publishing `/home/myself/ostrom.pdf' done.<br> 39 Tue Oct 30 19:58:48 2018: connection established DSTJ (timeout in 293 s)<br>
40 URI is `gnunet://fs/chk/M57SXDJ72EWS25CT6307KKJ8K0GCNSPTAZ649NA1NS10MJB4A1GZ9EN4Y02KST9VA5BHE8B335RPXQVBWVZ587Y83WQ7J3DHMBX30Q8.DHNGBN4CB2DBX1QRZ1R0B1Q18WTEAK4R94S9D57C9JMJJ3H7SSQDCV4D1218C4S2VP085AMQQSMG18FCP6NQMZQZJ91XR5NBX7YF0V0.42197237'. 40 Tue Oct 30 19:58:48 2018: connection established A4MK (timeout in 292 s)<br>
41 </code> 41 Tue Oct 30 19:58:48 2018: connection established 7WRD (timeout in 299 s)<br>
42 42 Tue Oct 30 19:58:48 2018: connection established 5WBG (timeout in 299 s)<br>
43 <p> 43 </code>
44 Finding the file by keyword works with `gnunet-search`. 44 </p>
45 </p> 45 </section>
46 46 <section>
47 <code> 47 <h3>{{ _("... and play around with it.") }}</h3>
48 $ gnunet-search commons<br> 48 <p>
49 #1:<br> 49 So let's try out some of GNUnet's use cases. Please mind that some should be done in a particular order, one after another:
50 gnunet-download -o "ostrom.pdf" gnunet://fs/chk/M57SXDJ72EWS25CT6307KKJ8K0GCNSPTAZ649NA1NS10MJB4A1GZ9EN4Y02KST9VA5BHE8B335RPXQVBWVZ587Y83WQ7J3DHMBX30Q8.DHNGBN4CB2DBX1QRZ1R0B1Q18WTEAK4R94S9D57C9JMJJ3H7SSQDCV4D1218C4S2VP085AMQQSMG18FCP6NQMZQZJ91XR5NBX7YF0V0.42197237 50 </p>
51 </code> 51
52 52 <ul>
53 <p> 53 <li>filesharing</li>
54 It gives us the command line call to download the file (and store it as 54 <li>A simple chat using CADET</li>
55 ostrom.pdf)! 55 <li>Another simple chat using a nim client</i>
56 </p> 56 <li>Name resolution using GNS on the command line</li>
57</section> 57 <li>Name resolution using GNS with a browser (do it on the command line first)</li>
58<section> 58 <li>Serving a website using VPN (do name resolution with a browser first)</li>
59 <h4>{{ _("CADET (and Chat)") }}</h4> 59 </ul>
60 60 </section>
61 <p> 61
62 We can use the `gnunet-cadet` command line tool to open a port and from 62
63 another machine connect to this port and chat or transfer data. First we need 63 <section>
64 our *peer ID* of the GNUnet peer opening the port. 64 <h3><a name="filesharing" class="subnav-anchor"></a>{{ _("Filesharing") }}</h3>
65 </p> 65
66 66 <p>
67 <code> 67 Let's publish a file in the GNUnet filesharing network. We use the keywords
68 $ gnunet-peerinfo -s<br> 68 ("commons" and "state") so other people will be able to search for the file.
69 I am peer `P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG'. 69 </p>
70 </code> 70
71 71 <p>
72 <p> 72 We can choose any file and describe it with meaningful keywords (using the
73 Now we open the port (it can be any string!): 73 `-k` command line option).
74 </p> 74 </p>
75 75 <p>
76 <code> 76 <code>
77 $ gnunet-cadet -o my-secret-port 77 $ gnunet-publish -k commons -k state ostrom.pdf<br>
78 </code> 78 Publishing `/home/myself/ostrom.pdf' done.<br>
79 79 URI is `gnunet://fs/chk/M57S...
80 <p>On the other machine we can connect using the peer ID and the port and start chatting!</p> 80 </code>
81 81 </p>
82 <code> 82 <p>
83 $ gnunet-cadet P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG my-secret-port 83 Finding the file by keyword works with `gnunet-search`.
84 </code> 84 </p>
85</section> 85 <p>
86<section> 86 <code>
87 <h4>{{ _("Name resolution using GNS on the command line") }}</h4> 87 $ gnunet-search commons<br>
88 88 #1:<br>
89 <p>GNS is the GNU name service, a fully decentralized alternatice to DNS. We'll publish an IP address in a GNS record try to resolve it on the command line. First we need an identity which is the 89 gnunet-download -o "ostrom.pdf" gnunet://fs/chk/M57S...
90 equivalent to a zone in DNS. We'll call it "myself" and create it using the 90 </code>
91 `gnunet-identity` command line tool. Instead of "myself" you can surely use your 91 </p>
92 nick or any other name. </p> 92 <p>
93 93 It gives us the command line call to download the file (and store it as
94 <code> 94 ostrom.pdf)!
95 $ gnunet-identity -C myself 95 </p>
96 </code> 96 <p>
97 97 Please also refer to the chapter on
98 <p>We can check if it worked using the same tool. We expect the name of our identity and the corresponding public key to be displayed.</p> 98 <a href="https://docs.gnunet.org/handbook/gnunet.html#File_002dsharing">filesharing in the handbook</a>.
99 99
100 <code> 100 </section>
101 $ gnunet-identity -d<br> 101 <section>
102 myself - HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG 102
103 </code> 103 <h3><a name="cadet" class="subnav-anchor"></a>{{ _("CADET (and Chat)") }}</h3>
104 104 <p>
105 <p> 105 We can use the `gnunet-cadet` command line tool to open a port and from
106 Now we add a public `A` record to our zone. It has the name "ccc", a value 106 another machine connect to this port and chat or transfer data. First we need
107 of "195.54.164.39" and it expires after one day. 107 our *peer ID* of the GNUnet peer opening the port.
108 </p> 108 </p>
109 109 <p>
110 <code> 110 <code>
111 $ gnunet-namestore -z myself -a -e "1 d" -p -t A -n ccc -V 195.54.164.39 111 $ gnunet-peerinfo -s<br>
112 </code> 112 I am peer `P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG'.
113 113 </code>
114 <p>Now we can query that record using the command line tool `gnunet-gns`.</p> 114 </p>
115 115 <p>
116 <code> 116 Now we open the port (it can be any string!):
117 $ gnunet-gns -t A -u ccc.myself<br> 117 </p>
118 ccc.myself:<br> 118 <p>
119 Got `A' record: 195.54.164.39 119 <code>
120 </code> 120 $ gnunet-cadet -o my-secret-port
121 121 </code>
122 <p> 122 </p>
123 So it worked! But only resolving our own records is boring. So we 123 <p>On the other machine we can connect using the peer ID and the port and start chatting!</p>
124 can give our identity (the public key of it to be precise) to 124 <p>
125 someone else so they can try to resolve our records, too. The 125 <code>
126 other person (Bob) has to add it to his namestore like this: 126 $ gnunet-cadet P4T5GHS1PCZ06R82D3KW8Z8J1113BQZWAWGYHTZ8G1ZXMWXQGAVG my-secret-port
127 </p> 127 </code>
128 128 </p>
129 <code> 129 <p>
130 $ gnunet-namestore -z myself -a -e never -p -t PKEY -n alice -V HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG 130 If you are interested into CADET in detail, please have a look in the <a href="https://docs.gnunet.org/handbook/gnunet.html#CADET-Subsystem">chapter "Cadet-Subsystem" in our handbook</a>.
131 </code> 131 </p>
132 132
133 <p> 133 </section>
134 Our identity in Bobs namestore is a public record (-p) and never 134
135 expires (-e never). Now Bob (let's assume he has called his 135 <section>
136 identity myself, too) should be able to resolve our "ccc" record, 136 <h3><a name="groupchat" class="subnav-anchor"></a>{{ _("Chatting with a (simple) client") }}</h3>
137 too! 137 <p>
138 </p> 138 To chat a tiny bit prettier, we need to install and compile additional software.
139 139 If you join the chat mentioned below and no one is there, feel free to ping on
140 <code> 140 IRC/freenode #gnunet and ask if someone can join to test with you! (But we are
141 $ gnunet-gns -t A -u ccc.alice.myself<br> 141 trying to be there as often as possible).
142 ccc.alice.myself:<br> 142 </p>
143 Got `A' record: 195.54.164.39 143 <p>
144 </code> 144 First we have to install Nim either through our package manager or following the
145 145 <a href="https://nim-lang.org/install.html">official installation instructions</a>.
146 <p> 146 Then we download and compile the groupchat application:
147 It can continue like this. A friend of Bob would be able to 147 </p>
148 resolve our records too because Bob published our identity in a 148 <p>
149 public record. Bobs friend would simply use "ccc.alice.bob.myself" 149 <code>
150 to resolve our "ccc" record. 150 $ git clone https://git.gnunet.org/groupchat.git<br>
151 </p> 151 $ cd groupchat<br>
152</section> 152 $ make<br>
153<section> 153 </code>
154 <h4>{{ _("Name resolution using GNS with a browser") }}</h4> 154 <p>
155 155 <p>
156 <p> 156 Fine! We can now try to enter a chat server running on another GNUnet node.
157 In the previous use case "Name resolution using GNS on the command line" we got an idea 157 </p>
158 about what GNS is about, but now let's use it with a browser, to make it actually useful. Currently Firefox and Chromium are known to work. 158 <p>
159 </p> 159 <code>
160 160 $ LD_LIBRARY_PATH=/path/to/gnunetlibs ./groupchat --config=/path/to/gnunet.conf --server=88RXABKJNMT426FY81N2DXN0M2X37SW5Q1NR005YPDZ1Q7A22CHG --port=t3ss --nick=YOURNICK<br>
161 <p> 161 </code>
162 Many websites enforce HTTPS and thus provide certificates for 162 <p>
163 their hostnames (and not our GNS names). Browsers don't like wrong 163 (or as alternative server "QYYZ9S0GMRS5GJGA415YEFB29RM1E4NJ4NX8DG0T8GYFDJVYHNJ0" and port "welcome")
164 hostnames in certificates and will present error messages. So GNUnet 164 </p>
165 has to trick them by generating own certificates for our GNS 165 <p>
166 names. This means we need to create our own certificate authority 166 The peer and port in this example should work in real, because that peer is almost always online and running groupchat on that port.
167 and tell our browser about it. Luckily there's a script for it: 167 <p>
168 </p> 168 You should now see something like this:
169 169 </p>
170 <code> 170 <p>
171 $ gnunet-gns-proxy-setup-ca 171 <code>
172 </code> 172 > 2018-10-30 19:50:10 Welcome 8Q2T! participants: @[]<br>
173 173 Hello GNUnet!<br>
174 <p>After executing this script the Browser has to be restarted.</p> 174 2018-10-30 19:52:53 [8Q2T] Hello GNUnet!<br>
175 175 </code>
176 <p> 176 <p>
177 GNUnet provides a proxy service (gnunet-gns-proxy) that the 177 <p>
178 browser can send DNS and HTTP traffic to. It will try to resolve 178 Here we have typed "Hello gnunet!" to standard in which is then written out to standard out after having been sent back from GNUnet.
179 names with GNS first and forward the rest of the DNS traffic to 179 </p>
180 the system's DNS resolver. It will also take care of the HTTP 180 </section>
181 traffic, so the browser gets valid certificates and the web server 181
182 will not be confused by our GNS hostnames. Our GNS namestore 182 <section>
183 doesn't know about any DNS hostnames yet, so we have to store 183 <h3><a name="gns_cli" class="subnav-anchor"></a>{{ _("Name resolution using GNS on the command line") }}</h3>
184 them, too. For our "ccc" A record, we have to store a LEHO (legacy 184 <p>GNS is the GNU name service, a fully decentralized alternatice to DNS. We'll publish an IP address in a GNS record try to resolve it on the command line. First we need an identity which is the
185 hostname) record, too. It must contain the website's original DNS 185 equivalent to a zone in DNS. We'll call it "myself" and create it using the
186 hostname: 186 `gnunet-identity` command line tool. Instead of "myself" you can surely use your
187 </p> 187 nick or any other name. </p>
188 188 <p>
189 <code> 189 <code>
190 $ gnunet-namestore -z myself -a -e "1 d" -p -t LEHO -n ccc -V www.ccc.de 190 $ gnunet-identity -C myself
191 </code> 191 </code>
192 192 </p>
193 <p>Now let's start gnunet-gns-proxy.</p> 193 <p>We can check if it worked using the same tool. We expect the name of our identity and the corresponding public key to be displayed.</p>
194 194 <p>
195 <code> 195 <code>
196 $ /usr/lib/gnunet/libexec/gnunet-gns-proxy 196 $ gnunet-identity -d<br>
197 </code> 197 myself - HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG
198 198 </code>
199 <p> 199 </p>
200 Our browser has to be configured so it uses our proxy. In Firefox 200 <p>
201 we have to set these options under "about:config": 201 Now we add a public `A` record to our zone. It has the name "ccc", a value
202 </p> 202 of "195.54.164.39" and it expires after one day.
203 203 </p>
204 <code> 204 <p>
205 network.proxy.socks: localhost<br> 205 <code>
206 network.proxy.socks_port: 7777<br> 206 $ gnunet-namestore -z myself -a -e "1 d" -p -t A -n ccc -V 195.54.164.39
207 network.proxy.socks_remote_dns true<br> 207 </code>
208 network.proxy.type: 1 208 </p>
209 </code> 209 <p>Now we can query that record using the command line tool `gnunet-gns`.</p>
210 210 <p>
211 <p> 211 <code>
212 To tell Chromium to use the proxy, it has to be started with the 212 $ gnunet-gns -t A -u ccc.myself<br>
213 "--proxy-server" command line option: 213 ccc.myself:<br>
214 </p> 214 Got `A' record: 195.54.164.39
215 215 </code>
216 <code> 216 </p>
217 $ chromium --proxy-server="socks5://127.0.0.1:7777" 217 <p>
218 </code> 218 So it worked! But only resolving our own records is boring. So we
219 219 can give our identity (the public key of it to be precise) to
220 <p> 220 someone else so they can try to resolve our records, too. The
221 Now we should be able to resolve our GNS names in the browser! We 221 other person (Bob) has to add it to his namestore like this:
222 just have to type "https://ccc.myself" into the address bar. If 222 </p>
223 our friend Bob prepared his system, too, he can resolve our record 223 <p>
224 by typing "ccc.alice.myself". 224 <code>
225 </p> 225 $ gnunet-namestore -z myself -a -e never -p -t PKEY -n alice -V HWTYD3P5D77JVFNVMZ1M5T10V4SZYNMY3PCGQCSVENKD6ZCRKPMG
226</section> 226 </code>
227<section> 227 </p>
228 <h4>{{ _("VPN") }}</h4> 228 <p>
229 229 Our identity in Bobs namestore is a public record (-p) and never
230 <p> 230 expires (-e never). Now Bob (let's assume he has called his
231 TBD 231 identity myself, too) should be able to resolve our "ccc" record,
232 </p> 232 too!
233</section> 233 </p>
234 <p>
235 <code>
236 $ gnunet-gns -t A -u ccc.alice.myself<br>
237 ccc.alice.myself:<br>
238 Got `A' record: 195.54.164.39
239 </code>
240 </p>
241 <p>
242 It can continue like this. A friend of Bob would be able to
243 resolve our records too because Bob published our identity in a
244 public record. Bobs friend would simply use "ccc.alice.bob.myself"
245 to resolve our "ccc" record.
246 </p>
247 <p>
248 See the <a href="https://docs.gnunet.org/handbook/gnunet.html#First-steps-_002d-Using-the-GNU-Name-System">chapter "Using the GNU Name System" in our handbook</a> for a more detailed documentation.
249 </p>
250 </section>
251
252
253 <section id='gns_proxy'>
254 <h3><a name="gns_browser" class="subnav-anchor"></a>{{ _("Name resolution using GNS with a browser") }}</h3>
255
256 <p>
257 In the previous use case "Name resolution using GNS on the command line" we got an idea
258 about what GNS is about, but now let's use it with a browser, to make it actually useful. Currently Firefox and Chromium are known to work.
259 </p>
260
261 <p>
262 Many websites enforce HTTPS and thus provide certificates for
263 their hostnames (and not our GNS names). Browsers don't like wrong
264 hostnames in certificates and will present error messages. So GNUnet
265 has to trick them by generating own certificates for our GNS
266 names. This means we need to create our own certificate authority
267 and tell our browser about it. Luckily there's a script for it:
268 </p>
269 <p>
270 <code>
271 $ gnunet-gns-proxy-setup-ca
272 </code>
273 </p>
274 <p>After executing this script the Browser has to be restarted.</p>
275
276 <p>
277 GNUnet provides a proxy service (gnunet-gns-proxy) that the
278 browser can send DNS and HTTP traffic to. It will try to resolve
279 names with GNS first and forward the rest of the DNS traffic to
280 the system's DNS resolver. It will also take care of the HTTP
281 traffic, so the browser gets valid certificates and the web server
282 will not be confused by our GNS hostnames. Our GNS namestore
283 doesn't know about any DNS hostnames yet, so we have to store
284 them, too. For our "ccc" A record, we have to store a LEHO (legacy
285 hostname) record, too. It must contain the website's original DNS
286 hostname:
287 </p>
288 <p>
289 <code>
290 $ gnunet-namestore -z myself -a -e "1 d" -p -t LEHO -n ccc -V www.ccc.de
291 </code>
292 </p>
293 <p>Now let's start gnunet-gns-proxy.</p>
294 <p>
295 <code>
296 $ /usr/lib/gnunet/libexec/gnunet-gns-proxy
297 </code>
298 </p>
299 <p>
300 Our browser has to be configured so it uses our proxy. In Firefox
301 we have to set these options under "about:config":
302 </p>
303 <p>
304 <code>
305 network.proxy.socks: localhost<br>
306 network.proxy.socks_port: 7777<br>
307 network.proxy.socks_remote_dns true<br>
308 network.proxy.type: 1
309 </code>
310 </p>
311 <p>
312 To tell Chromium to use the proxy, it has to be started with the
313 "--proxy-server" command line option:
314 </p>
315 <p>
316 <code>
317 $ chromium --proxy-server="socks5://127.0.0.1:7777"
318 </code>
319 </p>
320 <p>
321 Now we should be able to resolve our GNS names in the browser! We
322 just have to type "https://ccc.myself" into the address bar. If
323 our friend Bob prepared his system, too, he can resolve our record
324 by typing "ccc.alice.myself".
325 </p>
326 <p>
327 See the <a href="https://docs.gnunet.org/handbook/gnunet.html#Integration-with-Browsers">chapter on Integration with Browsers in our handbook</a> for a more detailed description.
328 </p>
329 </section>
330 <section>
331 <h3><a name="vpn" class="subnav-anchor"></a>{{ _("VPN") }}</h3>
332 <p>
333 VPN can be used to share your Internet connection (yes, this may be dangerous, just as running a Tor exit node) or to provide access to services on your host (this should be less dangerous, as long as those services are secure).
334 </p>
335 <p>
336 In this tutorial we concentrate on providing access to services on your host.
337 </p>
338 <p>
339 For documentation to share your Internet connection have a look into <a href="https://docs.gnunet.org/handbook/gnunet.html#Configuring-the-GNUnet-VPN">chapter "Configuring the GNUnet VPN" in the handbook.</a>
340 </p>
341 <p>
342 First you have to edit your gnunet.conf and add this section.
343 </p>
344 <p>
345 <code>
346 [exit]</br>
347 START_ON_DEMAND = YES
348 </code>
349 </p>
350 <p>
351 This is necessary to start the exit daemon.
352 </p>
353 <p>
354 Furthermore you need to add a section for your service.
355 </p>
356 <p>
357 <code>
358 [http.gnunet.]</br>
359 TCP_REDIRECTS = 80:169.254.86.1:80
360 </code>
361 </p>
362 <p>
363 Here a service named 'http' is configured to be accessed on a remote and local host on port 80. The IP address is the default IP address for the exit interface. If you like to change to another private IP address range you can change the option in section 'exit':
364 </p>
365 <p>
366 <code>
367 IPV4ADDR = 169.254.86.1
368 </code>
369 </p>
370 <p>
371 Now we have to add a GNS record to the namestore.
372 </p>
373 <p>
374 <code>
375 gnunet-namestore -z myself -a -e "1 d" -p -t VPN -n www -V "1 PKEY http"
376 </code>
377 </p>
378 <p>
379 Where myself is the name of the zone we already used <a href='#gns_proxy'>above</a>, but now we are adding a record of type VPN, and the value is a string containing three values. A boolean indicating the use of TCP or UDP (TCP in the example above), the public key of your node and the identifier of the service we used <a href='#'>above</a> ([http.gnunet.].
380 </p>
381 <p>
382 After we added this record we should be able to access www.myself like we did ccc.myself via the browser <a href='#gns_proxy'>above</a>.
383 </p>
384 <p>
385 The UI version of this Tutorial can be find in Chapter <a href='https://docs.gnunet.org/handbook/gnunet.html#First-steps-_002d-Using-the-GNUnet-VPN'>Using the GNUnet VPN</a> in the handbook.
386 </p>
387 </section>
388 <section>
389 <h3><a name="conversation" class="subnav-anchor"></a>{{ _("Conversation") }}</h3>
390 <p>
391 TBD, see <a href="https://docs.gnunet.org/handbook/gnunet.html#First-steps-_002d-Using-GNUnet-Conversation">chapter "Using GNUnet Conversation" in the handbook.</a>
392 </p>
393 </section>
394 </div>
395 </div>
234</article> 396</article>
235{% endblock body_content %} 397{% endblock body_content %}
diff --git a/template/video.html.j2 b/template/video.html.j2
index fbfa1b6f..35447f55 100644
--- a/template/video.html.j2
+++ b/template/video.html.j2
@@ -1,45 +1,399 @@
1{% extends "common/base.j2" %} 1{% extends "common/base.j2" %}
2{% block body_content %} 2{% block body_content %}
3<div class="container"> 3<article class="container">
4<div class="container"> 4
5 <div class="container"> 5 <header>
6 <div class="text-center"> 6 <h1>{{ _("Videos related to GNUnet") }}</h1>
7 <header> 7 </header>
8 <h1>{{ _("Talks related to GNUnet") }}</h1>
9 </header>
10 </div>
11 </div>
12 8
13 <div class="row"> 9 <div class="row">
14 <div class="col-lg-12"> 10 <div class="col-lg-12">
11 <!-- FIXME
12 - some links are missing
13 - most of the videos are loaded from git which is a bottleneck for performance. idea: replace some with orginal sources (media.ccc.de, ...)
14 -->
15 <!-- ##### TEMPLATE #####
16 <div class="row container">
17 <div class="col-md-5 col-12">
18 <video width="100%" height="100%" controls preload="none">
19 <source src="">
20 Your browser does not support the video tag.
21 </video>
22 </div>
23 <div class="col">
15 24
16 <h3>{{ _("2015") }}</h3> 25 </div>
17 <ul> 26 </div>
18 <li><a href="https://web.archive.org/web/20160507034806/https://gnunet.org/guix2015video">Reproducible Software Deployment with GNU Guix</a></li> 27 -->
19 </ul> 28
20 <h3>{{ _("2014") }}</h3> 29 <h2>{{ _("2019") }}</h2>
30 <hr>
31 <div class="row container">
32 <div class="col-md-5 col-12">
33 <video width="100%" height="100%" controls preload="none">
34 <source src="https://git.gnunet.org/gnunet-videos-2019.git/plain/IETF104/GNU_Name_System_-_2019_Edition_IETF104__Christian_Grothoff.mkv" type="video/webm">
35 Your browser does not support the video tag.
36 </video>
37 </div>
38 <div class="col">Christian Grothoff, GNU Name System, IETF
39 </div>
40 </div>
41
42 <h2>{{ _("2018") }}</h2>
43 <hr>
44 <div class="row container">
45 <div class="col-md-5 col-12">
46 <video width="100%" height="100%" controls preload="none">
47 <source src="https://git.gnunet.org/gnunet-videos-2018.git/plain/Datenspuren2018/DS2018-9337-deu-State_of_the_GNUnet_webm-hd.webm" type="video/webm">
48 Your browser does not support the video tag.
49 </video>
50 </div>
51 <div class="col">
52 t3sserakt, State of the GNUnet, Datenspuren 2018
53 </div>
54 </div>
55 <div class="row container">
56 <div class="col-md-5 col-12">
57 <video width="100%" height="100%" controls preload="none">
58 <source src="https://git.gnunet.org/gnunet-videos-2018.git/plain/hack.lu/Hack.lu_2018_LT_-_GNUnet_-_You_Broke_The_Internet_Lets_Make_A_GNU_One__sva.webm" type="video/webm">
59 Your browser does not support the video tag.
60 </video>
61 </div>
62 <div class="col">
63 sva, You Broke The Internet - Lets Make A GNU One, hack.lu
64 </div>
65 </div>
66 <div class="row container">
67 <div class="col-md-5 col-12">
68 <video width="100%" height="100%" controls preload="none">
69 <source src="https://git.gnunet.org/gnunet-videos-2018.git/plain/GNS_-_The_GNU_Name_System_-_Overview.mkv" type="video/webm">
70 Your browser does not support the video tag.
71 </video>
72 </div>
73 <div class="col">
74 Christian Grofhoff, GNS - The GNU Name System - Overview
75 </div>
76 </div>
77
78 <h2>{{ _("2017") }}</h2>
79 <hr>
80 <div class="row container">
81 <div class="col-md-5 col-12">
82 <video width="100%" height="100%" controls preload="none">
83 <source src="https://git.gnunet.org/gnunet-videos-2017.git/plain/34c3/34c3-chaoswest-1-eng-Three_Ways_to_Enhance_Metadata_Protection_Beyond_Tor_-_secushareorg_webm-hd.webm" type="video/webm">
84 Your browser does not support the video tag.
85 </video>
86 </div>
87 <div class="col">
88 lynX, Three Ways to Enhance Metadata Protection Beyond Tor, 34C3
89 </div>
90 </div>
91 <div class="row container">
92 <div class="col-md-5 col-12">
93 <video width="100%" height="100%" controls preload="none">
94 <source src="https://git.gnunet.org/gnunet-videos-2017.git/plain/34c3/34c3-chaoswest-2-eng-Modeling_Trust_in_a_Distributed_Private_Social_Network_-_secushareorg_webm-hd.webm" type="video/webm">
95 Your browser does not support the video tag.
96 </video>
97 </div>
98 <div class="col">
99 t3sserakt, Modeling Trust in a Distributed Private Social Network, 34C3
100 </div>
101 </div>
102 <div class="row container">
103 <div class="col-md-5 col-12">
104 <video width="100%" height="100%" controls preload="none">
105 <source src="https://git.gnunet.org/gnunet-videos-2017.git/plain/34c3/34c3-chaoswest-7-eng-Scalable_and_privacy-respectful_distributed_systems_-_Our_chance_to_avoid_cloud_computing_webm-hd.webm" type="video/webm">
106 Your browser does not support the video tag.
107 </video>
108 </div>
109 <div class="col">
110 lynX, Scalable and privacy-respectful distributed systems - Our chance to avoid cloud computing, 34C3
111 </div>
112 </div>
113 <div class="row container">
114 <div class="col-md-5 col-12">
115 <video width="100%" height="100%" controls preload="none">
116 <source src="https://git.gnunet.org/gnunet-videos-2017.git/plain/34c3/34c3-chaoswest-6-eng-Privacy-Oriented_Distributed_Networking_for_an_Ethical_Internet_-_including_50_subsystems_of_GNUnet_webm-hd.webm" type="video/webm">
117 Your browser does not support the video tag.
118 </video>
119 </div>
120 <div class="col">
121 lynX and Christian Grothoff, Privacy-Oriented Distributed Networking for an Ethical Internet, 34C3
122 </div>
123 </div>
124
125 <h2>{{ _("2016") }}</h2>
126 <hr>
127 <div class="row container">
128 <div class="col-md-5 col-12">
129 <video width="100%" height="100%" controls preload="none">
130 <source src="https://git.gnunet.org/gnunet-videos-2016.git/plain/Battlemeshv9/Gnunet%20For%20Mesh%20Communities%20-%20Battlemesh%20v9%20(Porto,%20Portugal).mp4" type="video/mp4">
131 Your browser does not support the video tag.
132 </video>
133 </div>
134 <div class="col">
135 Daniel Golle, Gnunet For Mesh Communities, Battlemesh v9 (Porto, Portugal)
136 </div>
137 </div>
138 <div class="row container">
139 <div class="col-md-5 col-12">
140 <video width="100%" height="100%" controls preload="none">
141 <source src="https://git.gnunet.org/gnunet-videos-2015.git/plain/GHM%202015/expose-GNUJeffBurdges19aout2016.mp4" type="video/mp4>
142 Your browser does not support the video tag.
143 </video>
144 </div>
145 <div class="col">
146 Jeff Burdges, Xolotl - A compact mixnet format with stronger forwared secrecy and hybrid anonymity, GNU Hacker Meeting
147 </div>
148 </div>
149 <div class="row container">
150 <div class="col-md-5 col-12">
151 <video width="100%" height="100%" controls preload="none">
152 <source src="https://git.gnunet.org/gnunet-videos-2016.git/plain/Datenspuren2016/DS2016-7775-deu-Secushare_webm-hd.webm" type="video/webm">
153 Your browser does not support the video tag.
154 </video>
155 </div>
156 <div class="col">
157 t3sserakt and xrs, Secushare, Datenspuren 2016
158 </div>
159 </div>
21 <ul> 160 <ul>
22 <li><a href="/web/20160507034806/https://gnunet.org/31c3videos">31c3 "We fix the net" workshop talks</a></li>
23 <li><a href="/web/20160507034806/https://gnunet.org/ghm2014knock">Julian Kirsch on "Knocking down the HACIENDA"</a> at GHM 2014</li>
24 <li><a href="/web/20160507034806/https://gnunet.org/schaar2014tum">Peter Schaar on "Technik, Recht und Überwachung"</a> at TUM</li>
25 <li><a href="/web/20160507034806/https://gnunet.org/oxford2014grothoff">Christian Grothoff on "A Public Key Infrastructure for Social Movements in the Age of Universal Surveillance"</a> at the Univeristy of Oxford</li>
26 <li><a href="/web/20160507034806/https://gnunet.org/coe">Jacob Appelbaum, Douwe Korff and Christian Grothoff on "After Snowden: using law and technology to counter snooping" at Counsil of Europe </a></li>
27 </ul> 161 </ul>
28 <h3>{{ _("2013") }}</h3> 162
163 <h2>{{ _("2015") }}</h2>
164 <hr>
165 <!-- FIXME: source only available on yt. <li>Ludovic Courtès, <a href="">Reproducible Software Deployment with GNU Guix</a>, Inria</li> -->
166 <!-- FIXME: source not available. <li><a href="https://git.gnunet.org/gnunet-videos-2015.git/plain/32c3/byzantine-fault-tolerant-set-consensus-with-efficient-set-reconciliation.mp4">Byzantine fault tolerant set consensus with efficient set reconciliation</a>, 32C4 -->
167 <div class="row container">
168 <div class="col-md-5 col-12">
169 <video width="100%" height="100%" controls preload="none">
170 <source src="https://git.gnunet.org/gnunet-videos-2015.git/plain/psc2015/grothoff.webm" type="video/webm">
171 Your browser does not support the video tag.
172 </video>
173 </div>
174 <div class="col">
175 Christian Grothoff, The Architecture of the GNUnet: 45 Subsystems in 45 Minutes
176 </div>
177 </div>
178 <div class="row container">
179 <div class="col-md-5 col-12">
180 <video width="100%" height="100%" controls preload="none">
181 <source src="https://git.gnunet.org/gnunet-videos-2015.git/plain/Datenspuren2015/datenspuren15-7069-de-EDN_-_Echt_Dezentrales_Netzwerk_webm.webm" type="video/webm">
182 Your browser does not support the video tag.
183 </video>
184 </div>
185 <div class="col">
186 t3sserakt and demos, Echt Dezentrales Netzwerk, Datenspuren 2015
187 </div>
188 </div>
189 <div class="row container">
190 <div class="col-md-5 col-12">
191 <video width="100%" height="100%" controls preload="none">
192 <source src="https://git.gnunet.org/gnunet-videos-2015.git/plain/BattleMeshV8/GNUnet%20in%20Community%20Mesh%20Networks%20+%20Slides%20-%20BattleMeshV8.mkv" type="video/webm">
193 Your browser does not support the video tag.
194 </video>
195 </div>
196 <div class="col">
197 Daniel Golle, GNUnet in Community Networks, BattleMesh 2015
198 </div>
199 </div>
29 <ul> 200 <ul>
30 <li><a href="/web/20160507034806/https://gnunet.org/bart2013ccc">Bart Polot on "GNUnet CADET and GNUnet Conversation" at YBTI/30c3</a></li>
31 <li><a href="/web/20160507034806/https://gnunet.org/video-30c3-talk-gnu-name-system">2013: Christian Grothoff on "The GNU Name System" at 30c3</a></li>
32 <li><a href="/web/20160507034806/https://gnunet.org/markus2013bsdefense">Markus Teich on "Monkey - Generating Useful Bug Reports Automatically" at TUM</a></li>
33 <li><a href="/web/20160507034806/https://gnunet.org/videoghm2013">Christian Grothoff "The GNU Name System and the Future of Social Networking with GNUnet" at GHM</a></li>
34 <li><a href="/web/20160507034806/https://gnunet.org/internetistschuld">Christian Grothoff, Carlo von Lynx, Jacob Appelbaum and Richard Stallman: "You broke the Internet. We're making ourselves a GNU one."</a> in Berlin</li>
35 <li><a href="/web/20160507034806/https://gnunet.org/tor2013tum-video">Roger Dingledine and Jacob Appelbaum: "Q &amp; A" at TUM</a></li>
36 <li><a href="/web/20160507034806/https://gnunet.org/regex-max-defense">Maximilian Szengel on "Decentralized Evaluation of Regular Expressions for Capability Discovery in Peer-to-Peer Networks" at TUM</a></li>
37 </ul> 201 </ul>
38 <h3>{{ _("2012") }}</h3> 202
39 <ul> 203 <h2>{{ _("2014") }}</h2>
40 <li><a href="/web/20160507034806/https://gnunet.org/martin-ms-defense-gads">Martin Schanzenbach on "A Censorship-Resistant and Fully Decentralized Naming System" at TUM</a></li> 204 <hr>
41 <li><a href="/web/20160507034806/https://gnunet.org/rms2012tum">Richard Stallman on "Copyright vs. Community" at TUM</a></li> 205 <!-- FIXME: no source link on web. <li>Julian Kirsch, <a href="">"Knocking down the HACIENDA"</a>, GNU Hacker Meeting 2014</li> -->
206 <!-- FIXME: no source link on web. <li>Peter Schaar, <a href="">"Technik, Recht und Überwachung"</a>, Technische Universität München</li> -->
207 <!-- FIXME: no source link on web. <li>Christian Grothoff, <a href="">"A Public Key Infrastructure for Social Movements in the Age of Universal Surveillance"</a>, University of Oxford</li> -->
208 <div class="row container">
209 <div class="col-md-5 col-12">
210 <video width="100%" height="100%" controls preload="none">
211 <source src="https://git.gnunet.org/gnunet-videos-2014.git/plain/31c3/voting-voting.webm" type="video/webm">
212 Your browser does not support the video tag.
213 </video>
214 </div>
215 <div class="col">
216 Florian Dold, Electronic Voting and Key Generation in Distributed Systems, 31C3
217 </div>
218 </div>
219 <div class="row container">
220 <div class="col-md-5 col-12">
221 <video width="100%" height="100%" controls preload="none">
222 <source src="https://git.gnunet.org/gnunet-videos-2014.git/plain/31c3/freedombox-freedombox.webm" type="video/webm">
223 Your browser does not support the video tag.
224 </video>
225 </div>
226 <div class="col">
227 Markus Sabadello and Suhin Mohan Adapa, FreedomBox Status Update, 31C3
228 </div>
229 </div>
230 <div class="row container">
231 <div class="col-md-5 col-12">
232 <video width="100%" height="100%" controls preload="none">
233 <source src="https://git.gnunet.org/gnunet-videos-2014.git/plain/31c3/fenrir-fenrir.webm" type="video/webm">
234 Your browser does not support the video tag.
235 </video>
236 </div>
237 <div class="col">
238 Lucas Fulchir, why TLS sucks and what I'm doing about it, 31C3
239 </div>
240 </div>
241 <div class="row container">
242 <div class="col-md-5 col-12">
243 <video width="100%" height="100%" controls preload="none">
244 <source src="https://git.gnunet.org/gnunet-videos-2014.git/plain/31c3/do-panic-do-panic.webm" type="video/webm">
245 Your browser does not support the video tag.
246 </video>
247 </div>
248 <div class="col">
249 Nicolas Benes, Panic! An approach for home routers to securely erase sensitive data, 31C3
250 </div>
251 </div>
252 <div class="row container">
253 <div class="col-md-5 col-12">
254 <video width="100%" height="100%" controls preload="none">
255 <source src="https://git.gnunet.org/gnunet-videos-2014.git/plain/2014-coe.webm" type="video/webm">
256 Your browser does not support the video tag.
257 </video>
258 </div>
259 <div class="col">
260 Jacob Appelbaum, Douwe Korff and Christian Grothoff, After Snowden: using law and technology to counter snooping, Counsil of Europe
261 </div>
262 </div>
263 <div class="row container">
264 <div class="col-md-5 col-12">
265 <video width="100%" height="100%" controls preload="none">
266 <source src="https://git.gnunet.org/gnunet-videos-2014.git/plain/31c3/taler-taler.webm" type="video/webm">
267 Your browser does not support the video tag.
268 </video>
269 </div>
270 <div class="col">
271 Christian Grothoff and Florian Dold, Taler, 31C3
272 </div>
273 </div>
274 <div class="row container">
275 <div class="col-md-5 col-12">
276 <video width="100%" height="100%" controls preload="none">
277 <source src="https://git.gnunet.org/gnunet-videos-2014.git/plain/31c3/queries-queries.webm" type="video/webm">
278 Your browser does not support the video tag.
279 </video>
280 </div>
281 <div class="col">
282 Markus Benter, Complex Queries in P2P networks, 31C3
283 </div>
284 </div>
285 <div class="row container">
286 <div class="col-md-5 col-12">
287 <video width="100%" height="100%" controls preload="none">
288 <source src="https://git.gnunet.org/gnunet-videos-2014.git/plain/31c3/net2o-net2o.webm" type="video/webm">
289 Your browser does not support the video tag.
290 </video>
291 </div>
292 <div class="col">
293 Bernd Paysan, net2o - Reinventing the internet, 31C3
294 </div>
295 </div>
296
297 <h2>{{ _("2013") }}</h2>
298 <hr>
299 <!-- FIXME: no source link on web. <li>Bart Polot, <a href="">"GNUnet CADET and GNUnet Conversation" at YBTI/30c3</a>, 30C3</li> -->
300 <!-- FIXME: no media link. <li>Roger Dingledine and Jacob Appelbaum, "Q &amp; A", Technische Universität München (<a href="https://archive.org/details/RogerDingledineAndJacobAppelbaumQAMarathon" download>download</a>)</li> -->
301 <!-- FIXME: no source link on web. <li>Maximilian Szengel, <a href="">"Decentralized Evaluation of Regular Expressions for Capability Discovery in Peer-to-Peer Networks"</a>, Technische Universität München</li> -->
302 <div class="row container">
303 <div class="col-md-5 col-12">
304 <video width="100%" height="100%" controls preload="none">
305 <source src="https://git.gnunet.org/gnunet-videos-2013.git/plain/you%20broke%20the%20internet/internetistschuld.webm" type="video/webm">
306 Your browser does not support the video tag.
307 </video>
308 </div>
309 <div class="col">
310 Christian Grothoff, Carlo von Lynx, Jacob Appelbaum and Richard Stallman, You broke the Internet. We're making ourselves a GNU one., Berlin
311 </div>
312 </div>
313 <div class="row container">
314 <div class="col-md-5 col-12">
315 <video width="100%" height="100%" controls preload="none">
316 <source src="https://audio-video.gnu.org/video/ghm2013/Christian_Grothoff-The_GNU_Name_System_and_the_Future_of_Social_Networking_with_GNUnet_.webm" type="video/webm">
317 Your browser does not support the video tag.
318 </video>
319 </div>
320 <div class="col">
321 Christian Grothoff, The GNU Name System and the Future of Social Networking with GNUnet, GHM
322 </div>
323 </div>
324 <div class="row container">
325 <div class="col-md-5 col-12">
326 <video width="100%" height="100%" controls preload="none">
327 <source src="https://media.net.in.tum.de/v/Oberseminar-SS13--Monkey_-_Generating_Useful_Bug_R">
328 Your browser does not support the video tag.
329 </video>
330 </div>
331 <div class="col">
332 Markus Teich, Monkey, generating Useful Bug Reports Automatically, Technische Universität München
333 </div>
334 </div>
335 <div class="row container">
336 <div class="col-md-5 col-12">
337 <video width="100%" height="100%" controls preload="none">
338 <source src="https://cdn.media.ccc.de/congress/2013/mp4-lq/30c3-5212-en-The_GNU_Name_System_h264-iprod.mp4">
339 Your browser does not support the video tag.
340 </video>
341 </div>
342 <div class="col">
343 Christian Grothoff, The GNU Name System, 30C3
344 </div>
345 </div>
346
347 <h2>{{ _("2012") }}</h2>
348 <hr>
349 <div class="row container">
350 <div class="col-md-5 col-12">
351 <video width="100%" height="100%" controls preload="none">
352 <source src="https://media.net.in.tum.de/videoarchive/SS12/Oberseminar/2012+09+19_1600+Design+and+Implementation+of+a+Censorship+Resist/priv/camera.mp4">
353 Your browser does not support the video tag.
354 </video>
355 </div>
356 <div class="col">
357 Martin Schanzenbach, A Censorship-Resistant and Fully Decentralized Naming System, Technische Universität München
358 </div>
359 </div>
42 </ul> 360 </ul>
361
362 <h2>{{ _("2010") }}</h2>
363 <hr>
364 <div class="row container">
365 <div class="col-md-5 col-12">
366 <video width="100%" height="100%" controls preload="none">
367 <source src="https://git.gnunet.org/gnunet-videos-2010.git/plain/GHM_Hague/GNUnet_-_Transports_and_Transport_Selection.ogv">
368 Your browser does not support the video tag.
369 </video>
370 </div>
371 <div class="col">
372 Matthias Wachs, GNUnet - Transport and Transport Selection, GNU Hacker Meeting 2010
373 </div>
374 </div>
375 <div class="row container">
376 <div class="col-md-5 col-12">
377 <video width="100%" height="100%" controls preload="none">
378 <source src="https://git.gnunet.org/gnunet-videos-2010.git/plain/GHM_Hague/GNUnet_Distributed_Data_Storage_-_DHT_and_Distance_Vector_Transport.ogv">
379 Your browser does not support the video tag.
380 </video>
381 </div>
382 <div class="col">
383 Nathan S. Evans, GNUnet Distributed Data Storage - DHT and Distance Vector Transport, GNU Hacker Meeting 2010
384 </div>
385 </div>
386 <div class="row container">
387 <div class="col-md-5 col-12">
388 <video width="100%" height="100%" controls preload="none">
389 <source src="https://git.gnunet.org/gnunet-videos-2010.git/plain/GHM_Hague/Introduction_to_The_GNUnet_Peer-to-Peer_Framework.ogv">
390 Your browser does not support the video tag.
391 </video>
392 </div>
393 <div class="col">
394 Christian Grothoff, Introduction to the GNUnet Peer-to-Peer Framework, GNU Hacker Meeting 2010
395 </div>
396 </div>
43 </div> 397 </div>
44 </div> 398 </div>
45</div> 399</div>