GraphBLAS / binsparse-specification

A cross-platform binary storage format for sparse data, particularly sparse matrices.
https://graphblas.org/binsparse-specification/
BSD 3-Clause "New" or "Revised" License
15 stars 4 forks source link

Add versioning to format #32

Closed ivirshup closed 1 year ago

ivirshup commented 1 year ago

This PR adds a "version" attribute to the format.

This proposes a two digit version specifier: MAJOR.MINOR, like a truncated semver specifier.

Possible addition: development/ release candidate versioning

I would like to be able to have release candidates/ development versions for this specification. The main thing here is to give us a way to hack on the specification before committing to a final version. That way any files we write and share during this phase are clearly marked as potentially being invalid. I would propose following semantic versioning or python's PEP440 to support release candidates and development versions (notes on compatibility). The PEP is suggested since I don't believe I've seen many non-python projects use the semver release candidates and dev semantics.

semver PEP440
Development a little unclear X.Y.devN
Release Candidate X.Y-rcN X.YrcN

This wouldn't strictly need to be documented in the spec, but it would be good to document somewhere.

Alternatives

No MINOR

When I reached out to OME-NGFF I was told they only intend to have a single digit version. They are only doing versions like 0.4 right now because it is still broadly unstable.

We could do the same thing here. However, we have discussed multiple additions that would not neccesitate full nD support, but would increase the scope of the spec. This includes: chunking, triangular formats, masked formats.

PATCH

The PATCH is not included because it's not clear what a bug fix for a file format should mean. There are specifications that use a patch release:

Prior art

github-actions[bot] commented 1 year ago

Automated Review URLs

willow-ahrens commented 1 year ago

These changes look great! Could we also list the current version at the top of the spec document?

BenBrock commented 1 year ago

@ivirshup @willow-ahrens I added the version number to the top of the file and also changed the version to 0.5, which is what we had written in the notes.

Is this ready to merge?

ivirshup commented 1 year ago

Sorry for the late reply! Traveling for the past couple weeks

I would prefer to start with either 0.1 or 1.0.dev0

willow-ahrens commented 1 year ago

LGTM! I just changed the version to 0.1 as suggested