Ok so I've been talking to Duco about this and he convinced me that using
in repo replace directives with relative paths is not a good idea.

If he has the time he can explain it much better than I could.

On Fri, 28 Feb 2020 at 12:04, Sylvain Rabot <[email protected]> wrote:

> After giving it more search, it came to (my) light that go mod handles
> "special" git tags for go mod sub-versioning.
>
>
> https://github.com/golang/go/wiki/Modules#what-are-multi-module-repositories
>
> The tag for version 1.2.3 of module "my-repo/foo/rop" is "foo/rop/v1.2.3".
>>
>
> I.E, "go get github.com/prometheus/prometheus/tsdb/[email protected]" would
> resolve "github.com/prometheus/prometheus.git" at tag "tsdb/v2.13.0"
>
> With that in mind, I believe having multiple independent go modules in the
> same git repo is OK.
>
> With this we can leverage the initial reason of having those "core"
> modules inside prometheus/prometheus (no sync overhead) and a decent
> independent development oriented life cycle.
>
> We currently have release shepherds, I think that if we were to implement
> this, we would need a shepherd per module responsible for releasing
> versions of "his" module(s).
>
> I made a Draft PR to get a sense of it:
> https://github.com/prometheus/prometheus/pull/6888/commits/44149825edb0b5c92885f362b6f3ae1643e2f451
>
> It's pretty light if we exclude removing vendoring altogether (because I
> don't believe vendoring makes sense anymore with the latest versions of go
> and because each module having its own go mod needs its own vendor/ dir).
>
> The only problem I encountered came from promu. In the case we want to
> build a binary in a module that has its own go.mod file (like tsdb), the go
> build command needs to be run from within the dir of the module (because of
> the relative paths in the go.mod replace directive I assume). I already
> have a patch for this (
> https://github.com/sylr/promu/commit/c6e6a2bcdf5d50338b1ee70022c40152a8992c82
> ).
>
> Regards.
>
> On Fri, 7 Feb 2020 at 18:12, Bjoern Rabenstein <[email protected]> wrote:
>
>> I think it became already obvious from the discussion so far: Semantic
>> versioning for the user of the Prometheus server is completely
>> different from semantic versioning for the user of Go packages
>> contained in the Prometheus code base.
>>
>> Conflating both will be bad for both parties.
>>
>> We could have a _separate_ versioning, using vx.y.z tags for the Go
>> module versioning and a new tag naming schema (e.g. release-x.y.z) for
>> user releases.
>>
>> Besides the obvious concerns about this, I also think that semantic
>> versioning for a large number of Go packages together is problematic
>> in any case. Any breaking change in any one package will bump the
>> major version for _all_ packages, leading to new import paths in the
>> Go modules world, which can lead to interoperability problems for
>> indirect users of the packages. (They could find themselves in the
>> situation of assigning a v2/model.Label spit out by one of their
>> direct dependencies to a v3/model.Label required by another of their
>> direct dependencies.)
>>
>> That's why I think Duco's Modularize project has some
>> merits. Alternatively (as I said before), I could see better tooling
>> for maintaining multiple Go modules within the same Git repo as a
>> viable (and less invasive) solution.
>>
>> Therefore, I'd prefer to see how Modularize turns out in practice (or
>> if alternatively somebody comes up with tooling and/or easy-to-follow
>> best practices for multi-module repos) and then reconsider what we can
>> do in prometheus/prometheus.
>>
>> --
>> Björn Rabenstein
>> [PGP-ID] 0x851C3DA17D748D03
>> [email] [email protected]
>>
>
>
> --
> Sylvain Rabot <[email protected]>
>


-- 
Sylvain Rabot <[email protected]>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-developers/CADjtP1EgLt--JMvyZrw%3DKyxd%3Da3WJ%3DoaWCsR0Euc5HQwBb7_GA%40mail.gmail.com.

Reply via email to