From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: =?UTF-8?B?VsOtdG9yIERlIEFyYcO6am8=?= Newsgroups: gmane.lisp.guile.user Subject: Re: How to make GNU Guile more successful Date: Sat, 11 Mar 2017 00:02:09 -0300 Message-ID: <58C368B1.50102@sapo.pt> References: <58C20A87.9010908@sapo.pt> <4b508a2c-92fa-aa24-5780-e13397819261@hypermove.net> <58C349E2.6000103@sapo.pt> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1489201374 3741 195.159.176.226 (11 Mar 2017 03:02:54 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 11 Mar 2017 03:02:54 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.8.0 To: guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sat Mar 11 04:02:50 2017 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cmXIp-0008Kr-Fe for guile-user@m.gmane.org; Sat, 11 Mar 2017 04:02:43 +0100 Original-Received: from localhost ([::1]:41716 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cmXIv-0005kF-ES for guile-user@m.gmane.org; Fri, 10 Mar 2017 22:02:49 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:46110) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cmXIT-0005k5-Ub for guile-user@gnu.org; Fri, 10 Mar 2017 22:02:23 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cmXIQ-0002Mo-Pf for guile-user@gnu.org; Fri, 10 Mar 2017 22:02:21 -0500 Original-Received: from relay3.ptmail.sapo.pt ([212.55.154.23]:38553 helo=sapo.pt) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cmXIQ-0001l5-Eb for guile-user@gnu.org; Fri, 10 Mar 2017 22:02:18 -0500 Original-Received: (qmail 22951 invoked from network); 11 Mar 2017 03:02:14 -0000 Original-Received: (qmail 11524 invoked from network); 11 Mar 2017 03:02:14 -0000 Original-Received: from unknown (HELO [192.168.0.12]) (vbuaraujo@sapo.pt@[201.37.163.0]) (envelope-sender ) by ptmail-mta-auth02 (qmail-ptmail-1.0.0) with ESMTPSA for ; 11 Mar 2017 03:02:14 -0000 X-PTMail-RemoteIP: 201.37.163.0 X-PTMail-AllowedSender-Action: X-PTMail-Service: default In-Reply-To: <58C349E2.6000103@sapo.pt> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 212.55.154.23 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:13491 Archived-At: On 10/03/2017 21:50, Vítor De Araújo wrote: [...] > I thought a little bit about the packages-as-urls idea and I had some > ideas I'll just throw out here. > > First, I realized using the URL as the package _name_ is problematic, > because it hard-codes the source of the package; that complicates things > if someone wants to make a fork of the package and install it in place > of the original. However, packages can still have a normal name and a > "canonical URL" for fetching it. > > The package would come with a metadata file (named something like > metadata.foopkg, where 'foopkg' is a placeholder for the name of the > package manager (and I'd rather have the name of the package manager as > an extension, because I'd rather not assume I'm the only package manager > in the world)). This metadata would contain the package name, version, > and dependencies. For each dependency, it would specify the package > name, the version, *and the canonical URL* for that package. Upoin > installation, the package manager would go through each dependency and > check if a package of that name and compatible version (assuming > semantic versioning) is already installed; if it's not, it would fetch > it from the canonical URL. > > In this way, we can have decentralized package management which can > handle dependencies. [...] Just one more little thought on package names vs. URLs. Guile already has a standard module system, and modules already have names which are supposed to be globally unique, and even they even have version numbers. So module names can double as package names. The advantage is that then you can check whether a dependency is installed *whether or not it was installed via the package manager*. Basically you'd describe your dependencies in terms of modules, and specify where the package that implements that module can be fetched from. I have to think this through a bit more, though. -- Vítor De Araújo