Versioning Guide¶
Semantic Versioning¶
JoyfulJay follows Semantic Versioning 2.0.0:
Version Components¶
- MAJOR: Breaking changes to JJ-CORE features
- MINOR: New features, JJ-EXTENDED changes, deprecations
- PATCH: Bug fixes, documentation, performance improvements
Schema Versioning¶
Feature schemas are versioned separately from the library and stored at:
Generating Schema¶
from joyfuljay.schema import write_schema
# Generate full schema
write_schema("schema/v1.0/feature_schema.json")
# Generate minimal schema (just types and profiles)
write_schema("schema/v1.0/feature_schema.json", minimal=True)
Or via CLI:
Schema Contents¶
The generated schema includes:
- All 401 feature definitions
- FeatureMeta for each feature (dtype, units, direction, privacy, etc.)
- Profile membership for each feature
- JoyfulJay version and total feature count
Schema version changes: - v1.x: Compatible within major version - v2.0: Breaking schema changes
Profile Versioning¶
Profiles are tied to schema versions:
| Profile | Schema v1.0 | Notes |
|---|---|---|
| JJ-CORE | 151 features | Frozen |
| JJ-EXTENDED | 148 features | Stable |
| JJ-EXPERIMENTAL | 102 features | Unstable |
Breaking Changes¶
What Counts as Breaking¶
JJ-CORE breaking changes: - Removing a feature - Changing feature ID - Changing feature semantics - Changing data type - Changing units
Non-breaking changes: - Adding new features (to any profile) - Bug fixes with documented errata - Performance improvements - Additional metadata
Handling Breaking Changes¶
When breaking changes are necessary:
- Document in CHANGELOG.md
- Bump major version
- Create new schema version
- Provide migration guide
Compatibility Matrix¶
| JoyfulJay | Schema | Python | Scapy |
|---|---|---|---|
| 0.1.x | v1.0 | >=3.10 | >=2.5 |
Release Process¶
- Update version in
pyproject.toml - Update version in
src/joyfuljay/__init__.py - Update CITATION.cff
- Regenerate schema if needed
- Update CHANGELOG.md
- Tag release
Checking Version¶
Upgrading¶
Minor Version Upgrades¶
Generally safe for JJ-CORE and JJ-EXTENDED features.
Major Version Upgrades¶
- Read the CHANGELOG.md
- Check for deprecated features
- Test with your data
- Update configuration if needed
Deprecation Policy¶
Deprecated features: - Are announced in CHANGELOG.md - Include deprecation warnings - Remain available for 2 minor versions - Are removed in the next major version
Version Pinning¶
For reproducible research, pin versions:
Or use a range for minor updates:
Changelog¶
See CHANGELOG.md for detailed version history.