gnunet

Main GNUnet Logic
Log | Files | Refs | Submodules | README | LICENSE

preface.texi (9958B)


      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?