This developer handbook is intended as first introduction to GNUnet for new developers that want to extend the GNUnet framework. After the introduction, each of the GNUnet subsystems (directories in the src/ tree) is (supposed to be) covered in its own chapter. In addition to this documentation, GNUnet developers should be aware of the services available on the GNUnet server to them.
New developers can have a look a the GNUnet tutorials for C and java available in the src/ directory of the repository or under the following links:
In addition to this book, the GNUnet server contains various resources for GNUnet developers. They are all conveniently reachable via the "Developer" entry in the navigation menu. Some additional tools (such as static analysis reports) require a special developer access to perform certain operations. If you feel you need access, you should contact Christian Grothoff, GNUnet's maintainer.
The public subsystems on the GNUnet server that help developers are:
- The Version control system keeps our code and enables distributed development. Only developers with write access can commit code, everyone else is encouraged to submit patches to the developer mailinglist.
- The GNUnet bugtracking system is used to track feature requests, open bug reports and their resolutions. Anyone can report bugs, only developers can claim to have fixed them.
- A buildbot is used to check GNUnet builds automatically on a range of platforms. Builds are triggered automatically after 30 minutes of no changes to SVN HEAD.
- Another buildbot is used to run and monitor GNUnet deployment on PlanetLab. Peer restarts are triggered manually here.
- The current quality of our automated test suite is assessed using Code coverage analysis. This analysis is run daily; however the webpage is only updated if all automated tests pass at that time. Testcases that improve our code coverage are always welcome.
- We try to automatically find bugs using a static analysis scan. This scan is run daily; however the webpage is only updated if all automated tests pass at the time. Note that not everything that is flagged by the analysis is a bug, sometimes even good code can be marked as possibly problematic. Nevertheless, developers are encouraged to at least be aware of all issues in their code that are listed.
- We use Gauger for automatic performance regression visualization. Details on how to use Gauger are here.
- We use junit to automatically test gnunet-java. Automatically generated, current reports on the test suite are here.
- We use Cobertura to generate test coverage reports for gnunet-java. Current reports on test coverage are here.