1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# Copyright (C) 2020, 2021 Maxime Devos
# SPDX-License-Identifier: FSFAP
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
* scheme-GNUnet: a partial Scheme port of GNUnet
TODO: ask upstream of use of name is acceptable
TODO: more bindings, less duplication
TODO: document directory & meta data format
* things that work
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)
We cheat by calling the gnunet-publish binary.
Use this to publish a directory from the store!
** DONE downloading store items
(Script: gnu/gnunet/scripts/download-store.scm)
(Described in ROADMAP.org)
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.
* Purposes
+ for use by Guix and disarchive
+ bit-for-bit reproducibility in directory creation
* Modules
+ gnu/gnunet/directory.scm: directory construction
+ gnu/gnunet/util/mq.scm and friends: message queues for
network messages, and calling an appropriate handler for
each message type.
+ gnu/gnunet/message/envelope.scm: some program data around
message types (e.g. priority, notify on sent hook)
* Conventions
** Fiddling with options
Options like ‘priority’, ‘anonymity’, ‘replication’
and ‘no-index’ should be ‘passed’ using SRFI-39 parameters,
and not with positional or keyword arguments,
as they are just passed through unchanged most of the time.
* Wishlist
+ Schemification
Many procedures are less-or-more directly transcribed
from the imperative C source code. Less is preferred over
more.
+ Less copying bytevectors around
Bytevectors are often duplicated to preserve safety in presence of
buggy / insecure / hostile code in a sandbox.
* License
See the LICENSES directory for license text,
and each file with source code for the license and copyright text.
Most code is under the Affero General Public License (v3 or later),
see each source file for details.
* Contact
Maintainer: Maxime Devos <maximedevos@telenet.be>.
PGP fingerprint: C1F3 3EE2 0C52 8FDB 7DD7 011F 49E3 EE22 1917 25EE.
Patches may be sent as formatted by `git format-patch`.
E-mail messages should ideally by be signed with PGP (or GnuPG, etc.).
Presuming I'm using the word ‘notoriously’ correctly,
announcements by the maintainer of ‘taking a break’ from
Guix+GNUnet hacking are notoriously unreliable. I suggest
you disregard them (but note that sometimes these are
actually true).
|