Comparison with changesets
A precise, non-marketing map of where molt matches JS changesets, where it deliberately diverges, what it adds, and what it refuses to build.
molt is a faithful port of changesets with documented divergences. This page is the technical reference for exactly which is which. It tracks changesets at 3.0.0-next.9 (the v3 line) and follows v3 semantics, not the older v2 behavior that most online material and both abandoned Python ports describe. If you are coming from changesets, pair this with Migrating from changesets.
The v3 baseline
molt ports v3 semantics. The behaviors below changed between changesets v2 and v3; molt matches the v3 column:
Ported faithfully
These behaviors are the reason changesets works, and molt keeps them intact. Getting any of them wrong produces silently incorrect version numbers, so they are validated against ported test fixtures.
Deliberately different
These diverge because Python's packaging rules force a different answer than JavaScript's. Each is intentional and documented in Design decisions.
What molt adds
Capabilities changesets lacks -- most cheap to build fresh, expensive to retrofit, which is why they were never added upstream. Several are the community's longest-standing unmet requests (see the Roadmap for the demand history).
What molt refuses
A sharp tool says no. These are deliberate non-goals, not backlog items:
- Full commit-derived versioning. It destroys the intent-based model; a commit is not a release intent, and conventional-commit prefixes cannot see breaking changes across package boundaries. molt offers one-time changeset seeding from commits as a migration aid only.
- Executable config. Config is TOML/JSON so other tools can read it without running your code.
- Arbitrary shell hooks as the primary extension point. Extension happens through Python entry points.
- Per-tool bespoke integrations (Nx/Turbo-style), one-PR-per-package, chat bots, and config-option creep. Being the best Python release tool beats being a mediocre everything-tool.
Where to go next
- Migrating from changesets -- the practical port guide.
- Design decisions -- the rationale behind each divergence.
- Roadmap -- what is shipped, in progress, and planned.
- Why molt -- the strategic case.