all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Our package names should not include "github-com"
       [not found] ` <20171013014344.D813E20338@vcs0.savannah.gnu.org>
@ 2017-10-13 17:12   ` Mark H Weaver
  2017-10-13 17:41     ` ng0
  2017-10-13 20:24     ` Leo Famulari
  0 siblings, 2 replies; 10+ messages in thread
From: Mark H Weaver @ 2017-10-13 17:12 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

Hi Leo,

leo@famulari.name (Leo Famulari) writes:

> lfam pushed a commit to branch master
> in repository guix.
>
> commit 478ebb31a96955fc03fcea55a4432976ddb49319
> Author: Leo Famulari <leo@famulari.name>
> Date:   Wed Oct 11 20:22:32 2017 -0400
>
>     gnu: Add go-github-com-templexxx-reedsolomon.

On this, and a great many other packages, you've included "github-com-"
in the package names.  I think this is a very bad idea.  For one thing,
we should not advertise, promote, or enhance the lock-in of GitHub, and
this policy does all three.  Sometimes a maintainer decides to change
their hosting arrangements.  When they do so, we should simply be able
to update some URLs in one package definition.  We should not have to do
a global find/replace on the package name and alert our users to update
their profiles and OS definitions.  That contributes to lock-in.

What do you think?

      Mark

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-13 17:12   ` Our package names should not include "github-com" Mark H Weaver
@ 2017-10-13 17:41     ` ng0
  2017-10-13 17:44       ` ng0
  2017-10-13 20:24     ` Leo Famulari
  1 sibling, 1 reply; 10+ messages in thread
From: ng0 @ 2017-10-13 17:41 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

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

Mark H Weaver transcribed 0.9K bytes:
> Hi Leo,
> 
> leo@famulari.name (Leo Famulari) writes:
> 
> > lfam pushed a commit to branch master
> > in repository guix.
> >
> > commit 478ebb31a96955fc03fcea55a4432976ddb49319
> > Author: Leo Famulari <leo@famulari.name>
> > Date:   Wed Oct 11 20:22:32 2017 -0400
> >
> >     gnu: Add go-github-com-templexxx-reedsolomon.
> 
> On this, and a great many other packages, you've included "github-com-"
> in the package names.  I think this is a very bad idea.  For one thing,
> we should not advertise, promote, or enhance the lock-in of GitHub, and
> this policy does all three.  Sometimes a maintainer decides to change
> their hosting arrangements.  When they do so, we should simply be able
> to update some URLs in one package definition.  We should not have to do
> a global find/replace on the package name and alert our users to update
> their profiles and OS definitions.  That contributes to lock-in.
> 
> What do you think?
> 
>       Mark

I think Leo just followed the upstream conventions here, where it is
named after the path the go module ends in.
If we decide not to name the package like this, we might break expectations.
So when we break expectations, what are the alternative naming schemes
we could pick for go packages that'll still make sense to people
using Go?
-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://dist.ng0.infotropique.org/dist/keys/
https://www.infotropique.org https://ng0.infotropique.org

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-13 17:41     ` ng0
@ 2017-10-13 17:44       ` ng0
  0 siblings, 0 replies; 10+ messages in thread
From: ng0 @ 2017-10-13 17:44 UTC (permalink / raw)
  To: Mark H Weaver, Leo Famulari, guix-devel

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

ng0 transcribed 2.5K bytes:
> Mark H Weaver transcribed 0.9K bytes:
> > Hi Leo,
> > 
> > leo@famulari.name (Leo Famulari) writes:
> > 
> > > lfam pushed a commit to branch master
> > > in repository guix.
> > >
> > > commit 478ebb31a96955fc03fcea55a4432976ddb49319
> > > Author: Leo Famulari <leo@famulari.name>
> > > Date:   Wed Oct 11 20:22:32 2017 -0400
> > >
> > >     gnu: Add go-github-com-templexxx-reedsolomon.
> > 
> > On this, and a great many other packages, you've included "github-com-"
> > in the package names.  I think this is a very bad idea.  For one thing,
> > we should not advertise, promote, or enhance the lock-in of GitHub, and
> > this policy does all three.  Sometimes a maintainer decides to change
> > their hosting arrangements.  When they do so, we should simply be able
> > to update some URLs in one package definition.  We should not have to do
> > a global find/replace on the package name and alert our users to update
> > their profiles and OS definitions.  That contributes to lock-in.
> > 
> > What do you think?
> > 
> >       Mark
> 
> I think Leo just followed the upstream conventions here, where it is
> named after the path the go module ends in.
> If we decide not to name the package like this, we might break expectations.
> So when we break expectations, what are the alternative naming schemes
> we could pick for go packages that'll still make sense to people
> using Go?

