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

config.md: Rename ociVersion -> ociRuntimeVersion #371

Closed
wants to merge 2 commits into from

Conversation

wking
Copy link
Contributor

@wking wking commented Apr 6, 2016

Now that we have multiple OCI specs. Reported by
@jonboulle.

Generated with:

$ sed -i 's/ociVersion/ociRuntimeVersion/g' $(git grep -l ociVersion)

@wking wking force-pushed the runtime-version branch from e4fde78 to fbd8ab0 Compare April 6, 2016 22:02
wking added 2 commits April 6, 2016 15:03
This should have been ociVersion since 7117ede (Expand on the
definition of our ops, 2015-10-13, opencontainers#225) changed the key in
runtime.md.

Signed-off-by: W. Trevor King <wking@tremily.us>
Now that we have multiple OCI specs [1,2,3].  Also updates the state
JSON key.

Generated with:

  $ sed -i 's/ociVersion/ociRuntimeVersion/g' $(git grep -l ociVersion)

[1]: https://github.com/opencontainers/image-spec
[2]: https://github.com/opencontainers/runtime-spec
[3]: https://github.com/opencontainers/image-spec/pull/6/files/bf5c3f6b30cf326ee3e64849c8eb4c953500dd25#r58699357

Reported-by: Jonathan Boulle <jonathanboulle@gmail.com>
Signed-off-by: W. Trevor King <wking@tremily.us>
@vbatts
Copy link
Member

vbatts commented Apr 7, 2016

Hold on this.

On Wed, Apr 6, 2016 at 5:45 PM, W. Trevor King notifications@github.com
wrote:

Now that we have multiple https://github.com/opencontainers/image-spec
OCI https://github.com/opencontainers/runtime-spec specs. Reported
https://github.com/opencontainers/image-spec/pull/6/files/bf5c3f6b30cf326ee3e64849c8eb4c953500dd25#r58699357
by
@jonboulle https://github.com/jonboulle.

Generated with:

$ sed -i 's/ociVersion/ociRuntimeVersion/g' $(git grep -l ociVersion)


You can view, comment on, or merge this pull request online at:

#371
Commit Summary

  • config.md: Rename ociVersion -> ociRuntimeVersion

File Changes

Patch Links:


You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
#371

@wking
Copy link
Contributor Author

wking commented Apr 13, 2016

There was some discussion on this proposal in today's meeting 1.
The main alternative proposal seemed to be image-spec-style media
types 2. Looking over [3,4], the media-type approach looks similar
to JSON-LD's @context [5,6]. Using JSON-LD would certainly give us an
approach that has had some thought put into it, although I'm not
particularly familiar with it myself. And it also makes life easier
for consumers, since they can notice and complain about an
unrecognized @context value, but would have a harder time tracking
version → ociVersion → ociRuntimeVersion → … without a human reading
the spec ChangeLog. @context also gives us the multiple-schema
support I was stumbling towards with [7,8], and that gives bundle
authors a convenient way for to clarify the interpretation of whatever
they put in ‘annotations’ [9](or anywhere else in their JSON).

I haven't been able to dig up anyone talking about putting JSON-LD and
SemVer together. The Schema.org folks store frozen versions of their
schemas [10,11], but say “Note that schema.org release numbers are not
generally included when you use schema.org” [10,11]. There's also a
schemaVersion property, but it lists only ~10 domains using it 12.
And see 13 where Dan Brickley says:

Semver.org is interesting but the terminology doesn't directly map
from APIs to schemas.

I'm not convinced (the distinction between a schema and an API is not
clear to me). But we could either write our own ‘semanticVersion’
property, or leave the SemVer-ness implicit in the @context.

All of these approaches (ociRuntimeVersion, mediaType, and @context)
avoid the current ociVersion ambiguity. Is there a reason to prefer
mediaType over @context?

@wking wking mentioned this pull request Apr 29, 2016
@wking
Copy link
Contributor Author

wking commented Apr 29, 2016

