Skip to content

Specification/schema development policy and branching #1977

Closed
@effigies

Description

@effigies

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 (or bids-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"
Loading

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions