guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Guix & IPFS


From: Leo Famulari
Subject: Re: Guix & IPFS
Date: Tue, 16 Oct 2018 12:27:47 -0400
User-agent: Mutt/1.10.1 (2018-07-13)

On Mon, Oct 15, 2018 at 12:40:18PM +0200, Pierre Neidhardt wrote:
> No, Go programs typically refer only to repositories, not to their commit.  
> This
> is precisely why it's a problem.  Golang's dependency management was not very
> well designed I'm afraid.
> 
> Misunderstanding?

I think you and Ludo talked past each a bit. To clarify:

Go code refers to dependencies by the URL of their repositories. For
example, the code will import the modules it depends on like this:

------
import ("github.com/thejerf/suture"
        "github.com/rcrowley/go-metrics")
------

The Go compiler will actually fetch these Git repos if they are not
already available locally, cloning and using the HEAD commit (?!).

But in practice, any complex Go software will use a dependency
management tool that also specifies the Git commit to use, because...

... there is basically no concept of "releases" or "stable APIs" in Go
world, although there are 3rd party tools that try to fill the gap.
Since nobody is thinking about releasing or maintaining an API, they
don't, and it becomes important to use the right Git commit.

My opinion is that we should use the "correct" Git commit every time,
even it means we have to package several versions of the same Go
library, or use channels, or Scheme macros, etc. Otherwise we will have
a lot of debugging to do, and upstream developers will start to resent
us when they get bug reports. With Guile, we have the tools to achieve
this. I've been doing it "manually" for the Syncthing package.

We discussed this previously:

https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00030.html

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]