From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepan Sekar Subject: Guix - GNUnet binary distribution roadmap Date: Sat, 12 Apr 2014 22:51:04 +0530 Message-ID: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a11c14d7acb7ea804f6dbac8e Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59954) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WZ1c2-0005S0-Re for guix-devel@gnu.org; Sat, 12 Apr 2014 13:21:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WZ1c1-0000Ke-HX for guix-devel@gnu.org; Sat, 12 Apr 2014 13:21:06 -0400 List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org, gnunet-developers@gnu.org --001a11c14d7acb7ea804f6dbac8e Content-Type: text/plain; charset=ISO-8859-1 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 --001a11c14d7acb7ea804f6dbac8e Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi

Im sorry for coming up wi= th an update in the proposal for the binary distribution for GSoC 14 this l= ate. 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 look= s up the package definition and installs the package with the substituter d= ownloading the binaries from hydra server. If thats not possible, the deriv= ations are built on the local system.=A0

modifications:
a. Change the package definiti= ons field "url-fetch" of all the packages to reference that the d= ownload is to be made using gnunet. This will make the daemon run the neces= sary steps discussed below. The users can update to this model after its re= leased by using "guix pull".

b. The package definition can be retained and we can ch= ange the source code of the substituter to by default lookup for the binari= es in the GNUnet service and if its not available, then go for the hydra se= rver.

2. Now, whichever method above is implemented, the subs= ituter can be reprogrammed to open a gnunet dht connection and get the nece= ssary details. The substituter finds out the dependencies of the given pack= age from the package definition and computes the SHA256 hash of the depenci= es.

3. Since the DHT uses key/value pairs to get and put da= ta, we can use the SHA256 hash of the dependencies of the package as the ke= y. 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 pack= age and the mesh channel identifier as the values associated with that part= icular key.

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

5. From the resulting entries of the corresponding valu= es, the first peer in the list is used to open a p2p connection in gnunet.<= /div>

6. The filename and the hash are used to request f= or 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 pres= ent in the peer's system. The hash on the other hand is unique.

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

6. The downloaded binary is then used by guix to insta= ll the package as it currently does.=A0

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

7. Finally, w= ith the users consent, the guix daemon can publish in the gnunet dht pool o= f nodes to "put" the key/values of the package so that other user= s 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.=A0

Regards,=A0
Deepan
--001a11c14d7acb7ea804f6dbac8e--