Skip to content
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

Version compatibility with an evolving spec #15

Closed
wking opened this issue Jun 25, 2015 · 6 comments
Closed

Version compatibility with an evolving spec #15

wking opened this issue Jun 25, 2015 · 6 comments
Milestone

Comments

@wking
Copy link
Contributor

wking commented Jun 25, 2015

The current docs say:

If the container is compliant with multiple versions, it SHOULD advertise the most recent known version to be supported.

That's going to make backward compatibility with old tools hard. I'd rather take major and minor numbers from semantic versioning, so a v1.3 config would be compatible with a v1.3 launcher, or a v1.4 launcher, etc., etc., but not a v1.2 launcher or a v2.0 launcher. That gives you some granularity for specifying which of several compatible features you need (e.g. UID-mapping for #10 was only added in v1.3, but v1.3 launchers can still handle the v1.0 containers).

One limitation to the sem-ver appoach is that feature addition needs to be serialized. If you have to orthogonal extensions, and A lands in v1.3 while B lands in v1.4, implementations that want to support feature B also need to support feature A. For example, Notmuch uses feature tags to mark supported optional features (which is what sem-ver's minor releases are for).

So depending on how flexible you want to make life for spec implementors, I'd recommend chosing either sem-ver (simple, some cross compatibility, serialized features) or feature tags (more complicated, lots of flexibility, parallel features). Having a single integer that spec authors are supposed to bump (the current recommendation here) gives you essentially zero cross-compatibility without building the list of changing features into the implementation itself.

@philips
Copy link
Contributor

philips commented Jun 25, 2015

For now I am OK with a linearized release process. If we find a need later we can re-evaluate.

@wking
Copy link
Contributor Author

wking commented Jun 25, 2015

On Thu, Jun 25, 2015 at 09:52:13AM -0700, Brandon Philips wrote:

For now I am OK with a linearized release process.

Sounds good. Can we use sem-ver then to provide cross-compatibility
between a given config and implementations at different minor-versions
of the spec?

@jonboulle
Copy link
Contributor

+1, specifically SemVer 2.0.0

@crosbymichael crosbymichael added this to the v0.1.0 milestone Jun 29, 2015
@crosbymichael
Copy link
Member

+1

philips pushed a commit that referenced this issue Jun 30, 2015
As suggested in #15 make this a semver so we have some interpretation of
compatibility.
@philips
Copy link
Contributor

philips commented Jun 30, 2015

Fixed via 9c90ccd

@wking
Copy link
Contributor Author

wking commented Nov 9, 2017

For now I am OK with a linearized release process. If we find a need later we can re-evaluate.

Parallel spec platforms are a lot like parallel features that are unlikely to ever be unified. And a seperate, optional-to-implement VM layer (#405) is too (discussion in #935). Perhaps it's time to re-evaluate? An "I require these features" property could be added to a 1.1 spec, even if it's REQUIRED, withought breaking 1.0.x configs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants