For what it's worth I've just started a fresh topic
<https://groups.google.com/forum/#!topic/prometheus-developers/DY88o6yOg28>
with my first results using the modularise tool.

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

> 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/CAP8_5EDBuQWN7GeTLDDnY7xHgP617c69CvWtD_iRVPSMqqHxbg%40mail.gmail.com.

Reply via email to