unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ng0 <ng0@n0.is>
To: Amirouche Boubekki <amirouche@hypermove.net>
Cc: Guix Devel <guix-devel@gnu.org>,
	Gnunet Developers <gnunet-developers@gnu.org>
Subject: Re: gnunet-guile reboot & guix
Date: Sat, 13 Jan 2018 11:14:53 +0000	[thread overview]
Message-ID: <20180113111453.huczs6g7k4yrulmy@abyayala> (raw)
In-Reply-To: <415a3580fb65ec46e76fc97674767bfd@hypermove.net>


[-- Attachment #1.1: Type: text/plain, Size: 7778 bytes --]

Amirouche Boubekki transcribed 6.3K bytes:
> On 2018-01-13 01:49, ng0 wrote:
> > Amirouche Boubekki transcribed 1.5K bytes:
> > > Héllo all,
> > > 
> > > I restarted from scratch the gnunet-guile bindings. It was made
> > > much easier thanks to the work of ng0 on gnunet documentation and
> > > guile-bytestructures to handle C structs and unions.
> 
> ...
> 
> > > I think I need to know what's the plan/design for gnunet/guix
> > > integration to continue.
> > 
> > If you want a (relative) unprocessed summary of its history, it's
> > collected in here
> > (org-mode recommended):
> > https://gnunet.org/git/infotropique-artwork.git/tree/doc/guix-past-notes.txt
> 
> Here is an extract relevant to the current discussion:
> 
> * Design of guix/gnunet integration
> 
> > > So I can see two milestones now, as we discussed before:
> 
> > > 1. Create a variant of ‘guix publish’ that publishes over GNUnet’s
> > > file sharing (FS) service, using the neat bindings that you wrote.
> 
> > > For that you can literally copy guix/scripts/publish.scm as a
> > > starting point, and simply remove the HTTP-related code (which is a
> > > small fraction.)  The rest will be mostly identical: narinfo
> > > meta-data generation, signing.  I guess it will be easy to test it
> > > using gnunet-search and similar tools.
> 
> > > As a 2nd step, we’ll see how we can refactor things to allow code
> > > sharing between the existing ‘guix publish’ and its GNUnet variant.
> 
> > > 2. Create a variant of ‘guix substitute’ for searches through GNUnet.
> > > Again, a large part of the code is about narinfo and signature
> > > checking, and it can be reused.
> 
> > > I’m not completely clear on how search for substitutes will work,
> > > though.  Currently, when the user wants to build /gnu/store/xyz, ‘guix
> > > substitute’ simply fetches http://hydra.gnu.org/xyz.narinfo.  How will
> > > that work with GNUnet?  Are we going to look up their /gnu/store file
> > > name?
> 
> 
> > > I’m not completely clear on how search for substitutes will work,
> > > though.  Currently, when the user wants to build /gnu/store/xyz, ‘guix
> > > substitute’ simply fetches http://hydra.gnu.org/xyz.narinfo.  How will
> > > that work with GNUnet?  Are we going to look up their /gnu/store file
> > > name?
> 
> > I’ve considered a solution for that: GNUnet allows one to create
> > specific namespace and publish files under this namespace. Unlike
> > publishing under the “global namespace” where keywords are used to
> > identify a file, when publishing under a specific namespace files are
> > identified with a choosen identifier. Moreover, as a namespace is
> > basically a cryptographic key pair, and publishing a file under your
> > namespace means signing, one’s assured nobody else will publish under
> > her or his namespace. By the way, the private key associated with a
> > namespace is named “ego” or “pseudonym”.
> 
> > It’s easy to test this feature:
> 
> > # create a `test` ego/namespace
> > $ gnunet-identity -C test
> 
> > # list the known egos in the form: `name - public key`
> > $ gnunet-identity -d
> > test - M2OC987U9LFJHQ8LC9SLCV4Q0ONHJV7FMTFQ2VRPE0M9R9MK5860
> > …
> 
> > # index the file `foo.txt` under the `test` namespace
> > $ gnunet-publish -P test -t foobarbaz foo.txt
> 
> > # find the file `foo.txt`
> > $ gnunet-search gnunet://fs/sks/M2OC987U9LFJHQ8LC9SLCV4…/foobarbaz
> > #0:
> > gnunet-download -o "foo.txt" gnunet://fs/chk/PL217ODD8EDSMOIQ3UT0…
> 
> > Now if Alice wants to publish her binaries, she creates an
> > ego/namespace and publishes everything under it; Bob adds her
> > namespace’s public key to his authorized substitutes list, and when
> > installing `/gnu/store/xyz` the substitute will search for
> > `gnunet://fs/sks/<Alice’s key>/xyz`.
> 
> > Instead of publishing an archive we might also directly publish/index
> > the build, but I don’t know if it’s viable.
> 
> > Does it seem right to you?
> 
> * Another discusion about guix integration
> 
> > > Instead of using ‘file-system-tree’, this variant should probably use
> > > ‘live-paths’ from (guix store), which returns the list of live store
> > > items.
> 
> > Well, `file-system-tree` is only used to recursively index a random
> > directory’s content (in our case, a single store item). It looked viable
> > for publishing a single store item, but won’t be good for indexing at
> > once the entire set of live paths; I should ask the GNUnet team how to
> > properly index such a huge amount of directories.
> 
> > On my machine, running `live-paths` takes ~2 seconds, but the
> > publication of the entire store will probably take much longer anyway.
> 
> > > BTW, I noticed there’s quite a bunch of global variables that are
> > > ‘set!’.  It would be better to avoid that, but I suppose the
> > > continuation-passing style that the GNUnet libraries impose makes it
> > > difficult.
> 
> > Hopefully, using the “closure” parameters of the GNUnet API in the
> > bindings should reduce the need for global variables, and improve
> > elegance of end-user programs.
> 
> 
> > > > Nitpick: it’s a bit annoying that we have to specify a GNUnet
> > > > configuration file.
> > > 
> > > Yes, GNUnet programs usually look for `~/.config/gnunet.conf`, and
> > > `publish-gnunet` does the same. Now, maybe `publish-gnunet` could
> > > somehow obtain the config file used by `gnunet-arm`?
> 
> > No, it would need the config file to figure out how to talk to
> > gnunet-service-arm (or any other service). And we do support running
> > many instances of peers on the same host, which really means the config
> > is the only way to find out.
> 
> The rest of ng0 reply:
> 
> > 
> > On various occasions it was made clear to me that FS isn't ready for
> > such
> > usage and we would need to extend it if we start working on it. I could
> > be
> > wrong, but to some degree our implementation of our own designs has some
> > mistakes, if I remember Grothoff right.
> > 
> > Bits and pieces without what I came up with in winter 2016:
> > 
> > * anonymous levels aren't necessary for sharing code
> > ** update on this: one (or more?) other OS' is looking into Guix+GNUnet
> >    as well and I'm not sure if they would rely on anonymity. Imo it
> > makes
> >    no sense for the start. anonymity setting 0 would work for a start.
> 
> Anonymity is easily configurable.

Sure.

> > Before I share my part of the ideas, maybe someone who wasn't involved
> > in the on-and-off discussions could add their ideas? Fresh ideas could
> > bring new perspectives we haven't seen.
> > 
> > 
> > For the Guix part I just know that it should be an option, not a
> > default.
> > 
> 
> Oh really? I don't see that appear in the discussion with Remi.

The copied file was a collection of work not only of Remi. There's
2 or 3 threads at least.
The idea that GNUnet FS distribution should be an option, not a
default for Guix is my understanding of how more recent discussions
(on IRC and the mailinglist, possibly even AFK chats I had with some
of the other developers). My personal idea is to make it a standard
in my redistribution of GuixSD, but primarily we want to work on
what Guix wants, not what a distro framework in development close
to GNUnet wants, for now. Of course I wouldn't complain if Guix would
pick GNUnet as default, but we'd need a good amount of testing
before we'd make it so.


-- 
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://c.n0.is/ng0_pubkeys/tree/keys
  WWW: https://n0.is/a/  ::  https://ea.n0.is

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

[-- Attachment #2: Type: text/plain, Size: 162 bytes --]

_______________________________________________
GNUnet-developers mailing list
GNUnet-developers@gnu.org
https://lists.gnu.org/mailman/listinfo/gnunet-developers

  reply	other threads:[~2018-01-13 11:14 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-12 21:23 gnunet-guile reboot & guix Amirouche Boubekki
2018-01-13  0:49 ` ng0
2018-01-13  9:26   ` Amirouche Boubekki
2018-01-13 11:14     ` ng0 [this message]
2018-01-13 21:31 ` Ludovic Courtès
2018-01-14  0:45   ` ng0

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180113111453.huczs6g7k4yrulmy@abyayala \
    --to=ng0@n0.is \
    --cc=amirouche@hypermove.net \
    --cc=gnunet-developers@gnu.org \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).