@@ -96,3 +96,36 @@ by CircleCI, typically named `pynwb-{version}.tar.gz`.
9696
9797.. _versioneer : https://github.com/warner/python-versioneer
9898.. _release : https://github.com/NeurodataWithoutBorders/pynwb/releases
99+
100+ ----------------------------------------------------
101+ Coordinating with nwb-schema Repository and Releases
102+ ----------------------------------------------------
103+
104+ The default branch is "dev". It is important that all releases of PyNWB contain a released version of nwb-schema.
105+ If a release contains an unreleased version of nwb-schema, e.g., from an untagged commit on the "dev" branch, then
106+ tracking the identity of the included nwb-schema becomes difficult and the same version string could point to two
107+ different versions of the schema.
108+
109+ Whenever the "dev" branch of the nwb-schema repo is updated, a commit should be made to the "schema_x.y.z" branch of
110+ PyNWB, where "x.y.z" is the upcoming version of nwb-schema, that updates the nwb-schema submodule to the latest commit
111+ of the "dev" branch on nwb-schema. If the update to nwb-schema is the first change after a release, the "schema_x.y.z"
112+ branch should be created, the nwb-schema submodule should be updated, and a draft PR should be made for merging the
113+ "schema_x.y.z" branch to "dev". This PR provides a useful public view into how the API changes with each change to the
114+ schema.
115+
116+ If the change in nwb-schema requires an accompanying change to PyNWB, then a new branch should be made with the
117+ corresponding changes, and a new PR should be made for merging the new branch into the "schema_x.y.z" branch. The PR
118+ should be merged in GitHub's "squash and merge" mode.
119+
120+ When a new version of nwb-schema x.y.z is released, the "schema_x.y.z" branch of PyNWB should be checked to ensure
121+ that the nwb-schema submodule points to the new release-tagged commit of nwb-schema. Then the PR should be merged
122+ into dev with GitHub's "merge" mode. Commits should NOT be squashed because they will usually represent independent
123+ changes to the API or schema, and the git history should reflect those changes separately.
124+
125+ The "dev" branch should NEVER contain unreleased versions of nwb-schema to prevent cases of users and developers
126+ accidentally publishing files with unreleased schema. This problem cannot be completely avoided, however, as users
127+ could still publish files generated from the "schema_x.y.z" branch of PyNWB.
128+
129+ The nwb-schema uses hdmf-common-schema. Changes in hdmf-common-schema that affect nwb-schema result in version
130+ changes of nwb-schema and as such are managed in the same fashion. One main difference is that updates to
131+ hdmf-common-schema may also involve updates to version requirements for HDMF in PyNWB.
0 commit comments