From mboxrd@z Thu Jan 1 00:00:00 1970 From: amirouche Subject: gnunet-guile reboot & guix (take two) Date: Sat, 03 Feb 2018 14:10:36 +0100 Message-ID: <1517663436.2217.0@mail.gandi.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49196) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ehxam-00029R-8B for guix-devel@gnu.org; Sat, 03 Feb 2018 08:10:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ehxal-0002HE-D5 for guix-devel@gnu.org; Sat, 03 Feb 2018 08:10:52 -0500 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" To: gnunet-developers@gnu.org, guix-devel@gnu.org Hello all, After discussing gnunet & guix at fosdem with gnunet people I have better picture of where things can go. The short story is: 1) There is no way to know the gnunet hash aka. gnunet uri of a substitute before the build. 2) There is no way to associate gnunet hash and guix hash in a secure/trusted manner over gnunet. Except maybe if we use GNS to publish guix hash as subdomains of substitute-server.guix.gnu? Possible solutions: a) Add the gnunet-uri of the substitute in the package definition. This can only work if the package is reproducible aka. the build is always the same given the same package definition. For reproducible builds, it will be possible to offload the build and the download over gnunet. b) Use a central repository (!) which must be trusted and which will provide a map of guix hash <-> gnunet hash based on builds done locally. This way we can offload the download of the files to gnunet... That said, the central repository is still a SPOF. Solution b) is not a massive improvement over the current situation, that said maybe that is good enough. It's the easy solution. We must: i) change the substitute server to publish over gnunet new builds and add the gnunet hash to a local database. ii) change the substitute server to publish guix hash <-> gnunet hash association file iii) change guix, to fetch the association file from a trusted server and then download over gnunet the files. Solution a) is my prefered because it's truly peer-to-peer but it leads to complicated workflow for builds that are not reproducible since we must reset the gnunet uri in the package definition from a trusted build server. I am not sure how it's possible to rewrite a package definition in guile right now. WDYT?