aboutsummaryrefslogtreecommitdiff
path: root/README.org
blob: bece9a38a55af954ebfe65e9096478f82789f52d (plain) (blame)
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).