preface.texi 9.7 KB

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