unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Deepan Sekar <dee93.jr@gmail.com>
To: guix-devel@gnu.org, gnunet-developers@gnu.org
Subject: Guix - GNUnet binary distribution roadmap
Date: Sat, 12 Apr 2014 22:51:04 +0530	[thread overview]
Message-ID: <CAO22Tr+-2DuE1WnQwYMktVDPn0p7qLLLV1dsDSHnb0nmqJZ89A@mail.gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 3113 bytes --]

Hi

Im sorry for coming up with an update in the proposal for the binary
distribution for GSoC 14 this late. I had my university exams. I hope the
shortlisting is not already over and we can still continue the discussions.

Ludo, I tried to edit the proposal in the melange page like you said but
its not possible. It seems the organization has to enable that option.

So, here's the thing:

1. The "guix package -i .." command currently looks up the package
definition and installs the package with the substituter downloading the
binaries from hydra server. If thats not possible, the derivations are
built on the local system.

modifications:
a. Change the package definitions field "url-fetch" of all the packages to
reference that the download is to be made using gnunet. This will make the
daemon run the necessary steps discussed below. The users can update to
this model after its released by using "guix pull".

b. The package definition can be retained and we can change the source code
of the substituter to by default lookup for the binaries in the GNUnet
service and if its not available, then go for the hydra server.

2. Now, whichever method above is implemented, the subsituter can be
reprogrammed to open a gnunet dht connection and get the necessary details.
The substituter finds out the dependencies of the given package from the
package definition and computes the SHA256 hash of the depencies.

3. Since the DHT uses key/value pairs to get and put data, we can use the
SHA256 hash of the dependencies of the package as the key. The name of the
package (since there is a possibility that two packages can have the same
dependencies), gnunet peer id of the user having the package and the mesh
channel identifier as the values associated with that particular key.

4. Once the values from the DHT nodes are received, the substituter filters
out the tuples with a different filename which might be present due to the
match with the hash of the dependencies used as key.

5. From the resulting entries of the corresponding values, the first peer
in the list is used to open a p2p connection in gnunet.

6. The filename and the hash are used to request for the necessary binary
from the peer. Or maybe only the hash can be used. The filename alone is
not sufficient because various versions might be present in the peer's
system. The hash on the other hand is unique.

Note: The gnunet features in the previous steps are available presently.
Only the substituter code in guix has to be written.

6. The downloaded binary is then used by guix to install the package as it
currently does.

Note: For authentication purposes, we can use signatures of the peers along
with the files.

7. Finally, with the users consent, the guix daemon can publish in the
gnunet dht pool of nodes to "put" the key/values of the package so that
other users can now use this peer as a source for the binary file later.


This is the idea for the implementation. The timeline can easily be formed
once the implementation idea is approved. The above can be divided into
phases and assigned a deadline.

Regards,
Deepan

[-- Attachment #2: Type: text/html, Size: 3664 bytes --]

             reply	other threads:[~2014-04-12 17:21 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-12 17:21 Deepan Sekar [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-04-12 17:21 Guix - GNUnet binary distribution roadmap Deepan Sekar
2014-03-20 10:23 Deepan Sekar
2014-03-21  9:35 ` Ludovic Courtès

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=CAO22Tr+-2DuE1WnQwYMktVDPn0p7qLLLV1dsDSHnb0nmqJZ89A@mail.gmail.com \
    --to=dee93.jr@gmail.com \
    --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).