Hi, all. We’re continuing to work on improving the lifter experience, to make sure subscribers have ever-improving confidence in the packages they’re supporting. One of the areas that we want to improve upon next is version schemes and release support levels.
Right now, we’re assuming all projects use semantic versioning, and we have a task called Release Streams which defines how you’ll support older versions of your software. This task currently assumes the standard SemVer approach of major versions breaking compatibility, but also allows for minor versions being incompatible for alternative versioning approaches. Each “stream” as we’re calling it has a level of support: prerelease, long-term support, deprecated, or “use until newer/safer release is available”:
We’ve learned a few things since then:
- Enough packages use something different from pure semantic versioning that we need to handle those schemes better.
- The current interface for hinting to subscribers what versions you’ll support needs to be clearer.
- We need to support more options for offered support levels.
- We were also creating separate release streams for versions lower than 1.0.0. Under SemVer, any releases lower than 1.0.0 are the same as a prerelease, so there’s no way to give subscribers any assurances with those versions.
So here’s what we’re thinking, in mockup form. We want to both expand upon and simplify this task. First, we want to know what scheme you’re using for your package versioning, if it’s not pure SemVer (and if it’s something we don’t support yet, we want to figure out how to do so!). We’ll also show you, based on that version scheme, where we figure your releases fall into groups, to make sure we have it right:
Second, we want to rotate around the Release Streams view into a much easier-to-scan table, with some improvements on defining unsupported versions and with a new option, defining what groupings of releases you’ll support for subscribers who use your software. Here’s a mockup:
We’re still refining the idea, and we’d like to get your feedback on how best to help you define your projects’ levels of support.
Some specific questions:
- Do you use a non-SemVer version scheme and how would you describe it?
- What do you find clear and unclear in the above mockups?
- Do you know what answers you’d give? Are you wanting to give an answer other than the options available in the mocks?
Leave a comment below with your thoughts!