<\body> The latest \<#2018\>official\<#2019\> development version of scheme-GNUnet can be found at . It can be downloaded with . The following software needs to be installed first: <\itemize> The Autotools ( and ) (at least version 3), with the patch from applied Optionally, Racket, to build the work-in-progress Racket port. <\warning> Racket is currently unsupported, at it only recognises in Racket mode and not in R6RS mode. Once the \<#2018\>r7rs' Racket package is packaged in distributions, the porting can continue. , with the patches from and . A few bug fixes to Guile and Guile Fibers are required that might not yet be included in your distribution, see Users of can run in the checkout to create an environment where these dependencies are all present.Scheme-GNUnet uses the standard GNU build system, so to build Scheme-Gnunet, you only need to run <\shell-code> autoreconf -vif ./configure make make-racket # only when using Racket make # only when using Guile Scheme make check After building, the documentation is available at and in PDF and HTML formats.To get started, you can run the example mini-application at and point your browser at : <\shell-code> $ guile -L . -C . -l examples/nse-web.scm \ \ When GNU Guix is present, after pulling the latest Scheme-GNUnet commit, the following command can be run to verify it is authentic: <\shell-code> guix git authenticate 088ea8b27b95143584cbc36202c5a02dfe95796c "C1F3 3EE2 0C52 8FDB 7DD7 \ 011F 49E3 EE22 1917 25EE" If it isn't authentic, an error message such as the following will be written: <\shell-code> Authenticating commits 54a74dc to 431f336 (1 new commits)... [#########################################################] guix git: error: commit 431f336edd51e1f0fe059a6f6f2d4c3e9267b7bc not signed by an authorized key: C1F3 3EE2 0C52 8FDB 7DD7 \ 011F 49E3 EE22 1917 25EE \<#2018\>\<#2019\> is a recommended read.Scheme-GNUnet isn't that well-tested but still aims for being free of bugs and having many tests to prevents bugs from being introduced.When adding new code, consider writing test cases.Some things that can be tested and few methods for testing things: <\itemize> Run mutation tests.That is, replace in the source code > with =>, with , a variable reference with a variable reference , swap destination and source arguments and verify whether the tests detect these little mutations. Be exhaustive.If a procedure handles both foos and bars, write test cases that pass the procedure a foo and test cases that pass the procedure a bar.Sometimes Guile-QuickCheck can help with generating many test cases if the input has a regular structure yet many edge cases, see e.g. . Verify exception mechanisms!If a procedure is expected to handle I/O errors, simulate I/O errors and end-of-files in all the wrong places.If the procedure can raise exceptions, make sure these exceptions are raised when necessary. Tests are added in the directory and to the variable in and use .To run the test suite, run . Scheme-GNUnet aims to be portable between Schemes. It primarily supports Guile Scheme, but also supports Racket Scheme. However, the two different Schemes are incompatible. One of these is that Racket expects Scheme files to use as file extension, whereas Guile uses .. Another incompatibility is that Racket expects the Scheme files to start with . To smooth over these two differences, generates from the files. Scheme-GNUnet is currently maintained on NotABug: .Issues and pull requests can be reported and submitted here.Alternatively, for discussion about developing Scheme-GNUnet, you can send mails to and for help about how to use Scheme-GNUnet, you can contact .These are public mailing lists, so don't send anything there you wouldn't mind the whole world to know. For security-sensitive issues, you can send a mail directly to the maintainer, maximedevos@telenet.be\|mailto:maximedevos@telenet.be>, optionally encrypted and signed with a GnuPG-compatible system.The maintainer's key fingerprint is C1F3 3EE2 0C52 8FDB 7DD7 011F 49E3 EE22 1917 25EE and a copy of the key can be downloaded from . The code of Scheme-GNUnet is available under the Affero General Public License (AGPL), version 3 or later; see individual source files for details.The documentaton is available under the GNU Free Documentation License, see the start of this manual and the likewise-named appendix for details.The AGPL has some unusual conditions w.r.t. applications interacting with the network, please read it carefully. <\initial> <\collection>