Description
The BIDS specification, schema and validator lifecycles are currently mixed. The schema is updated linearly with main, and there is no method to maintain a branch of the schema that fixes issues with the schema for the stable release without also including new features in the main
branch.
As the validator is now heavily reliant on the schema, there is no difference to the validator between an update that fixes a bug in the schema and one that introduces a feature, which could potentially be changed or reverted before the next release of BIDS.
Here I propose a parallel branching strategy for the specification and the validator.
Legend:
- main:
bids-specification:main
- maint/1.10.0:
bids-specification:maint/1.10.0
- validator-stable:
bids-validator:stable
(orbids-validator:maint/1.15.x
) - validator-main:
bids-validator:main
---
config:
gitGraph:
parallelCommits: false
---
gitGraph TB:
branch validator-stable order: 2
commit id: "v1.15.0.devN"
checkout main
commit tag: "v1.10.0" id: "schema-0.11.3"
branch maint/1.10.0 order: 1
checkout validator-stable
merge main tag: "v1.15.0"
branch validator-main order: 3
checkout main
commit id: "schema-0.11.4.dev1"
checkout validator-main
merge main id: "v1.15.1.dev1"
checkout main
commit id: "schema-0.11.4.dev2"
checkout validator-main
merge main id: "v1.15.1.dev2"
checkout main
checkout maint/1.10.0
commit id: "schema-0.11.3.post1"
checkout validator-stable
merge maint/1.10.0 tag: "v1.15.1"
checkout main
merge maint/1.10.0 id: "schema-0.11.4.dev3"
checkout validator-main
merge main id: "v1.15.1.dev3"
checkout main
commit id: "schema-0.11.4.dev4"
checkout validator-main
merge main id: "v1.15.1.dev4"
checkout main
commit id: "schema-0.11.4.dev5"
checkout validator-main
merge main id: "v1.15.1.dev5"
checkout maint/1.10.0
commit id: "schema-0.11.3.post2" tag: "v1.10.0.post1"
checkout validator-stable
merge maint/1.10.0 tag: "v1.15.2"
checkout main
merge maint/1.10.0 id: "schema-0.11.4.dev6"
By using .postN
releases for fixes to the schema and .devN
releases for new changes, the stable validator could follow the latest .post
and the development version could follow the latest .dev
.
I also include a v1.10.0.post1
tag, which could be used for schema fixes that have rendering consequences, or things like fixing typos in the spec.
Note that the "merges" between the specification and validator branches are not actual git merges. They would be the validator updating pins to versions of the schema pushed to https://jsr.io/@bids/schema/versions.
This post is motivated by validation considerations, but has implications for how we operate on the specification. Therefore I am posting this here, as well as bids-standard/bids-validator#85, where I expect the discussion to focus more around the mechanics of keeping validator branches synchronized to schema releases.