diff options
Diffstat (limited to 'doc/old/handbook/chapters/preface.texi')
-rw-r--r-- | doc/old/handbook/chapters/preface.texi | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/doc/old/handbook/chapters/preface.texi b/doc/old/handbook/chapters/preface.texi new file mode 100644 index 000000000..961ec0737 --- /dev/null +++ b/doc/old/handbook/chapters/preface.texi | |||
@@ -0,0 +1,212 @@ | |||
1 | @node Preface | ||
2 | @chapter Preface | ||
3 | |||
4 | @c FIXME: Do we have to mention that this is Free Software? | ||
5 | @c FIXME: where did 'Free Software' in this sentence fit before | ||
6 | @c FIXME: we changed it? | ||
7 | This collection of manuals describes GNUnet, a framework | ||
8 | for secure peer-to-peer networking with the high-level goal to provide | ||
9 | a strong foundation for a global, distributed network | ||
10 | that provides security and privacy. | ||
11 | GNUnet in that sense aims to replace the current Internet protocol stack. | ||
12 | Along with an application for secure publication of files, it has grown to | ||
13 | include all kinds of basic applications for the foundation of a new | ||
14 | Internet. | ||
15 | |||
16 | @menu | ||
17 | * About this book:: | ||
18 | * Contributing to this book:: | ||
19 | * Introduction:: | ||
20 | * Project governance:: | ||
21 | * Typography:: | ||
22 | @end menu | ||
23 | |||
24 | @node About this book | ||
25 | @section About this book | ||
26 | |||
27 | The books (described as ``book'' or ``books'' in the following) | ||
28 | bundled as the ``GNUnet Reference Manual'' are based on the historic | ||
29 | work of all contributors to previous documentation of GNUnet. | ||
30 | It is our hope | ||
31 | that the content is described in a way that does not require any | ||
32 | academic background, although some concepts will require further | ||
33 | reading. | ||
34 | |||
35 | Our (long-term) goal with these books is to keep them | ||
36 | self-contained. If you see references to Wikipedia and other external | ||
37 | sources (except for our academic papers) it means that we are working | ||
38 | on a solution to describe the explanations found there which fits our | ||
39 | use-case and licensing. | ||
40 | |||
41 | Previously the documentation was contained in Drupal books, on the | ||
42 | old website. This format was considered unmaintainable for the future, so | ||
43 | Texinfo was chosen. You might find old and very old sections in | ||
44 | here in addition to more recent content. It took a long time to | ||
45 | finish the move to Texinfo (from Drupal to LaTeX to wrong Texinfo | ||
46 | output dump to good Texinfo) and only recently (late 2018, early | ||
47 | 2019) content checking started. We apologize to the reader for | ||
48 | any inconvenience and hope you apply logic where bad advice from | ||
49 | 10 years ago can be found (pipe to sudo to install software is | ||
50 | one example). Patches (contributions) to this documentation are more | ||
51 | than welcome! | ||
52 | |||
53 | The first chapter (``Preface'') as well as the second chapter | ||
54 | (``Philosophy'') give an introduction to GNUnet as a project, what | ||
55 | GNUnet tries to achieve. ``Key Concepts'' explains the key concepts | ||
56 | in GNUnet. | ||
57 | These three chapters are the most complete in the documentation. | ||
58 | They are followed by chapters which explain specific parts of | ||
59 | GNUnet (and need more work): | ||
60 | ``Installing GNUnet'', ``GNUnet Contributors Handbook'' and | ||
61 | ``GNUnet Developer Handbook''. | ||
62 | |||
63 | @node Contributing to this book | ||
64 | @section Contributing to this book | ||
65 | |||
66 | @c FIXME: There's a good amount of repetition here, we should | ||
67 | @c FIXME: fix this. | ||
68 | The GNUnet Reference Manual is a collective work produced by various | ||
69 | people throughout the years. | ||
70 | |||
71 | The version you are reading is derived | ||
72 | from many individual efforts hosted on one of our old websites. | ||
73 | In the end it was considered to be impractical to read by | ||
74 | those who required the information. | ||
75 | With the conversion to Texinfo --- the version you are reading | ||
76 | right now --- we hope to address this in the longterm. | ||
77 | Texinfo is the documentation language of the GNU project. | ||
78 | |||
79 | While it can be intimidating at first and look scary or complicated, | ||
80 | it is just another way to express text format instructions. | ||
81 | |||
82 | We encourage you to take this opportunity and learn about Texinfo, | ||
83 | learn about GNUnet, and one word at a time we will arrive at a | ||
84 | book which explains GNUnet in the least complicated way to you. | ||
85 | |||
86 | Even when you don't want to or can't learn Texinfo, you can contribute. | ||
87 | Send us an Email or join our IRC chat room on freenode and talk with | ||
88 | us about the documentation (the preferred way to reach out is the | ||
89 | mailinglist, since you can communicate with us without waiting on | ||
90 | someone in the chatroom). | ||
91 | One way or another you can help shape the understanding of GNUnet | ||
92 | without the ability to read and understand its sourcecode. | ||
93 | |||
94 | @node Introduction | ||
95 | @section Introduction | ||
96 | |||
97 | GNUnet in its current version is the result of almost 20 years of work | ||
98 | from many contributors. So far, most contributions were made by | ||
99 | volunteers or people paid to do fundamental research. At this stage, | ||
100 | GNUnet remains an experimental system where | ||
101 | significant parts of the software lack a reasonable degree of | ||
102 | professionalism in its implementation. Furthermore, we are aware of a | ||
103 | significant number of existing bugs and critical design flaws, as some | ||
104 | unfortunate early design decisions remain to be rectified. There are | ||
105 | still known open problems; GNUnet remains an active research project. | ||
106 | |||
107 | The project was started in 2001 when some initial ideas for improving | ||
108 | Freenet's file-sharing turned out to be too radical to be easily | ||
109 | realized within the scope of the existing Freenet project. We lost | ||
110 | our first contributor on 11.9.2001 as the contributor realized that | ||
111 | privacy may help terrorists. The rest of the team concluded that it | ||
112 | was now even more important to fight for civil liberties. The first | ||
113 | release was called ``GNet'' -- already with the name GNUnet in mind, | ||
114 | but without the blessing of GNU we did not dare to call it GNUnet | ||
115 | immediately. A few months after the first release we contacted the | ||
116 | GNU project, happily agreed to their governance model and became an | ||
117 | official GNU package. | ||
118 | |||
119 | Within the first year, we created | ||
120 | @uref{https://gnu.org/s/libextractor, GNU libextractor}, a helper library | ||
121 | for meta data extraction which has been used by a few other projects | ||
122 | as well. 2003 saw the emergence of pluggable transports, the ability | ||
123 | for GNUnet to use different mechanisms for communication, starting | ||
124 | with TCP, UDP and SMTP (support for the latter was later dropped due | ||
125 | to a lack of maintenance). In 2005, the project first started to | ||
126 | evolve beyond the original file-sharing application with a first | ||
127 | simple P2P chat. In 2007, we created | ||
128 | @uref{https://gnu.org/s/libmicrohttpd, GNU libmicrohttpd} | ||
129 | to support a pluggable transport based on HTTP. In 2009, the | ||
130 | architecture was radically modularized into the multi-process system | ||
131 | that exists today. Coincidentally, the first version of the ARM | ||
132 | service (ARM: Automatic Restart Manager) | ||
133 | was implemented a day before systemd was announced. From 2009 | ||
134 | to 2014 work progressed rapidly thanks to a significant research grant | ||
135 | from the Deutsche Forschungsgesellschaft. This resulted in particular | ||
136 | in the creation of the R5N DHT, CADET, ATS and the GNU Name System. | ||
137 | In 2010, GNUnet was selected as the basis for the | ||
138 | @uref{https://secushare.org, secushare} online | ||
139 | social network, resulting in a significant growth of the core team. | ||
140 | In 2013, we launched @uref{https://taler.net, GNU Taler} to address | ||
141 | the challenge of convenient | ||
142 | and privacy-preserving online payments. In 2015, the | ||
143 | @c XXX: It is not correct to refer to pEp as pEp stylistic, | ||
144 | @c XXX: but the correct version would lead to problems with | ||
145 | @c XXX: some of our outputs and/or older versions of texinfo | ||
146 | @c XXX: and devices that display versions on consoles etc. | ||
147 | @c XXX: This is why we keep the pEp until proven that p(triple bar)p | ||
148 | @c XXX: does not create broken outputs. | ||
149 | @uref{https://pep.foundation/, pretty Easy privacy} (pEp) project | ||
150 | announced that they will use GNUnet as the technology for their | ||
151 | meta-data protection layer, ultimately resulting in GNUnet e.V. | ||
152 | entering into a formal long-term collaboration with the pEp | ||
153 | Foundation. In 2016, Taler Systems SA, a first startup using GNUnet | ||
154 | technology, was founded with support from the community. | ||
155 | |||
156 | GNUnet is not merely a technical project, but also a political | ||
157 | mission: like the GNU project as a whole, we are writing software to | ||
158 | achieve political goals with a focus on the human right of | ||
159 | informational self-determination. Putting users in control of their | ||
160 | computing has been the core driver of the GNU project. With GNUnet we | ||
161 | are focusing on informational self-determination for collaborative | ||
162 | computing and communication over networks. | ||
163 | |||
164 | The Internet is shaped as much by code and protocols as it is by its | ||
165 | associated political processes (IETF, ICANN, IEEE, etc.). | ||
166 | Similarly its flaws are not limited to the protocol design. Thus, | ||
167 | technical excellence by itself will not suffice to create a better | ||
168 | network. We also need to build a community that is wise, humble and | ||
169 | has a sense of humor to achieve our goal to create a technical | ||
170 | foundation for a society we would like to live in. | ||
171 | |||
172 | |||
173 | @node Project governance | ||
174 | @section Project governance | ||
175 | |||
176 | GNUnet, like the GNU project and many other free software projects, | ||
177 | follows the governance model of a benevolent dictator. This means | ||
178 | that ultimately, the GNU project appoints the GNU maintainer and can | ||
179 | overrule decisions made by the GNUnet maintainer. Similarly, the | ||
180 | GNUnet maintainer can overrule any decisions made by individual | ||
181 | developers. Still, in practice neither has happened in the last 20 | ||
182 | years for GNUnet, and we hope to keep it that way. | ||
183 | |||
184 | The current maintainers of GNUnet are: | ||
185 | |||
186 | @itemize @bullet | ||
187 | |||
188 | @item @uref{https://grothoff.org/christian/, Christian Grothoff} | ||
189 | @item @uref{https://schanzen.eu, Martin Schanzenbach} | ||
190 | |||
191 | @end itemize | ||
192 | |||
193 | The GNUnet project is supported by GNUnet e.V., a German association | ||
194 | where any developer can become a member. GNUnet e.V. serves as a | ||
195 | legal entity to hold the copyrights to GNUnet. GNUnet e.V. may also | ||
196 | choose to pay for project resources, and can collect donations as | ||
197 | well as choose to adjust the license of the | ||
198 | software (with the constraint that it has to remain free software). | ||
199 | In 2018 we switched from GPL3 to AGPL3, in practice these changes do | ||
200 | not happen very often. | ||
201 | |||
202 | |||
203 | @node Typography | ||
204 | @section Typography | ||
205 | |||
206 | When giving examples for commands, shell prompts are used to show if the | ||
207 | command should/can be issued as root, or if "normal" user privileges are | ||
208 | sufficient. We use a @code{#} for root's shell prompt, a | ||
209 | @code{%} for users' shell prompt, assuming they use the C-shell or tcsh | ||
210 | and a @code{$} for bourne shell and derivatives. | ||
211 | @c TODO: Really? Why the different prompts? Do we already have c-shell | ||
212 | @c TODO: examples? | ||