Open sudo-bmitch opened 1 year ago
@sudo-bmitch Looking at the distribution spec so far, I have filed https://github.com/opencontainers/distribution-spec/issues/454 . I don’t think that’s blocking the spec release at all.
Note to self - distribution spec changes:
subject
support via a tag convention.
Warning
response headers, it SHOULD report the warnings to the user in an unobtrusive way.
Clients SHOULD deduplicate warnings from multiple associated responses.”Other spec points of note:
Note to self — image spec changes:
os.*
and variant
, ArgsEscaped
fields in image config — probably mostly irrelevant, but see e.g. checkImageDestinationForCurrentRuntime
. OTOH Podman might need to update how it creates runtime-spec data, per https://github.com/opencontainers/image-spec/blob/main/conversion.md : https://github.com/containers/podman/issues/19459 .data
property in descriptors — probably consume it, and possibly produce it (with what heuristics?)artifactType
property in descriptors — seems irrelevant right nowsubject
field on both manifests and image indices.artifactType
in manifests; “ the config.mediaType
is set to the empty value, the artifactType
MUST be defined.”manifests
:) “An encountered mediaType
that is unknown to the implementation MUST NOT generate an error.”mediaType
that is unknown MUST NOT generate an error.”layers
“SHOULD have at least one entry”, i.e. we should not break on 0 (but there MUST be a layer on on a non-artifact)layers
“Implementations storing or copying image manifests MUST NOT error on encountering a mediaType
that is unknown to the implementation.”application/vnd.oci.empty.v1+json
for “unused descriptors” — we probably don’t need to treat that specially.Other spec points of note:
specs-go/v1/Image{LayoutFile,LayoutVersion,IndexFile,BlobsDir
should be used in the oci*
transports.@sudo-bmitch Looking at containers/image, I think the changes are very useful and I have no concerns with the spec.
It will take some time for the “MUST” compatibility mechanisms on manifest upload / deletion to be implemented, though — both to just implement them (they don’t exist right now in c/image), for the implementations to propagate to supported products, and ultimately for users to upgrade their stable systems which can already upload OCI manifests. So I’m not sure that the “MUST” requirements, in practice, provide a guarantee any other part of the ecosystem can rely on, outside of repos with strictly controlled writers (which don’t really EDIT need this world-wide spec guarantee to impose that strict control).
I think the idea is it's basically "MUST" if one claims/advertises 1.1 support/compliance.
I think the idea is it's basically "MUST" if one claims/advertises 1.1 support/compliance.
That's exactly it. The "MUST" sections turn into a conformance test for registries to advertise support for 1.1 conformance. For clients, it's good to ensure you have support for older and non-conformant registries.
More is tracked by RH as https://issues.redhat.com/browse/RUN-1880 .
distribution/distribution
is waiting for the release to be cut before implementing the changes (see https://github.com/distribution/distribution/pull/3834#issuecomment-1678919086).
OCI is approaching a 1.1.0 release on the image-spec and distribution-spec, so we are reaching out to implementations to see if you have any concerns implementing support for those changes that we should address before a GA release.
A full diff of the changes can be viewed at:
I'm happy to take feedback here, you can raise an issue in OCI, or respond in our tracking issue at https://github.com/opencontainers/image-spec/issues/1093.