“How are we going to version config.json?” came up again today 1.
The issue there revolved around hypothetically dropping support for a:

"mac-address": "default"

on Solaris even though the ‘mac-address’ property remains in the spec
and the ‘default’ value was never mentioned (instead, the in-flight
Solaris docs refer to external docs 2).

To me, versioning is about communicating the intended semantics for
the config settings (like JSON-LD's @context and @id properties). So
if a value (like ‘default’) is meaningful in an earlier iteration of a
property, and not meaningful (or meaning a different thing) in later
iteration of that property, it's a SemVer major bump for that property
3. Runc has currently (permanently?) dropped versioning 4 to
avoid having to bump ociVersion to get an old-version bundle running
on a new-version runtime even though the changes between versions
didn't impact the subset of properties used in bundle's config. And
there has been similar discussion around versioning image manifests
[5,6].

While getting an IRI for each property 7 may seem tedious, it's easy
to automate, and we already have steps in that direction in the JSON
Schema [8,9]. The JSON Schema ids are RFC 3986 URIs 9, while
JSON-LD @ids are RFC 3987 IRIs 7, but that distinction is probably
not a big deal for us.

Anyhow, I'm happy to work up a JSON-LD PR if folks feel like that has
a chance of being accepted ;).

@crosbymichael
Copy link
Member

Yes, lets hold on doing this because it would be much better to keep the two in sync instead of having two different versions that interop with each other.

@wking
Copy link
Contributor Author

wking commented Apr 29, 2016

On Fri, Apr 29, 2016 at 03:03:09PM -0700, Michael Crosby wrote:

Yes, lets hold on doing this because it would be much better to keep
the two in sync instead of having two different versions that
interop with each other.

The two what in sync? Is that “we want similar versioning for the
image-spec and runtime-spec repositories”? If so (and that makes
sense to me), I'm happy to spin off the JSON-LD ideas to dev@.
Although I think I have a clear enough idea of how they'll work to
submit a PR to anchor discussion. In any case, clarity on what you
think the next steps are and when/where they will be taken would be
good ;).

@wking
Copy link
Contributor Author

wking commented Apr 29, 2016

On Fri, Apr 29, 2016 at 03:45:46PM -0700, W. Trevor King wrote:

On Fri, Apr 29, 2016 at 03:03:09PM -0700, Michael Crosby wrote:

Yes, lets hold on doing this because it would be much better to
keep the two in sync instead of having two different versions that
interop with each other.

The two what in sync? Is that “we want similar versioning for the
image-spec and runtime-spec repositories”? If so (and that makes
sense to me)…

Ah, maybe you meant “we want both image-spec and runtime-spec to use
the same ociVersion identifier, and will lock their release cycles
together”. That moves in a less granular direction, and doesn't
sound like a good plan to me (why would the runtime care if the image
format got bumped?). And it was sounding like locked release cycles
were not part of the plan [1](which does make sense to me).

@wking wking mentioned this pull request Jun 27, 2016
wking added a commit to wking/opencontainer-runtime-spec that referenced this pull request Jul 26, 2016
There are other APIs described in this specification (e.g. the state
JSON format, and the in-flight command-line API [1]), but this string
covers the configuration file and referenced objects (e.g. the
filesystem at root.path).  As additional, backwards compatible
features are added to the spec (leading to 1.1, 1.2, etc. releases)
and supported by runtimes, those runtimes will *still* stupport 1.0
configs.  Once a 2.0 spec is cut, runtimes that only support 2.0 (and
nothing in the 1.0 line) will no longer support the 1.0 config.

My preferred approach here would be to use JSON-LD [2,3,4] to
explicitly document the intended semantics for each field, which would
allow us to drop the config-wide version and version each field
independently.  That would mean a breaking change on a particular
field would only break compatibility for folks who were using that
field.  Unfortunately, I haven't had much luck pushing the consensus
in that direction.

This commit does not add wording about how the runtime and other
consumers should handle an incompatible version.  We can address that
once the command-line API lands.

