|
| 1 | +The "dev" Branch and Releases |
| 2 | +============================= |
| 3 | + |
| 4 | +The default branch is "dev". The "dev" branch will hold the bleeding edge version of the NWB format specification, |
| 5 | +language specification, and storage specification. PRs should be made to "dev". Every PR should include an update to |
| 6 | +the corresponding format/language/storage release notes. If the PR involves a change to the NWB format, the PR should |
| 7 | +also update the version of the format in three places: `/docs/format/conf.py`, `/core/nwb.namespace.yaml` and |
| 8 | +`/core/nwb.file.yaml`. The new version string should be the next bugfix/minor/major version of the format with the |
| 9 | +suffix "a" (for "alpha"). For example, if the format is currently in version "2.2.0" and the format is then updated / |
| 10 | +released internally with a bug fix, then the PR for that bug fix should update the format version from "2.2.0" to |
| 11 | +"2.2.1a". Appending the "a" suffix ensures that any person or API accessing the default dev branch of the repo |
| 12 | +containing an internally released version of the schema receives the schema with a version string that is distinct from |
| 13 | +the full public released versions of the schema. |
| 14 | + |
| 15 | +Before merging a PR on nwb-schema, developers should take care to test their changes locally with the latest version |
| 16 | +of PyNWB and MatNWB to ensure compatibility. If the APIs require changes to work with the PR, those changes should be |
| 17 | +implemented and tested locally before merging the PR to ensure that the API changes can be implemented and no further |
| 18 | +changes to the schema are required. |
| 19 | + |
| 20 | +When a new public release is ready, the branches of the APIs, PyNWB and MatNWB, that track nwb-schema should be checked |
| 21 | +to ensure that when the new release is made, the branches in the APIs can be merged without issue. |
| 22 | + |
| 23 | +Immediately prior to a new public release, the version of the format should be updated to remove the any alphabetic, |
| 24 | +suffixes, e.g., "a", "b", and "rc", and the documentation and release notes should be checked and updated (see release |
| 25 | +process documents). |
| 26 | + |
| 27 | +It is important that all public releases of nwb-schema contain a publicly released version of hdmf-common-schema. If a |
| 28 | +public release contains an internally released version of hdmf-common-schema, e.g., from an untagged commit on the "dev" |
| 29 | +branch, then tracking the identity of the included hdmf-common-schema becomes difficult and the same version string |
| 30 | +could point to two different versions of the schema. |
| 31 | + |
| 32 | +For the same reason, it is important that all public releases of the APIs, PyNWB and MatNWB, contain a publicly |
| 33 | +released version of nwb-schema. Starting with nwb-schema version 2.2.0, the dev branch and all public releases of PyNWB |
| 34 | +and MatNWB include only publicly released versions of nwb-schema. For more details, see the |
| 35 | +[PyNWB software process documentation](https://pynwb.readthedocs.io/en/latest/software_process.html). |
| 36 | + |
| 37 | +The [NWB Extensions Versioning Guidelines](https://nwb-extensions.github.io/versioning_guidelines) are used to guide |
| 38 | +versioning of the NWB core schema, as well as extensions to NWB. |
0 commit comments