gnunet-handbook

The GNUnet Handbook
Log | Files | Refs

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.