-- apps: end-user applications (i.e., gnunet-search)
-- connectors: libraries requiring services (i.e., libgnunetstatistics)
-- libs: standalone libraries (i.e., libgnunetecrs, etc.)
-- plugins: loadable plugins (i.e., TCP transport, MySQL backend)
- * transports: udp/tcp/http/dv???
-- services: arm-controlled applications (i.e., gnunet-service-statistics)
-- util: library for everyone
+- gnunet-NAME: end-user applications (i.e., gnunet-search, gnunet-arm)
+- gnunet-service-NAME: service processes with accessor library (i.e., gnunet-service-arm)
+- libgnunetNAME: accessor library (_service.h-header) or standalone library (_lib.h-header)
+- gnunet-daemon-NAME: daemon process without accessor library (i.e., gnunet-daemon-hostlist) and no GNUnet management port
+- libgnunet_plugin_DIR_NAME: loadable plugins (i.e., libgnunet_plugin_transport_tcp)
+
+
+Coding style:
+- GNU guidelines generally apply
+- declare only one variable per line, so
+
+ int i;
+ int j;
+
+ instead of
+
+ int i,j;
+- Indentation should be done using the 'pre-commit' script in the top-level
+ directory using the patched (!) GNU indent. See also the posting at
+ https://gnunet.org/gnunetindentation
+
+
+Build-system:
+
+If you have code that is likely not to compile or build rules you might want to not
+trigger for most developers, use "if HAVE_EXPERIMENTAL" in your Makefile.am. Then
+it is OK to (temporarily) add non-compiling (or known-to-not-port) code.
+
+If you want to compile all testcases but NOT run them, run configure with the
+--enable-test-suppression option.