I'm fine with namespacing and I see benefits for it for deps, just it
would be nice to have something inbetween absolute path and
"../../something" (like "$ROOT/packagename") for package-local
"subpackages" that are not designed to be standalone ones (like in my
case it is usually a package holding few structs shared between other
packages).

> I also advocated elsewhere for go get having the ability to use some kind of 
> mirror for fetching, to solve the "code can vanish" objection why people want 
> vendoring (e.g. your company runs a mirror of all your used open source code 
> and you use "go get --proxy=internal.company.net github.com/some/package" and 
> go-get fetches it from "internal.company.net/github.com/some/package" or 
> something like that).

Yeah it would be nice. Maybe in the form of .dotfile with just a list
of aliases for each part of the address, grouped into "profiles". That
would allow to for example have a empty profile (or just one that maps
your public code to github and leaves private for internal repos) for
normal work and "github-down" profile that points it to internal
mirror in case there is something wrong with

2016-11-25 13:00 GMT+01:00 Axel Wagner <axel.wagner...@googlemail.com>:
> I think it's reasonable to expect you to set up your GOPATH accordingly, if
> you want the layout to be internal and specific and deviating from the
> discovery mechanism. There is no reason, why a tool couldn't fetch your
> internal git-repository to the subpath of $GOPATH that corresponds to your
> public mirror.
> I also advocated elsewhere for go get having the ability to use some kind of
> mirror for fetching, to solve the "code can vanish" objection why people
> want vendoring (e.g. your company runs a mirror of all your used open source
> code and you use "go get --proxy=internal.company.net
> github.com/some/package" and go-get fetches it from
> "internal.company.net/github.com/some/package" or something like that).
>
> In any case, I don't think that these things are outweighing the pros of
> go's decentralized approach to namespacing and hosting; the disadvantages
> have relatively obvious solutions.
>
>
> On Fri, Nov 25, 2016 at 12:48 PM, Mariusz Gronczewski <xani...@gmail.com>
> wrote:
>>
>>
>>
>> On Friday, November 25, 2016 at 12:10:56 PM UTC+1, Axel Wagner wrote:
>>>
>>> It is pretty simple:
>>>
>>> * If you actually *fork* a project (not what github calls a "fork", but
>>> "create a repo with a different set of maintainers"), *that is a different
>>> package*. It will contain different code and have a different mantainer. So
>>> it is a feature, that go get won't work on it OOTB. To make it work, you
>>> have to commit making and using it as a different package by changing import
>>> paths. People pretend like forking should take over another persons package,
>>> but that just doesn't make sense, that's the whole point of identifying
>>> packages by import paths and having a discovery mechanism that reconciles
>>> conflicts by relying on the DNS.
>>> * To prepare a PR, just add your "fork" (I hate githubs nomenclature
>>> here) as a second remote in $GOPATH/src/github.com/upstream/project. Commit
>>> and push to your fork, then create the PR. When done, optionally, delete
>>> your fork.
>>>
>>> The two things are very different processes. One is "being dissatisfied
>>> with a project so taking over maintainership" (what the FOSS-community calls
>>> "forking") and the other is "publishing a copy of a repo with your patches
>>> so that the maintainer can pull from it" (what github calls "forking", but
>>> is actually just "using the decentralized nature of git as a VCS). Don't mix
>>> the two up and everything makes sense.
>>
>>
>> I get it but often I have a problem where "main" place of development is
>> our internal repository (and for various political reasons github can't be
>> used for that) but we'd still want to open source that code and not have to
>> deal with path translation.
>>
>> There is also the "I want to show it to someone but they are
>> git-illiterate" case
>>
>>
>>>
>>>
>>>
>>> On Fri, Nov 25, 2016 at 11:40 AM, Mariusz Gronczewski <xan...@gmail.com>
>>> wrote:
>>>>
>>>> But then go get github.com/me/project will be non-functional ?
>>>>
>>>> 2016-11-25 11:35 GMT+01:00 Ian Davis <m...@iandavis.com>:
>>>> > This is how to do it with a git repository:
>>>> >
>>>> >
>>>> > http://blog.campoy.cat/2014/03/github-and-go-forking-pull-requests-and.html
>>>> >
>>>> >
>>>> > On Fri, Nov 25, 2016, at 10:31 AM, Mariusz Gronczewski wrote:
>>>> >
>>>> > Hi,
>>>> >
>>>> > So let's say there is a project, living under path
>>>> > github.com/local/project.
>>>> > Project is neatly divided into a bunch of packages and uses
>>>> > recommended
>>>> > absolute paths:
>>>> >
>>>> > package main
>>>> >
>>>> > import (
>>>> > "github.com/external/dep1"
>>>> > "github.com/local/project/config"
>>>> > "github.com/local/project/backend"
>>>> > "github.com/local/project/frontend"
>>>> > )
>>>> >
>>>> >
>>>> > and packages inside of it also use that:
>>>> >
>>>> > package backend
>>>> >
>>>> > import (
>>>> > "github.com/external/dep3"
>>>> > "github.com/external/dep4"
>>>> > "github.com/local/project/config"
>>>> > "github.com/local/project/backend/nosql"
>>>> > "github.com/local/project/backend/sql"
>>>> > "github.com/local/project/backend/dummy"
>>>> > )
>>>> >
>>>> > package frontend
>>>> >
>>>> > import (
>>>> > "github.com/external/dep5"
>>>> > "github.com/external/dep6"
>>>> > "github.com/local/project/config"
>>>> > "github.com/local/project/backend"
>>>> > "github.com/local/project/frontend/html"
>>>> > "github.com/local/project/frontend/pdf"
>>>> > )
>>>> >
>>>> > ...how does one contribute to it ?
>>>> >
>>>> > If I just go and fork it and do a bunch of changes across packages
>>>> > then I
>>>> > can't test it because everything will be under "github.com/me/project"
>>>> > so
>>>> > deps will come from the "wrong" place.
>>>> >
>>>> > If I go and find-replace everything now I can work in peace but any
>>>> > diff or
>>>> > pull request from it wont make any sense as now it will contain wrong
>>>> > paths
>>>> >
>>>> > If I use relative packages then things like `go test` complain about
>>>> > local
>>>> > imports and wont run.
>>>> >
>>>> > Surely there is a better method than "just glue it with some symlinks"
>>>> > ?
>>>> >
>>>> > Cheers, Mariusz
>>>> >
>>>> >
>>>> > --
>>>> > You received this message because you are subscribed to the Google
>>>> > Groups
>>>> > "golang-nuts" group.
>>>> > To unsubscribe from this group and stop receiving emails from it, send
>>>> > an
>>>> > email to golang-nuts...@googlegroups.com.
>>>> > For more options, visit https://groups.google.com/d/optout.
>>>> >
>>>> >
>>>> > --
>>>> > You received this message because you are subscribed to a topic in the
>>>> > Google Groups "golang-nuts" group.
>>>> > To unsubscribe from this topic, visit
>>>> > https://groups.google.com/d/topic/golang-nuts/if5H8kRAT30/unsubscribe.
>>>> > To unsubscribe from this group and all its topics, send an email to
>>>> > golang-nuts...@googlegroups.com.
>>>> > For more options, visit https://groups.google.com/d/optout.
>>>>
>>>>
>>>>
>>>> --
>>>> Mariusz Gronczewski (XANi) <xan...@gmail.com>
>>>> GnuPG: 0xEA8ACE64
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "golang-nuts" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to golang-nuts...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to golang-nuts+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>
>



-- 
Mariusz Gronczewski (XANi) <xani...@gmail.com>
GnuPG: 0xEA8ACE64

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to