aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.am2
-rw-r--r--doc/documentation/.gitignore7
-rw-r--r--doc/documentation/README.txt63
-rw-r--r--doc/documentation/TODO106
-rw-r--r--doc/documentation/chapters/installation.texi54
-rw-r--r--doc/documentation/gnunet-c-tutorial.texi62
-rw-r--r--doc/hacks.el17
7 files changed, 208 insertions, 103 deletions
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 28db606c5..1070974d1 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -7,4 +7,4 @@ if !DOCUMENTATION
7endif 7endif
8 8
9EXTRA_DIST = \ 9EXTRA_DIST = \
10 outdated-and-old-installation-instructions.txt 10 outdated-and-old-installation-instructions.txt
diff --git a/doc/documentation/.gitignore b/doc/documentation/.gitignore
index 2e914d9c9..f490c3412 100644
--- a/doc/documentation/.gitignore
+++ b/doc/documentation/.gitignore
@@ -1,2 +1,9 @@
1stamp-1 1stamp-1
2version2.texi 2version2.texi
3manual
4*.fn
5*.fns
6*.ky
7*.pg
8*.tp
9*.vr
diff --git a/doc/documentation/README.txt b/doc/documentation/README.txt
deleted file mode 100644
index 9e76394c3..000000000
--- a/doc/documentation/README.txt
+++ /dev/null
@@ -1,63 +0,0 @@
1* Completion Levels:
2
3** chapters/philosophy: around 100% fixed after initial export.
4
5* What's left to do
6
7- Which Texlive modules are needed? Decrease the size.
8 - distro specific, or can we set requirements?
9- Update the content of gnunet documentation.
10- XXX: images are only generated for the html documentation
11 with gendoc.sh … FIXME!
12- XXX: png,dot, and svg images MUST be converted to eps by the
13 build system. Right now they aren't, as a result: No images.
14
15* How to use (hack) on this
16
17** with guix
18
19Adjust accordingly, ie read the Guix Documentation:
20setenv GUIX_PACKAGE_PATH "gnunet/contrib/packages/guix/packages"
21guix environment gnunet-doc
22and
23guix build -f contrib/packages/guix/gnunet-doc.scm
24
25** without guix
26
27You need to have Texinfo and Texlive in your path.
28sh bootstrap
29./configure --enable-documentation
30cd doc
31make (format you want)
32
33for example: make html, make info, make pdf
34
35* structure (relations)
36
37** gnunet.texi
38 -> chapters/developer.texi
39 -> chapters/installation.texi
40 -> chapters/philosophy.texi
41 -> chapters/user.texi
42 -> chapters/vocabulary.texi
43 -> images/*
44 -> gpl-3.0.texi
45 -> fdl-1.3.texi
46
47** gnunet-c-tutorial.texi
48 -> figs/Service.pdf
49 -> figs/System.pdf
50 -> tutorial-examples/*.c
51 -> gpl-3.0.texi
52 -> fdl-1.3.texi
53
54- gnunet-c-tutorial-v1.pdf: original LaTeX "gnunet-c-tutorial.pdf".
55- man folder: the man pages.
56- doxygen folder
57- outdated-and-old-installation-instructions.txt: self described within the file.
58
59
60Use `gendocs', add to the manual/ directory of the web site.
61
62 $ cd doc
63 $ gendocs.sh gnunet "GNUnet 0.10.X Reference Manual"
diff --git a/doc/documentation/TODO b/doc/documentation/TODO
new file mode 100644
index 000000000..fa1ce7a23
--- /dev/null
+++ b/doc/documentation/TODO
@@ -0,0 +1,106 @@
1-*- mode: org -*-
2
3TODO - or: the Documentation Masterplan.
4
5To some extent this duplicates the Mantis tickets on this topic.
6
7* Motivation
8My motivation is to read into good documentations and create a self-contained collection of books,
9which can be understood without expecting too much background knowledge in every topic.
10** User Handbook:
11The content of the User book should be mostly concerned with our current and future graphical (gtk
12as well as terminal user interface) applications. After reading Preface and maybe Philosophy, the
13person reading the User Handbook should understand with the least possible strugle the application
14they intend to use. Examples should be given and concepts explained.
15** Installation Handbook:
16As seen with requests on the mailinglist, we will have to pick up people where they are, similar
17to the User Handbook. People already used to compiling and installing should have the chance to
18skip to the end, everyone else should: have step-by-step instructions, which will either already
19include OS specific notes or will be followed by OS specific instructions. It is up for discussion
20if configuring GNUnet is 'User Handbook' or 'Installation Handbook', the current mixture in
21the Installation Handbook is not good.
22** Contributors Handbook:
23This chapter could either be reduced to a couple of sections following the theme of 'contributing
24to GNUnet' or the chapter could be extended. If we extend it, we should explain a range of topics
25that can be useful for contributors. It can be understood as a recommended reading in addition to
26the Developer Handbook then, and the Developer Handbook could simply become a better commented
27reference for the code-base.
28** Developer Handbook:
29As outlined in the last sentences, the Developer Handbook could be reduced to the necessary bits
30with enough comments to be understood without reading into the papers published over the years.
31
32
33* DONE 1. Drupal books export to LaTeX.
34* DONE 2. LaTeX conversion to Texinfo.
35* DONE 3. (initial) Fixup of syntax errors introduced in conversion chain.
36* TODO 4. Update content.
37* TODO 5. Create API Reference or similar
38* TODO 6. Create Concept Index
39* TODO 7. Create Procedure Index
40* TODO 8. Create Type Index
41* TODO 9. Create Functions Index
42* TODO 10. Properly address concerns and criticism people had/have on the old and current documentation.
43* TODO 11. Reorder structure
44* TODO more TODO.
45
46
47* Status Progress / Completion Levels
48
49** chapters/philosophy: around 100% fixed after initial export.
50
51* System Integration Tasks
52
53* Which Texlive modules are needed for every output we generate?
54* Generate the images from their dot sources.
55
56* How to use (hack) on this
57
58This section will find its way into the documentation sooner or later.
59Potentially outdated or inaccurate bits.
60
61** with guix
62
63Adjust accordingly, ie read the Guix Documentation:
64guix environment gnunet-doc
65and
66guix build -f contrib/packages/guix/gnunet-doc.scm
67
68** without guix
69
70You need to have Texinfo and Texlive in your path.
71sh bootstrap
72./configure --enable-documentation
73cd doc
74make (format you want)
75
76for example: make html, make info, make pdf
77
78* structure (relations) (old!)
79
80** gnunet.texi
81 -> chapters/developer.texi
82 -> chapters/installation.texi
83 -> chapters/philosophy.texi
84 -> chapters/user.texi
85 -> chapters/vocabulary.texi
86 -> images/*
87 -> gpl-3.0.texi
88 -> fdl-1.3.texi
89
90** gnunet-c-tutorial.texi
91 -> figs/Service.pdf
92 -> figs/System.pdf
93 -> tutorial-examples/*.c
94 -> gpl-3.0.texi
95 -> fdl-1.3.texi
96
97- gnunet-c-tutorial-v1.pdf: original LaTeX "gnunet-c-tutorial.pdf".
98- man folder: the man pages.
99- doxygen folder
100- outdated-and-old-installation-instructions.txt: self described within the file.
101
102
103Use `gendocs', add to the manual/ directory of the web site.
104
105 $ cd doc
106 $ gendocs.sh gnunet "GNUnet 0.10.X Reference Manual"
diff --git a/doc/documentation/chapters/installation.texi b/doc/documentation/chapters/installation.texi
index f2042033e..665f980be 100644
--- a/doc/documentation/chapters/installation.texi
+++ b/doc/documentation/chapters/installation.texi
@@ -19,6 +19,7 @@ it in the form of new chapters or insightful comments.
19* Build instructions for Debian 7.5:: 19* Build instructions for Debian 7.5::
20* Installing GNUnet from Git on Ubuntu 14.4:: 20* Installing GNUnet from Git on Ubuntu 14.4::
21* Build instructions for Debian 8:: 21* Build instructions for Debian 8::
22* Build instructions for macOS::
22@c * Build instructions for OpenBSD 6.2:: 23@c * Build instructions for OpenBSD 6.2::
23* Outdated build instructions for previous revisions:: 24* Outdated build instructions for previous revisions::
24@c * Portable GNUnet:: 25@c * Portable GNUnet::
@@ -1472,6 +1473,59 @@ with the default Sqlite database. Sqlite is usually fine for most
1472applications, but MySQL can offer better performance and Postgres better 1473applications, but MySQL can offer better performance and Postgres better
1473resillience. 1474resillience.
1474 1475
1476@node Build instructions for macOS
1477@section Build instructions for macOS
1478@c FIXME: I -> we
1479
1480These are the installation guidelines for macOS.
1481They were tested on macOS High Sierra.
1482
1483@menu
1484* Installing dependencies::
1485* Compile from Source::
1486@end menu
1487
1488@node Installing dependencies
1489@subsection Installing dependencies
1490
1491First, install XCode in the newest version.
1492See https://developer.apple.com/xcode/.
1493
1494Install Homebrew (https://brew.sh) and then install the dependencies listed above.
1495If a dependency does not exists in brew, you need to compile it from source.
1496
1497@example
1498# brew install <dependency>
1499@end example
1500
1501@node Compile from Source
1502@subsection Compile from Source
1503
1504Before you start building GNUnet, you need to setup your environment.
1505This means that you have to make sure the proper tools are used in the build process.
1506For example, after installing texinfo you need to make sure the new texinfo is actually used:
1507
1508@example
1509# echo 'export PATH="/usr/local/opt/texinfo/bin:$PATH"' >> ~/.bash_profile
1510@end example
1511
1512Note: brew tells you the appropriate command when executing
1513
1514@example
1515# brew info texinfo
1516@end example
1517
1518This may also be necessary for the gettext package.
1519
1520Before you start compiling, you need to make sure gcc is used and not the clang compile of your macOS system.
1521On my system, gcc was actually ``gcc-7'' and gcc pointed to the clang compiler.
1522
1523@example
1524# export CC=gcc-7
1525@end example
1526
1527After this the standard compile instructions apply.
1528
1475@c @node Build instructions for OpenBSD 6.2 1529@c @node Build instructions for OpenBSD 6.2
1476@c @section Build instructions for OpenBSD 6.2 1530@c @section Build instructions for OpenBSD 6.2
1477 1531
diff --git a/doc/documentation/gnunet-c-tutorial.texi b/doc/documentation/gnunet-c-tutorial.texi
index 7eafa9ea9..0e2adaee7 100644
--- a/doc/documentation/gnunet-c-tutorial.texi
+++ b/doc/documentation/gnunet-c-tutorial.texi
@@ -10,7 +10,7 @@
10@include version2.texi 10@include version2.texi
11 11
12@copying 12@copying
13Copyright @copyright{} 2001-2017 GNUnet e.V. 13Copyright @copyright{} 2001-2018 GNUnet e.V.
14 14
15Permission is granted to copy, distribute and/or modify this document 15Permission is granted to copy, distribute and/or modify this document
16under the terms of the GNU Free Documentation License, Version 1.3 or 16under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -68,9 +68,10 @@ dependencies can be found on our website at
68Reference Documentation (GNUnet Handbook). 68Reference Documentation (GNUnet Handbook).
69 69
70Please read this tutorial carefully since every single step is 70Please read this tutorial carefully since every single step is
71important and do not hesitate to contact the GNUnet team if you have 71important, and do not hesitate to contact the GNUnet team if you have
72any questions or problems! Check here how to contact the GNUnet 72any questions or problems! Visit this link in your webbrowser to learn
73team: @uref{https://gnunet.org/contact_information} 73how to contact the GNUnet team:
74@uref{https://gnunet.org/contact_information}
74 75
75@menu 76@menu
76 77
@@ -151,7 +152,7 @@ $ gpg --verify-files gnunet-@value{VERSION}.tar.gz.sig
151 152
152@noindent 153@noindent
153If this command fails because you do not have the required public key, 154If this command fails because you do not have the required public key,
154then you need to run this command to import it: 155then you need to run the following command to import it:
155 156
156@example 157@example
157$ gpg --keyserver keys.gnupg.net --recv-keys 48426C7E 158$ gpg --keyserver keys.gnupg.net --recv-keys 48426C7E
@@ -167,19 +168,22 @@ revoked}. You will get an error message stating that
167The next release of GNUnet will have a valid signature 168The next release of GNUnet will have a valid signature
168again. We are sorry for the inconvenience this causes. 169again. We are sorry for the inconvenience this causes.
169Another possible source you could use is our 170Another possible source you could use is our
170"gnunet" git repository which has mandatory signed commits 171"gnunet" git repository which, since the change from SVN to git in 2016,
171by every developer. 172has mandatory signed commits by every developer.
172 173
173Now you can extract the tarball and rename the resulting 174After verifying the signature you can extract the tarball.
174directory to @file{gnunet} which we will be using in the 175The resulting directory will be renamed to @file{gnunet}, which we will
175remainder of this document. 176be using in the remainder of this document to refer to the
177root of the source directory.
176 178
177@example 179@example
178$ tar xvzf gnunet-@value{VERSION}.tar.gz 180$ tar xvzf gnunet-@value{VERSION}.tar.gz
179$ mv gnunet-@value{VERSION} gnunet 181$ mv gnunet-@value{VERSION} gnunet
180$ cd gnunet
181@end example 182@end example
182 183
184@c FIXME: This can be irritating for the reader - First we say git should
185@c be avoid unless it is really required, and then we write this
186@c paragraph:
183@noindent 187@noindent
184However, please note that stable versions can be very outdated. 188However, please note that stable versions can be very outdated.
185As a developer you are @b{strongly} encouraged to use the version 189As a developer you are @b{strongly} encouraged to use the version
@@ -192,32 +196,40 @@ To successfully compile GNUnet, you need the tools to build GNUnet and
192the required dependencies. Please take a look at the 196the required dependencies. Please take a look at the
193GNUnet Reference Documentation 197GNUnet Reference Documentation
194(@pxref{Dependencies, The GNUnet Reference Documentation,, gnunet, The GNUnet Reference Documentation}) 198(@pxref{Dependencies, The GNUnet Reference Documentation,, gnunet, The GNUnet Reference Documentation})
195for a list of required dependencies 199for a list of required dependencies and
196and
197(@pxref{Generic installation instructions, The GNUnet Reference Documentation,, gnunet, The GNUnet Reference Documentation}) 200(@pxref{Generic installation instructions, The GNUnet Reference Documentation,, gnunet, The GNUnet Reference Documentation})
198read its Installation chapter for specific instructions for 201read its Installation chapter for specific instructions for
199your operating system. 202your Operating System.
200Please check the notes at the end of the configure process about 203Please check the notes at the end of the configure process about
201required dependencies. 204required dependencies.
202 205
203For GNUnet bootstrapping support and the HTTP(S) plugin you should 206For GNUnet bootstrapping support and the HTTP(S) plugin you should
204install @uref{https://gnunet.org/gnurl, libgnurl}. 207install @uref{https://gnunet.org/gnurl, libgnurl}.
205For the filesharing service you should install at least one of the 208For the filesharing service you should install at least one of the
206datastore backends. MySQL, SQlite and PostgreSQL are supported. 209datastore backends (MySQL, SQlite and PostgreSQL are supported).
207 210
208@node Obtaining the latest version from Git 211@node Obtaining the latest version from Git
209@section Obtaining the latest version from Git 212@section Obtaining the latest version from Git
210 213
211The latest development version can obtained from our Git repository. 214The latest development version can be obtained from our Git repository.
212To obtain the code you need to have @code{Git} installed, which is 215To get the code you need to have @code{Git} installed. Usually your
213required for obtaining the repository via: 216Operating System package manager should provide a suitable distribution
217of git (otherwise check out Guix or Nix). If you are using an Operating
218System based on Debian's apt:
219
220@example
221$ sudo apt-get install git
222@end example
223
224This is required for obtaining the repository, which is achieved with
225the following command:
214 226
215@example 227@example
216$ git clone https://gnunet.org/git/gnunet 228$ git clone https://gnunet.org/git/gnunet
217@end example 229@end example
218 230
219@noindent 231@noindent
220After cloning the repository you have to execute the @file{bootstrap} 232After cloning the repository, you have to execute the @file{bootstrap}
221script in the new directory: 233script in the new directory:
222 234
223@example 235@example
@@ -275,6 +287,7 @@ you do not specifiy a prefix, GNUnet is installed in the directory
275to enable verbose logging by adding @code{--enable-logging=verbose}: 287to enable verbose logging by adding @code{--enable-logging=verbose}:
276 288
277@example 289@example
290$ export PREFIX=$HOME
278$ ./configure --prefix=$PREFIX --enable-logging 291$ ./configure --prefix=$PREFIX --enable-logging
279$ make 292$ make
280$ make install 293$ make install
@@ -303,11 +316,14 @@ binaries and run GNUnet's self check.
303 316
304@example 317@example
305$ which gnunet-arm 318$ which gnunet-arm
319$PREFIX/bin/gnunet-arm
306@end example 320@end example
307 321
308@noindent 322@noindent
309should return $PREFIX/bin/gnunet-arm. It should be located in your 323should return $PREFIX/bin/gnunet-arm (where $PREFIX is the location
324you have set earlier). It should be located in your
310GNUnet installation and the output should not be empty. 325GNUnet installation and the output should not be empty.
326
311If you see an output like: 327If you see an output like:
312 328
313@example 329@example
@@ -318,9 +334,11 @@ $ which gnunet-arm
318check your PATH variable to ensure GNUnet's @file{bin} directory is 334check your PATH variable to ensure GNUnet's @file{bin} directory is
319included. 335included.
320 336
321GNUnet provides tests for all of its subcomponents. Run 337GNUnet provides tests for all of its subcomponents. Assuming you have
338successfully built GNUnet, run
322 339
323@example 340@example
341$ cd gnunet
324$ make check 342$ make check
325@end example 343@end example
326 344
@@ -387,7 +405,7 @@ a mesh on top of a DHT).
387@c \end{figure} 405@c \end{figure}
388 406
389The main service implementation runs as a standalone process in the 407The main service implementation runs as a standalone process in the
390operating system and the client code runs as part of the client program, 408Operating System and the client code runs as part of the client program,
391so crashes of a client do not affect the service process or other clients. 409so crashes of a client do not affect the service process or other clients.
392The service and the clients communicate via a message protocol to be 410The service and the clients communicate via a message protocol to be
393defined and implemented by the programmer. 411defined and implemented by the programmer.
diff --git a/doc/hacks.el b/doc/hacks.el
deleted file mode 100644
index 9f271b3af..000000000
--- a/doc/hacks.el
+++ /dev/null
@@ -1,17 +0,0 @@
1;;;; hacks.el --- a few functions to help me work on the manual
2;;;; Jim Blandy <jimb@red-bean.com> --- October 1998
3;;;; -- imported from https://git.savannah.gnu.org/cgit/guile.git/tree/doc/hacks.el
4
5(defun jh-exemplify-region (start end)
6 (interactive "r")
7 (save-excursion
8 (save-restriction
9 (narrow-to-region start end)
10
11 ;; Texinfo doesn't handle tabs well.
12 (untabify (point-min) (point-max))
13
14 ;; Quote any characters special to texinfo.
15 (goto-char (point-min))
16 (while (re-search-forward "[{}@]" nil t)
17 (replace-match "@\\&")))))