-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Versioning proposal for PyScript #337
New issue
Have a question abou 8000 t this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Semver |
calver |
As you said, either versioning schemes will meet the stated requirements. If you're looking for more constructive feedback, it may be helpful to include some examples with the proposal. As a singular piece of anecdotal data, if my team were to consider adopting PyScript to build a multi-year Python curriculum for K-12 students, which would include thousands of apps pinned to exact versions, we would need clear, transparent, and detailed communication on what breaking changes, if any, are included in each released version. |
✅ Voting for Calver: |
My vote is also for CalVer. |
While we are adding versioning, we should also add/considering SRI, as suggested by #326 |
If standard CalVer is used, how would breaking changes be captured in the versioning scheme? |
@ryansobol It's a good question. Let's see what others have to say on this. Also, please share your thoughts on my proposal below. A. Here are my initial thoughts:
B. Other thoughts:
|
After much deliberation, my team came to the conclusion that, yeah, it would be necessary if we were to adopt PyScript for our use cases.
If the team is dead-set on CalVer, and is considering a hybrid versioning scheme, is there any reason why it must be composed of exactly three version components?
Why not just I would also like to point out that plain-old SemVer would work for our use cases as end-users. |
Thanks @ryansobol @sugatoray and everyone for chiming in and expressing your thoughts here. Here is a great post, that I'd like to share in the discussion, about versioning and how semver is not always the silver bullet for versioning. Personally, I'm way more experienced with
For the current state of PyScript (and what I expect it to be in the near foreseeable future), we have a lot to add, change, and remove. It's likely that we will be changing some APIs and something that will require users to change their code. With all that said, is that the best we can do? No. I think we can do better... and actually make the difference between the versions of PyScript Framework and the specific APIs of the Framework. So, for instance, PyScript version X.Y.Z can support API version 1.2.3 while version X.Y+1.Z can introduce a new API version (let's say 2.0.0) that is intentionally incompatible with the previous (1.x.y) and actually support both (allowing for a deprecation cycle, if necessary). This model is not that uncommon for tools/frameworks with versioned APIS or schemas. PyScript is new. We intentionally have been using In the scenario above, we can use the @ryansobol I actually thought about the model your are proposing of |
Given the votes and overall 👍 on this (and no objections after the amended proposal) I'd call this decided and we can start implementing it this week. Thanks, everyone! 🙌 /cc @pww217 |
Thanks for considering my input, @fpliger! Though I’m not sure I fully understand the example scenario above, I appreciate being heard, and it sounds like both communicating breaking changes via the versioning scheme and anticipating a future with deprecation cycles are still on the table. My team and I eagerly await the implementation details. 😄 |
Closing this as accepted now that we also have #468 to follow up on actual work after this decision. Thanks to everyone who participated!! 🎉 |
Not sure if worth re-opening this, but if this was the reason to pick Calver:
I wonder when we'd like to draw a line and communicate out there that PyScript is now stable.
a major semver change is guaranteed to break (in a way or another), a minor is to bring in new features, a patch is for bugs fixes ... but there's more to it ...
I have no other points to add but to me, looking around at the industry we are, everyone, including Python uses semver or something close to it ... browsers, Operating Systems, programming languages (oddly enough ECMAScript is an exception here, but they also don't release monthly, rather 3 features in each year) so if you feel like times are different today, and we'd like to communicate we're out of perpetual experimentation after years of experience with the project, please re-open this and let's publish our first edit As last stroke to me ... with Calver we can't back-port fixes or changes to a previous release, as these won't make sense once published with a date ... so we are intentionally ditching PyScript "classic" support forever if we release PyScript "next" branch via Calver, as opposite of having a |
Skipping versioning the project was an intentional choice that allowed us to focus on the minimal usable version very fast. Now that we have users starting to try PyScript and engage with the project, it's basically an urgent need for us to choose a versioning system for PyScript so that we can better speak in terms of planning & roadmap, support and feedback (users can refer to specific version when bug reporting), and discussions.
An important aspect to keep in mind is that PyScript is still in its very early stages. So, we should highlight that the expectations should be that think can often break until we reach a level of maturity and stability.
For these reasons, I'd like to propose that we adopt Calver as a versioning convention. It seems to be a good fit in terms of capturing the progression/maturity of versions in time and allows us to not overpromise on stability as we roll out new versions (especially important for where PyScript is today vs the interest shown by the community). It also makes it easier in terms of not having to overthink version numbers when we are introducing new features vs. feature changes vs bugfixes, etc..
Semver is the other obvious option to take into consideration since it's pretty much the standard for a lot of projects but, for the reasons described above, I'd put my vote on Calver.
The text was updated successfully, but these errors were encountered: