See doc/scheme-gnunet.tm for documentation.
Or run "make doc/scheme-gnunet.pdf" to read the PDF documentation.
The documentation in this file is in the progress of being moved
to doc/scheme-gnunet.tm. Scheme-GNUnet is under the AGPL and FDL
(code and documentation), see doc/scheme-gnunet.tm and individual
source files for details.
The following is a left-over, see doc/scheme-gnunet.tm for documentation
instead!
scheme-GNUnet: a partial Scheme port of GNUnet
things that work
TODO: ask upstream of use of name is acceptable
TODO: more bindings, less duplication
TODO: document directory & meta data format
TODO: test suite for download & publish.
TODO (elsewhere): GNUnet service definitions for Guix in container
DONE publishing store items
(Script: gnu/gnunet/scripts/publish-store.scm)
(Described in ROADMAP.org)
DONE downloading store items
We cheat by calling the gnunet-publish binary.
Use this to publish a directory from the store!
(Script: gnu/gnunet/scripts/download-store.scm)
(Described in ROADMAP.org)
Purposes
Modules
The inverse of the former, to be implemented.
When implemented, contact guix-devel on how
to proceed. Either creates a directory structure
or a nar.
- for use by Guix and disarchive
- bit-for-bit reproducibility in directory creation
- a nice Scheme interface to GNUnet!
- gnu/gnunet/directory.scm: directory construction
- gnu/gnunet/concurrency/update.scm: a box with a value,
that can be updated, resulting in a new box. Updates
can be waited upon.
- gnu/gnunet/utils/platform-enum.scm: Platform-specific
C-style enum values.
- gnu/gnunet/concurrency/repeated-condition: different type
of conditions (TODO describe better)
- spec: it is unknown if this will turn out to be a practical abstraction.
- why: it remains to be seen if these modules will have any use
- test: these modules have (passing) tests
- good: these modules, abstractions ... are practical, and will not be scrapped
(tweaks might still be possible, and the modules could still have missing
functionality)
- wart: these modules have some ‘unniceties’ (warts). This does not prevent
the ‘good’ tag.
More refined IP, TCP, UDP, ... test good why
- gnu/gnunet/icmp/struct.scm: ICMP packet types & codes
(incomplete, to be used for error messages)
- gnu/gnunet/util/cmsg.scm: Constructing & analysing
ancillary messages (likewise)
Relative time manipulation test good
TODO: IP_PKTINFO for interface address, scope ...
TODO: message queue based upon this
TODO: nice abstraction for network errors
- gnu/gnunet/time.scm: Time units and exponential back-off.