Replies: 3 comments 5 replies
-
Hi @zanieb and the Ruff team! This is completely amazing. We now have a clear versioning scheme and we know when we can update Ruff in our pipelines and avoid breaking anything. I think the RFC covers what needs to be defined in each new release. I missed the criteria in which a rule will be promoted to stable. I understand it must be promoted with at least 2 minor releases in preview, but what are the criteria for a rule to leave preview and become stable? Community feedback? Bugs reported? Adoption of that rule (how do you know?)? Do you think it's worth exploring more this question? Sorry if I missed something, but it's not clear to me. Thank you so much for giving customers even more confidence in the Ruff project. This is certainly a significant change in this project. |
Beta Was this translation helpful? Give feedback.
-
Now that we've announced our formatter I'd like to add the following proposals for formatter versioning that would take effect once it reaches stable: Minor version bumps when:
Patch version bumps when:
Here it's important to distinguish between changes in formatting due to bugs versus changes in formatting style. A formatting bug fix may address:
In contrast, formatting style changes are subjective attempts to improve the readability of the code. Discussion welcome! |
Beta Was this translation helpful? Give feedback.
-
Thank you for putting all this together! This seems a bit like semantic versioning, except keeping major = 0 and using minor for both breaking changes and new features. (Patch remains as patch for bug fixes.) May I ask why the hesitation to use major version numbers? Rather than coming up with a new versioning scheme, it seems to me it would be a lot simpler to bump to 1.x and follow SemVer, which says:
I believe those are all met:
Applying SemVer to the points in the first post could give something like this [my notes in italics]: Major version increases will occur when:
Minor version increases will occur when:
Patch version increases will occur when:
|
Beta Was this translation helpful? Give feedback.
-
Hi everyone!
We are interested including an additional version number (the minor version) in our versioning scheme with the intent of alleviating some of the problems with the current
0.0.x
versioning scheme. Following is a chunk of an internal RFC proposing the change. We're excited to get your feedback!Introduction
There are a few problems with our current versioning scheme:
We have the following goals for adding a minor version number:
The proposed versioning scheme can be summarized as follows:
In the following sections, we'll cover concrete cases of when version numbers will change, introduce a preview mode, and discuss stabilization of rules and fixes.
Version changes
Minor version increases will occur when:
1.0.0
, however it should generally be avoided.Patch version increases will occur when:
Note that these lists are not going to be the same once we add a major version number. For example, we are currently including the addition of features in the patch version to avoid signaling breaking changes but we will likely follow semantic versioning and use the minor version for such changes in the future.
Preview mode
A
--preview
flag will be available to enable new, unstable rules and features e.g. support for a new file type.The preview mode is intended to help us collect community feedback and gain confidence that changes are a net-benefit.
The preview mode is not intended to gate access to work that is incomplete or features that we are likely to remove. Preview mode should not add or remove CLI options.
Despite the intent of preview mode, we reserve the right to make changes to any behavior gated by the mode including the removal of preview features or rules.
Rule stabilization
When modifying or adding rules, we will use the following guidelines:
0.6.1
then a rule will not be eligible for stability until0.8.0
Fix stabilization
Fixes have three applicability levels:
Fixes for rules may be introduced at a lower applicability then promoted to a higher applicability. The applicability of a fix may also change when the preview mode is enabled.
Conclusion
Users will be able to upgrade between patch releases without inheriting behavior changes. At the same time, rules will be phased in via preview mode to allow for stabilization of new features over the course of a few releases.
While consensus on this document is a prerequisite for
v0.1.0
, there are other things we'll need to do once that is achieved. For example, we'll need to implement tooling to support preview mode and update the CLI to respect fix applicability.Beta Was this translation helpful? Give feedback.
All reactions