rdfjs / dataset-spec

RDF/JS: Dataset specification 1.0 – This specification provides a definition how to store multiple quads in a so-called dataset.
https://rdf.js.org/dataset-spec/
6 stars 5 forks source link

Adopt a versioning system #60

Open alexkreidler opened 4 years ago

alexkreidler commented 4 years ago

Semantic versioning is as follows

MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards compatible manner, and PATCH version when you make backwards compatible bug fixes.

Since the spec is not a library, rather a set of interfaces, semantic versioning doesn't make sense as every change would technically modify the API surface and thus be a breaking change/major version.

I propose the following: MAJOR version when:

MINOR version when:

PATCH version when:

Really, I only care that what I consider "breaking changes" (any change to the API) is represented as either a major or minor version bump (e.g. 2.1 -> 2.2)

I also propose we add a Changed section to the bottom of the spec to indicate when we've made one of the breaking changes mentioned.

Also, if possible, libraries that offer types for the spec types (e.g. @types/rdf-js) should be versioned the same as the Spec version.

Since @types/rdf-js is already on version 4, we may want to simply set the spec's version to 5 for convenience.

The details of the versioning are not as important as the fact that the spec is versioned so that implementations can distinguish themselves and how compliant they are.

I'd appreciate any feedback!

rubensworks commented 4 years ago

Good suggestion. I think we already implicitly follow this, but might be good to make implicit somewhere.

Since @types/rdf-js is already on version 4, we may want to simply set the spec's version to 5 for convenience.

While I agree that aligning versioning with the spec, this might not always be possible. Most of the times that the DT typings gained a major version increase, was due to changes in the typings that were not caused by spec changes.

For example: https://github.com/rdfjs/types/commit/e6d3b8601a63e0a7e78c59c91a94d44ba325563b

A simple alternative would be to mention the spec version in the typings README.