One idea could be:

    go-templexxx-reedsolomon
    
so just remove the hoster from the package name.
I'm not using Go, so I don't know if this will make any sense
or cause potential namespace issues.
-- 
ng0
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://dist.ng0.infotropique.org/dist/keys/
https://www.infotropique.org https://ng0.infotropique.org

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-13 17:12   ` Our package names should not include "github-com" Mark H Weaver
  2017-10-13 17:41     ` ng0
@ 2017-10-13 20:24     ` Leo Famulari
  2017-10-14  1:05       ` Mark H Weaver
  1 sibling, 1 reply; 10+ messages in thread
From: Leo Famulari @ 2017-10-13 20:24 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

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

On Fri, Oct 13, 2017 at 01:12:32PM -0400, Mark H Weaver wrote:
> leo@famulari.name (Leo Famulari) writes:
> >     gnu: Add go-github-com-templexxx-reedsolomon.
> 
> On this, and a great many other packages, you've included "github-com-"
> in the package names.  I think this is a very bad idea.  For one thing,
> we should not advertise, promote, or enhance the lock-in of GitHub, and
> this policy does all three.

Please don't suggest that I made a policy to promote or enhance GitHub
"lock-in". Please keep reading for more information on why the packages
are named this way.

> Sometimes a maintainer decides to change their hosting arrangements.
> When they do so, we should simply be able to update some URLs in one
> package definition.  We should not have to do a global find/replace on
> the package name and alert our users to update their profiles and OS
> definitions.  That contributes to lock-in.

These packages are libraries written in the Go programming language. Go
libraries are referred to by their "import path" [0], which is a string
intended to uniquely identify a particular software implementation.

As I wrote in the commentary on the go-build-system (part of the commit
series being discussed), import paths are based on the URL of the
software. A package hosted at https://github.com/leo/foo has an import
path of 'github.com/leo/foo'. In Go, this is the library's name.

These import paths are the sole mechanism by which Go software is
uniquely referred to by humans and the Go compiler. It is even baked
in to how dependencies are organized on disk.

If the software changes its source URL, all users of the software must
change how they refer to it, at least if they want to use versions of
the software after the URL change. This means they must go through their
code and change the module imports from 'github.com/leo/foo' to
'newsite.com/leo/foo'. They will also need to change the filesystem
hierarchy in which they store their dependencies, to reflect the change.

I'm trying to explain that, in Go, domain names of library sources are
very important, and not just an implementation detail. [1]

So, in fact, we will not be able to just change the source URL of a Go
package if it moves to a new domain name.

Based on these properties of Go, the Guix packages are named based on
the import paths, plus a 'go-' prefix, in accordance with our practice
of adding language names to library packages.

> What do you think?

There are many Go libraries with the same "base name" (foo in my
previous example). So, we'll need to at least include some of the import
path in order to distinguish them.

Will we always need to use the entire import path, including the
domain-name component? I think so, but having only packaged one Go
application, I don't have an example of a cross-domain package name
collision. However, I have seen Go libraries use domain redirections to
signal API changes [2].

Does an import path always include some unique string besides the domain
name and the base name? I don't know.

Ultimately, I think we need a way to refer to Go libraries uniquely. I
think it will be confusing to have two different unique naming schemes
(Go import paths and whatever we'd come up with).

Does anyone have an idea for another way to uniquely refer to Go
libraries?

Finally, I don't think that including the string 'github-com' in package
names is unethical. It's too bad that there is a hosting monoculture.
But simply mentioning it, which is how I see the package names, is not
unethical, IMO.

[0] https://golang.org/doc/code.html#ImportPaths
[1] If you did a double-take, thinking "That's crazy!", then you
probably understood correctly.
[2] The site <https://gopkg.in/> is used for this.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-13 20:24     ` Leo Famulari
@ 2017-10-14  1:05       ` Mark H Weaver
  2017-10-16  0:41         ` Maxim Cournoyer
  2017-10-16 13:05         ` Ludovic Courtès
  0 siblings, 2 replies; 10+ messages in thread
From: Mark H Weaver @ 2017-10-14  1:05 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

Hi Leo,

Leo Famulari <leo@famulari.name> writes:

> On Fri, Oct 13, 2017 at 01:12:32PM -0400, Mark H Weaver wrote:
>> leo@famulari.name (Leo Famulari) writes:
>> >     gnu: Add go-github-com-templexxx-reedsolomon.
>> 
>> On this, and a great many other packages, you've included "github-com-"
>> in the package names.  I think this is a very bad idea.  For one thing,
>> we should not advertise, promote, or enhance the lock-in of GitHub, and
>> this policy does all three.
>
> Please don't suggest that I made a policy to promote or enhance GitHub
> "lock-in". Please keep reading for more information on why the packages
> are named this way.
>
>> Sometimes a maintainer decides to change their hosting arrangements.
>> When they do so, we should simply be able to update some URLs in one
>> package definition.  We should not have to do a global find/replace on
>> the package name and alert our users to update their profiles and OS
>> definitions.  That contributes to lock-in.
>
> These packages are libraries written in the Go programming language. Go
> libraries are referred to by their "import path" [0], which is a string
> intended to uniquely identify a particular software implementation.
>
> As I wrote in the commentary on the go-build-system (part of the commit
> series being discussed), import paths are based on the URL of the
> software. A package hosted at https://github.com/leo/foo has an import
> path of 'github.com/leo/foo'. In Go, this is the library's name.
>
> These import paths are the sole mechanism by which Go software is
> uniquely referred to by humans and the Go compiler. It is even baked
> in to how dependencies are organized on disk.

Thanks for the explanation.  I find this very disturbing, but I
acknowledge that this lock-in is caused by Go itself, and that there's
probably not much that we can do about it.  Oh well.  I withdraw my
objection to these package names.

    Regards,
      Mark


> [0] https://golang.org/doc/code.html#ImportPaths

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-14  1:05       ` Mark H Weaver
@ 2017-10-16  0:41         ` Maxim Cournoyer
  2017-10-16 21:38           ` Leo Famulari
  2017-10-16 13:05         ` Ludovic Courtès
  1 sibling, 1 reply; 10+ messages in thread
From: Maxim Cournoyer @ 2017-10-16  0:41 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

Hello!

Mark H Weaver <mhw@netris.org> writes:

> Hi Leo,
>
> Leo Famulari <leo@famulari.name> writes:
>
>> These packages are libraries written in the Go programming language. Go
>> libraries are referred to by their "import path" [0], which is a string
>> intended to uniquely identify a particular software implementation.
>>
>> As I wrote in the commentary on the go-build-system (part of the commit
>> series being discussed), import paths are based on the URL of the
>> software. A package hosted at https://github.com/leo/foo has an import
>> path of 'github.com/leo/foo'. In Go, this is the library's name.
>>
>> These import paths are the sole mechanism by which Go software is
>> uniquely referred to by humans and the Go compiler. It is even baked
>> in to how dependencies are organized on disk.
>
> Thanks for the explanation.  I find this very disturbing, but I
> acknowledge that this lock-in is caused by Go itself, and that there's
> probably not much that we can do about it.  Oh well.  I withdraw my
> objection to these package names.
>
>     Regards,
>       Mark
>
>
>> [0] https://golang.org/doc/code.html#ImportPaths

I just read that link, and while it's true that they recommend using the
source repository domain as the base path of the library, it is by no
mean an obligation, as noted:

    In practice you can choose any arbitrary path name, as long as it is
    unique to the standard library and greater Go ecosystem.

I personally fail to see how using github.com gives much more uniqueness
to a library name (especially since I expect that most go stuff would be
hosted there) and find it equally disturbing. How hard would it be to go
against this de facto standard? Maybe we could have a procedure that
would strip any domain name from the libraries import paths?

Maxim

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-14  1:05       ` Mark H Weaver
  2017-10-16  0:41         ` Maxim Cournoyer
@ 2017-10-16 13:05         ` Ludovic Courtès
  1 sibling, 0 replies; 10+ messages in thread
From: Ludovic Courtès @ 2017-10-16 13:05 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

Hi Mark,

Mark H Weaver <mhw@netris.org> skribis:

> Leo Famulari <leo@famulari.name> writes:
>
>> On Fri, Oct 13, 2017 at 01:12:32PM -0400, Mark H Weaver wrote:
>>> leo@famulari.name (Leo Famulari) writes:
>>> >     gnu: Add go-github-com-templexxx-reedsolomon.
>>> 
>>> On this, and a great many other packages, you've included "github-com-"
>>> in the package names.  I think this is a very bad idea.  For one thing,
>>> we should not advertise, promote, or enhance the lock-in of GitHub, and
>>> this policy does all three.
>>
>> Please don't suggest that I made a policy to promote or enhance GitHub
>> "lock-in". Please keep reading for more information on why the packages
>> are named this way.
>>
>>> Sometimes a maintainer decides to change their hosting arrangements.
>>> When they do so, we should simply be able to update some URLs in one
>>> package definition.  We should not have to do a global find/replace on
>>> the package name and alert our users to update their profiles and OS
>>> definitions.  That contributes to lock-in.
>>
>> These packages are libraries written in the Go programming language. Go
>> libraries are referred to by their "import path" [0], which is a string
>> intended to uniquely identify a particular software implementation.
>>
>> As I wrote in the commentary on the go-build-system (part of the commit
>> series being discussed), import paths are based on the URL of the
>> software. A package hosted at https://github.com/leo/foo has an import
>> path of 'github.com/leo/foo'. In Go, this is the library's name.
>>
>> These import paths are the sole mechanism by which Go software is
>> uniquely referred to by humans and the Go compiler. It is even baked
>> in to how dependencies are organized on disk.
>
> Thanks for the explanation.  I find this very disturbing, but I
> acknowledge that this lock-in is caused by Go itself, and that there's
> probably not much that we can do about it.  Oh well.  I withdraw my
> objection to these package names.

I agree this naming scheme isn’t great, but indeed, that’s what Go gives us.

Besides, Leo gave us 3 weeks to comment on
<https://debbugs.gnu.org/cgi/bugreport.cgi?bug=28586>.  Thus, I believe
your message should have been framed as a suggestion for improvement
rather than “please fix this mistake”.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-16  0:41         ` Maxim Cournoyer
@ 2017-10-16 21:38           ` Leo Famulari
  2017-10-17 10:44             ` Leo Famulari
  0 siblings, 1 reply; 10+ messages in thread
From: Leo Famulari @ 2017-10-16 21:38 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: guix-devel

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

On Sun, Oct 15, 2017 at 08:41:45PM -0400, Maxim Cournoyer wrote:
> >> [0] https://golang.org/doc/code.html#ImportPaths
> 
> I just read that link, and while it's true that they recommend using the
> source repository domain as the base path of the library, it is by no
> mean an obligation, as noted:
> 
>     In practice you can choose any arbitrary path name, as long as it is
>     unique to the standard library and greater Go ecosystem.
>
> I personally fail to see how using github.com gives much more uniqueness
> to a library name (especially since I expect that most go stuff would be
> hosted there) and find it equally disturbing. How hard would it be to go
> against this de facto standard? Maybe we could have a procedure that
> would strip any domain name from the libraries import paths?

Using the domain name as part of the *upstream* library name is useful
for upstream authors because of how Go's built-in dependency management
tools work. Go integrates dependency management into the language and
the `go` tool itself. Re-using the upstream library name is useful
because they have already disambiguated for us.

I don't intend to be rude, but I'm not going to put much effort into
responding to further comments that are not based on knowledge of how Go
handles package / dependency management with its built-in tools, or
modular programming in Go, in general. Already I used tons of my free
time to learn this stuff, just so I could make Guix packages of Go
software. Please meet me where I am.

Again, I don't see an ethical problem here, so any motivation for me to
participate in this discussion, as a volunteer, must be technical. If
it's *wrong* to name the packages in this way, I will behave
differently.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-16 21:38           ` Leo Famulari
@ 2017-10-17 10:44             ` Leo Famulari
  2017-10-18  2:09               ` Maxim Cournoyer
  0 siblings, 1 reply; 10+ messages in thread
From: Leo Famulari @ 2017-10-17 10:44 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: guix-devel

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

On Mon, Oct 16, 2017 at 05:38:43PM -0400, Leo Famulari wrote:
> Using the domain name as part of the *upstream* library name is useful
> for upstream authors because of how Go's built-in dependency management
> tools work. Go integrates dependency management into the language and
> the `go` tool itself. Re-using the upstream library name is useful
> because they have already disambiguated for us.
> 
> I don't intend to be rude, but I'm not going to put much effort into
> responding to further comments that are not based on knowledge of how Go
> handles package / dependency management with its built-in tools, or
> modular programming in Go, in general. Already I used tons of my free
> time to learn this stuff, just so I could make Guix packages of Go
> software. Please meet me where I am.
> 
> Again, I don't see an ethical problem here, so any motivation for me to
> participate in this discussion, as a volunteer, must be technical. If
> it's *wrong* to name the packages in this way, I will behave
> differently.

I replied too harshly here, and I apologize for that. For me, this
conversation really started on the wrong foot.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: Our package names should not include "github-com"
  2017-10-17 10:44             ` Leo Famulari
@ 2017-10-18  2:09               ` Maxim Cournoyer
  0 siblings, 0 replies; 10+ messages in thread
From: Maxim Cournoyer @ 2017-10-18  2:09 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel

Hello,

Leo Famulari <leo@famulari.name> writes:

> On Mon, Oct 16, 2017 at 05:38:43PM -0400, Leo Famulari wrote:
>> Using the domain name as part of the *upstream* library name is useful
>> for upstream authors because of how Go's built-in dependency management
>> tools work. Go integrates dependency management into the language and
>> the `go` tool itself. Re-using the upstream library name is useful
>> because they have already disambiguated for us.
>> 
>> I don't intend to be rude, but I'm not going to put much effort into
>> responding to further comments that are not based on knowledge of how Go
>> handles package / dependency management with its built-in tools, or
>> modular programming in Go, in general. Already I used tons of my free
>> time to learn this stuff, just so I could make Guix packages of Go
>> software. Please meet me where I am.
>> 
>> Again, I don't see an ethical problem here, so any motivation for me to
>> participate in this discussion, as a volunteer, must be technical. If
>> it's *wrong* to name the packages in this way, I will behave
>> differently.
>
> I replied too harshly here, and I apologize for that. For me, this
> conversation really started on the wrong foot.

I agree this conversation could have been more cheerful! I understand
your irritation; let me use this opportunity to thank you for your hard
work and time spent working on bringing Go to Guix! There seems to be
interesting solutions built with Go.

I'm trying to rectify my ignorance of the Go system; I've started
reading about Go but haven't gone so far yet to be able to answer my
question in a definitive way. I'll keep reading! I've seen that Debian
is also using the repo names in their go packages naming scheme, so
there must be some good to it.

Maxim

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2017-10-18  2:09 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20171013014334.17601.30718@vcs0.savannah.gnu.org>
     [not found] ` <20171013014344.D813E20338@vcs0.savannah.gnu.org>
2017-10-13 17:12   ` Our package names should not include "github-com" Mark H Weaver
2017-10-13 17:41     ` ng0
2017-10-13 17:44       ` ng0
2017-10-13 20:24     ` Leo Famulari
2017-10-14  1:05       ` Mark H Weaver
2017-10-16  0:41         ` Maxim Cournoyer
2017-10-16 21:38           ` Leo Famulari
2017-10-17 10:44             ` Leo Famulari
2017-10-18  2:09               ` Maxim Cournoyer
2017-10-16 13:05         ` Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.