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