-
Notifications
You must be signed in to change notification settings - Fork 248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Branching/vendoring methods Ignition for spec 3.0.0 + 2.x #682
Comments
My opinion doesn't count for much here, but 3/4 seem the most sane. Are there projects vendoring ignition that we don't know about? i.e. consumers that we don't control that would be affected by |
One's I know of:
I don't think 3 should greatly impact external users, if anything it's better if they have a more stable api. I do worry about what we do if we need to break api compat on the spec2x branch since we'd have already taken the v2.x.y version for spec 3.x. |
Matchbox also vendors Ignition. Probably any tool that supports Ignition and is written in Go would want to do the same. |
Oh there's also terraform-provider-ct. I guess we could also skip 1.x entirely. That'd give us room to break compat with the 2.x spec and give us unique import paths. |
Thinking about this more, I think that skipping 1.x makes the most sense. The general plan would be:
Things I like about this plan:
Things I don't like:
Barring objections, I'll do this branching strategy tomorrow. |
Why would we need a major version bump if we break API on the |
We don't need to but at this point I think the api is pretty stable (we haven't broken it in a while). I'm fine with just sticking to 0.x though. |
Yeah, I wouldn't expect any breaks at this point. I was just surprised by the proposed special handling. |
We can also deal with that break if we encounter it |
Closed now that we're branched. Ignition 3.x development will happen on |
Feature Request
Desired Feature
Fedora CoreOS and Container Linux will coexist with different versions of Ignition which will use different Ignition specs. We will need to write tooling to do best-effort translation between them. This means that projects need a way to vendor both versions at the same time.
With the first release of spec 3.0.0 we plan to bump the Ignition version to 1.0.0 and declare API stability.
Since go imports based on repo location (i.e.
github.com/coreos/ignition
) and doesn't support a way to specify tags in the import path we need a way of having a different import paths for the branches.The go modules proposal would help, but unfortunately doesn't include the major version in the import path for v0 and v1.
There's also gopkg.in which redirects urls in the form
gopkg.in/user/project.vX
togithub.com/user/project
on branch / tag vX, except only the major version is used and it doesn't appear to allow specifying a more granular version. Glide breaks if you specify a gopkg.in url and aversion
.Proposals:
coreos/ignition
for 3.x and creating something likecoreos/ignition2x
. This is by far the simplest for vendoring but would be confusing for external contributors and would mean duplicating work across repos (rather than branches).spec2x
branch and keep master for 3.x development. Declare API stability for the current codebase (spec 2.x) and make that v1, declare master (spec 3.x) as v2. This allows go modules to be used correctly. Switch to go modules on all projects vendoring Ignition.spec2x
branch and keep master for 3.x development. Manually vendor the spec2x branch to a different path. Could also use GOPATH mangling (@darkmuggle had an idea around this)I'm leaning towards proposal 3.
cc @lucab @bgilbert
The text was updated successfully, but these errors were encountered: