diff options
author | Christian Grothoff <christian@grothoff.org> | 2019-08-13 21:13:19 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2019-08-13 21:13:19 +0200 |
commit | 08724a4492d141e3cab8e10aa7cc6efbdb06efb1 (patch) | |
tree | 1eaad6014e25ff237fe336e68d5ebb966d88c80b /template | |
parent | 9f6e459344520eac4c48dac064b38165b1f44844 (diff) | |
parent | b7e7a95d215eb4301a35331f610b02f9ed58b4cf (diff) | |
download | www-08724a4492d141e3cab8e10aa7cc6efbdb06efb1.tar.gz www-08724a4492d141e3cab8e10aa7cc6efbdb06efb1.zip |
resolve conflict
Diffstat (limited to 'template')
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 – 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ät München</a></li> | 127 | <li><a href="https://www.tum.de/">Technische Universität Mü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örderung von GNUnet e.V.") }}</h1> | 6 | <h1>{{ _("Verein zur Fö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örderung von GNUnet e.V.", an | ||
13 | association under German law to support GNUnet development. | ||
14 | The Amtsgericht Mü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ö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ü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 & 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 & 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 | |
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 | |
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 – 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 – 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ü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ünger</h1> | 68 | <h1>Julius Bü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 & 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 | |||
7 | Welcome to this GNUnet tutorial for Archlinux on a Raspberry Pi 3. If you want | ||
8 | to run a GNUnet node on a separte system, permanently online, with low energy | ||
9 | consumption, this might be the thing for you. This tutorial shows you how to | ||
10 | install, 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 | ||
15 | other Pi versions I haven't tested, but they should probably work, too. To | ||
16 | install Archlinux on the Pi3, follow the instructions from <a | ||
17 | href="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 | ||
20 | install 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 | ||
27 | compile GNUnet on our Pi.</p> | ||
28 | |||
29 | <p><code> | ||
30 | $ pacman -Su libmicrohttpd libgcrypt gnurl libunistring gnutls libidn | ||
31 | libextractor openssl libltdl sqlite texinfo which gettext zlib | ||
32 | pkg-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 | ||
38 | in 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 | ||
79 | Manager).</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> | ||
89 | Running services:<br> | ||
90 | ats (gnunet-service-ats)<br> | ||
91 | revocation (gnunet-service-revocation)<br> | ||
92 | set (gnunet-service-set)<br> | ||
93 | nat (gnunet-service-nat)<br> | ||
94 | transport (gnunet-service-transport)<br> | ||
95 | peerstore (gnunet-service-peerstore)<br> | ||
96 | hostlist (gnunet-daemon-hostlist)<br> | ||
97 | identity (gnunet-service-identity)<br> | ||
98 | namecache (gnunet-service-namecache)<br> | ||
99 | peerinfo (gnunet-service-peerinfo)<br> | ||
100 | datastore (gnunet-service-datastore)<br> | ||
101 | zonemaster (gnunet-service-zonemaster)<br> | ||
102 | zonemaster-monitor (gnunet-service-zonemaster-monitor)<br> | ||
103 | nse (gnunet-service-nse)<br> | ||
104 | cadet (gnunet-service-cadet)<br> | ||
105 | dht (gnunet-service-dht)<br> | ||
106 | core (gnunet-service-core)<br> | ||
107 | gns (gnunet-service-gns)<br> | ||
108 | statistics (gnunet-service-statistics)<br> | ||
109 | topology (gnunet-daemon-topology)<br> | ||
110 | fs (gnunet-service-fs)<br> | ||
111 | namestore (gnunet-service-namestore)<br> | ||
112 | vpn (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 | |||
123 | After starting GNUnet you should make sure that your peer is connecting to the | ||
124 | P2P-network. By typing gnunet-core you should see something like this: | ||
125 | |||
126 | <p><code> | ||
127 | > gnunet-core<br> | ||
128 | Tue Oct 30 19:58:48 2018: connection established DSTJ (timeout in 293 s)<br> | ||
129 | Tue Oct 30 19:58:48 2018: connection established A4MK (timeout in 292 s)<br> | ||
130 | Tue Oct 30 19:58:48 2018: connection established 7WRD (timeout in 299 s)<br> | ||
131 | Tue 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 | ||
137 | software.</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> | ||
155 | Hello GNUnet!<br> | ||
156 | 2018-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 | ||
160 | to 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 & 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 & 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> |