Skip to content

Add draft for RFC-13 (Versioning) - #640

Draft
lubianat wants to merge 10 commits into
mainfrom
rfc-13-draft
Draft

lubianat wants to merge 10 commits into
mainfrom
rfc-13-draft

Conversation

@lubianat

Copy link
Copy Markdown
Contributor

Adds the draft for RFC-13 based on work done previously on GoogleDocs by @vuhlmann @joshmoore @gouttegd and @DragaDoncila

Commits (please squash):

  • Add the markdown of gDocs for 13
  • Reserve RFC-11
  • add rfc-12 placeholder
  • Adapt markdown to NGFF usage
  • update rfc index toctree
  • Fix author/editor relation

@github-actions

Copy link
Copy Markdown
Contributor

Automated Review URLs

Comment thread rfc/13/index.md Resolved
Comment thread rfc/12/index.md Resolved
Comment thread rfc/11/index.md Resolved

@joshmoore joshmoore left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor text suggestion

lubianat and others added 2 commits October 27, 2026 11:23
Co-authored-by: Josh Moore <josh@openmicroscopy.org>
Co-authored-by: Josh Moore <josh@openmicroscopy.org>
@imagesc-bot

Copy link
Copy Markdown

This pull request has been mentioned on Image.sc Forum. There might be relevant details there:

https://forum.image.sc/t/ngff-weekly-dev-update-thread/110810/162

@joshmoore

Copy link
Copy Markdown
Member

☝🏽 Note the timer ⏲️ of one week for the merge on this so that we can open the comment period.

Comment thread rfc/13/index.md

### Dataset version metadata

OME-Zarr datasets record the complete OME-Zarr specification version, including the major, minor, and patch level, in their Zarr JSON. This identifies the specification version according to which the dataset was written.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suppose an implementation can write data consistent with a range of minor versions, say 1.2, 1.3, and 1.4. it writes a dataset that only uses features from 1.3. which version of the spec does it declare in zarr.json? if the answer is 1.3, then this places a burden on implementations to track exactly which features map to which minor version. if the answer is 1.4, the metadata is misleading.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If every feature added in a 1.x version is added in the form of an extension (that's a big if as this has not really been discussed yet), then the extension management layer would provide what's needed to keep track of the minor version in which a given extension has been added.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this burdens implementations with an obligation they might fail to uphold, so it might be worth reconsidering. putting a semver version in a json data model is not something I have seen work well; rather I have seen it fail, and there's a reason zarr itself only uses a version field for the major format version, and practically none of the parametrized data types, codecs, chunk grids, etc declare a version at all

Comment thread rfc/13/index.md

#### Supporting multiple versions

An implementation MAY support multiple OME-Zarr specification versions simultaneously. An implementation SHOULD make clear which versions it supports. An implementation MUST write datasets against one explicit specification version at a time, rather than producing a dataset that ambiguously mixes specification versions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would we foresee requiring collections to have consistent versions across all nodes. That appears like a hard requirement to me. It should be valid to e.g. refer to a 1.0 image collection hosted at the BIA & a 1.2 image somewhere else, no?
If I process these 2 images when OME-Zarr 1.4 is out and e.g. create a new label image for both images, would we expect that label to be in:

  • 1.4 (always newest supported)
  • One in 1.0, one in 1.2 (matching the image it was derived for)
  • Something else?

My default for an implementation so far would have been to match the version of label images to the version of the image it is derived from.

This branch has not been deployed

No deployments
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.

6 participants