[1]: opencontainers#513
[2]: opencontainers#371 (comment)
[3]: opencontainers/image-spec#111 (comment)
[4]: opencontainers#510 (comment)
wking added a commit to wking/opencontainer-runtime-spec that referenced this pull request Jul 26, 2016
There are other APIs described in this specification (e.g. the state
JSON format, and the in-flight command-line API [1]), but this string
covers the configuration file and referenced objects (e.g. the
filesystem at root.path).  As additional, backwards compatible
features are added to the spec (leading to 1.1, 1.2, etc. releases)
and supported by runtimes, those runtimes will *still* stupport 1.0
configs.  Once a 2.0 spec is cut, runtimes that only support 2.0 (and
nothing in the 1.0 line) will no longer support the 1.0 config.

My preferred approach here would be to use JSON-LD [2,3,4] to
explicitly document the intended semantics for each field, which would
allow us to drop the config-wide version and version each field
independently.  That would mean a breaking change on a particular
field would only break compatibility for folks who were using that
field.  Unfortunately, I haven't had much luck pushing the consensus
in that direction.

This commit does not add wording about how the runtime and other
consumers should handle an incompatible version.  We can address that
once the command-line API lands.

[1]: opencontainers#513
[2]: opencontainers#371 (comment)
[3]: opencontainers/image-spec#111 (comment)
[4]: opencontainers#510 (comment)

Signed-off-by: W. Trevor King <wking@tremily.us>
wking added a commit to wking/opencontainer-runtime-spec that referenced this pull request Sep 8, 2016
There are other APIs described in this specification (e.g. the state
JSON format, and the in-flight command-line API [1]), but this string
covers the configuration file and referenced objects (e.g. the
filesystem at root.path).  As additional, backwards compatible
features are added to the spec (leading to 1.1, 1.2, etc. releases)
and supported by runtimes, those runtimes will *still* stupport 1.0
configs.  Once a 2.0 spec is cut, runtimes that only support 2.0 (and
nothing in the 1.0 line) will no longer support the 1.0 config.

My preferred approach here would be to use JSON-LD [2,3,4] to
explicitly document the intended semantics for each field, which would
allow us to drop the config-wide version and version each field
independently.  That would mean a breaking change on a particular
field would only break compatibility for folks who were using that
field.  Unfortunately, I haven't had much luck pushing the consensus
in that direction.

This commit does not add wording about how the runtime and other
consumers should handle an incompatible version.  We can address that
once the command-line API lands.

[1]: opencontainers#513
[2]: opencontainers#371 (comment)
[3]: opencontainers/image-spec#111 (comment)
[4]: opencontainers#510 (comment)

Signed-off-by: W. Trevor King <wking@tremily.us>
wking added a commit to wking/opencontainer-runtime-spec that referenced this pull request Sep 14, 2016
There are other APIs described in this specification (e.g. the state
JSON format, and the in-flight command-line API [1]), but this string
covers the configuration file and referenced objects (e.g. the
filesystem at root.path).  As additional, backwards compatible
features are added to the spec (leading to 1.1, 1.2, etc. releases)
and supported by runtimes, those runtimes will *still* stupport 1.0
configs.  Once a 2.0 spec is cut, runtimes that only support 2.0 (and
nothing in the 1.0 line) will no longer support the 1.0 config.

My preferred approach here would be to use JSON-LD [2,3,4] to
explicitly document the intended semantics for each field, which would
allow us to drop the config-wide version and version each field
independently.  That would mean a breaking change on a particular
field would only break compatibility for folks who were using that
field.  Unfortunately, I haven't had much luck pushing the consensus
in that direction.

This commit does not add wording about how the runtime and other
consumers should handle an incompatible version.  We can address that
once the command-line API lands.

[1]: opencontainers#513
[2]: opencontainers#371 (comment)
[3]: opencontainers/image-spec#111 (comment)
[4]: opencontainers#510 (comment)

Signed-off-by: W. Trevor King <wking@tremily.us>
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

Successfully merging this pull request may close these issues.

3 participants