README: point out that LE is optional
[oweals/gnunet.git] / README
diff --git a/README b/README
index 0a9e51c87cb9d0fe2ffe718f372d5aefccaea1c9..69ab78d76c84991c233b7ecb733efe32635347bd 100644 (file)
--- a/README
+++ b/README
@@ -1,5 +1,26 @@
                        Welcome to GNUnet
 
+ToC
+===
+
+* ToC
+* What is GNUnet?
+* Dependencies
+  o direct dependencies
+  o test suite dependencies
+  o optional dependencies
+  o autotools
+* Requirements
+* How to install
+  o binary packages
+  o Scope of Operating System support
+  o Building GNUnet from source
+* Configuration
+* Usage
+* Hacking GNUnet
+* Running HTTP on port 80 and HTTPS on port 443
+* Further Reading
+* Stay tuned
 
 What is GNUnet?
 ===============
@@ -31,12 +52,15 @@ Dependencies:
 =============
 
 These are the direct dependencies for running GNUnet:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-- libmicrohttpd      >= 0.9.42
+- libmicrohttpd      >= 0.9.52
 - libgcrypt          >= 1.6
-- libgnurl           >= 7.35.0      (recommended, available from
+- A curl build against gnutls, or gnurl:
+  - libgnurl         >= 7.35.0      (recommended, available from
                                      https://gnunet.org/en/gnurl.html)
-- libcurl            >= 7.35.0      (alternative to libgnurl)
+  or
+  - libcurl          >= 7.35.0      (alternative to libgnurl)
 - libunistring       >= 0.9.2
 - gnutls             >= 3.2.12      (highly recommended a gnutls
                                      linked against libunbound)
@@ -44,33 +68,34 @@ These are the direct dependencies for running GNUnet:
   - libidn2 (prefered)
   or
   - libidn           >= 1.0
-- libextractor       >= 0.6.1       (highly recommended)
 - openssl            >= 1.0         (binary, used to generate
                                      X.509 certificate
                                      for gnunet-gns-proxy-setup-ca)
 - nss                               (certutil binary, for
                                      gnunet-gns-proxy-setup-ca)
 - libltdl            >= 2.2         (part of GNU libtool)
-- sqlite             >= 3.8         (default database, required)
-- mysql              >= 5.1         (alternative to sqlite)
-- postgres           >= 9.5         (alternative to sqlite)
+- 1 or more databases:
+  - sqlite           >= 3.8         (default database, required)
+  and/or
+  - mysql            >= 5.1         (alternative to sqlite)
+  and/or
+  - postgres         >= 9.5         (alternative to sqlite)
 - Texinfo            >= 5.2         [*1]
 - makeinfo           >= 4.8
 - make[*3]
 - which                             (contrib/apparmor(?), gnunet-bugreport,
-                                     tests (dns, gns, namestore,
-                                     scalarproduct) and possibly more)
+                                     and possibly more)
 - gettext
 - zlib
 - Posix shell                       (for some scripts)
 - Bash                              (for some scripts)
 
 These are the dependencies for GNUnet's testsuite:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 - Posix Shell                       (for some tests)
 - Bash                              (for some tests[*4])
 - python             >= 3.7         (only python 3.7 is supported)
-- python-future      >= 3.7         (only python 3.7 is supported)
 - base tools
   - mostly:
     - which,
@@ -80,8 +105,11 @@ These are the dependencies for GNUnet's testsuite:
 
 
 These are the optional dependencies:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 - Bash                              (for Docker and Vagrant)
+- libextractor       >= 0.6.1       (highly recommended[*5])
+- libjansson
 - libopus            >= 1.0.1       (for experimental conversation tool)
 - libpulse           >= 2.0         (for experimental conversation tool)
 - libogg             >= 1.3.0       (for experimental conversation tool)
@@ -109,6 +137,7 @@ These are the optional dependencies:
                                      https://github.com/schanzen/libgabe)
 
 Recommended autotools for compiling the Git version are:
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 - autoconf           >= 2.59
 - automake           >= 1.11.1
@@ -141,6 +170,24 @@ Recommended autotools for compiling the Git version are:
      in the process of being rewritten to comply
      with this requirement.
 
+[*5] While libextractor is optional, it is recommended to
+     build gnunet against it. If you install it later,
+     you won't benefit from libextractor.
+     If you are a distributor, we recommend to split
+     LE into basis + plugins rather than making LE
+     an option as an afterthought by the user.
+     LE itself is very small, but its dependency chain
+     on first, second, third etc level can be big.
+     There is a small effect on privacy if your LE build
+     differs from one which includes all
+     plugins (plugins are build as shared objects):
+     if users publish a directory with a mixture of file
+     types (for example mpeg, jpeg, png, gif) the
+     configuration of LE could leak which plugins are
+     installed for which filetypes are not providing
+     more details.
+     However, this leak is just a minor concern.
+
 Requirements
 ============
 
@@ -422,8 +469,8 @@ $ make install
 $ export $GNUNET_PREFIX=$SOMEWHERE
 $ make check
 
-Some of the testcases require python >= 3.7, and the python modules
-"python-future" (http://python-future.org/) and "pexpect" to be installed.
+Some of the testcases require python >= 3.7, and the python module
+"pexpect" to be installed.
 If any testcases fail to pass on your system, run
 "contrib/scripts/gnunet-bugreport" (in the repository) or "gnunet-bugreport"
 when you already have GNUnet installed and report its output together with
@@ -492,7 +539,7 @@ Further Reading
     https://old.gnunet.org/bibliography
 
   The Drupal access will be replaced by a new interface to our
-  bibliography in 2019.
+  bibliography in the foreseeable future.
 
 
 Stay tuned