Evolving Taxonomies¶
Taxonomies can be used to tag data stored via some persistence layer (like Premonition Data Platform or MongoDB) and to tag data – either programmatically or via tags files downloaded from the tag form. As a result, taxonomy evolution can be complicated as changes to a taxonomy may have implications for each of these use-cases.
Taxonomy Semantic Versioning¶
Taxonomy version numbers are designed to be semantically meaningful and follow a convention similar to semantic versioning in software development. Every taxonomy release has an associated version which consists of 3 numbers (like in semver): a major number, minor number, and a patch number.
The major number is incremented if the taxonomy undergoes breaking changes which require updates to the tags already stored on the persistence layer.
The minor number is incremented if the taxonomy undergoes breaking changes which require updates to a user’s tag files or scripts.
The patch number is incremented for updates without any breaking changes.
Breaking and Non-Breaking Changes¶
Listed below are types of changes and the minimum version bump required. If multiple changes are made, the maximum version bump must be used:
Term/Field Deletion: major release.
Term Move: major release. In the future, this could possibly be converted to a minor release.
Term/Field Rename: minor release. If the term name is made an alias, then this can be a patch release.
Making optional field required: minor release. (Thoughts welcome!)
(Optional) Term/Field Addition: patch release.
Deprecating a field/term: patch release.
Making required field optional: patch release.
Adding alias for term/field: patch release.
Techniques to Avoiding Breaking Changes¶
Some of the breaking changes above have non-breaking alternatives to use for taxonomy evolution:
Term/Field Deletion: Deprecate the term instead.
Term Move: Deprecate the original and add a new term.
Term/Field Rename: Add alias for original name and rename.