Skip to content

Commit da4b29b

Browse files
authored
Update release process with notes about coordinating with nwb-s… (#1214)
* Update release process with notes about coordinating with nwb-schema * Update title * Add note about hdmf-common-schema
1 parent e33dee4 commit da4b29b

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

docs/source/software_process.rst

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)