-
Notifications
You must be signed in to change notification settings - Fork 28.5k
Definition of breaking changes should be improved. #133025
New issue
Have a question about 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
Every single change has the potential to break some existing code somewhere (including in private repositories). How do you propose determining whether any code exists anywhere that is broken by any given change? |
@stuartmorgan For example, if an existing API is changed or removed, the change will surely break some of existing codes. Looking at another community, how Go treats and announces breaking changes are better: Backward Compatibility, Go 1.21, and Go 2 I strongly believe any changes which apparently BREAK existing code shall be listed in the list of BREAKing changes. |
What you are describing is essentially the previous policy. The current policy exists because that policy was impairing the ability of Flutter to evolve, and this policy was deliberately chosen to change the balance of development speed vs breakage. This policy is being regularly evaluated against the Flutter community surveys that are run periodically, which has questions specifically tailored to this topic and the inherent tradeoffs we are aware it involves. The way it would change would be a shift in the aggregate responses to those questions, rather than individual anecdotes about specific breakage. Given that, I'm going to close this; it doesn't cover anything that isn't already being considered regularly, and there's nothing actionable to track with an issue at the current time. |
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of |
Is there an existing issue for this?
Use case
Currently, when changes are considered breaking changes are defined in the Wiki (emphasis mine):
According to this definition, there can be changes that break existing code but are not listed in the Breaking changes section of the release note.
And, actually there are.
Example
After upgrading to Flutter 3.13 yesterday, my production code had completely broken.
I had very hard time debugging the issue and finally found the cause was the breaking PR #128082, which changes the behavior of
ExpansionPanelList
, after taking a few hours to follow this path:Notice the code has been broken.
Visit the Breaking changes section of the release note to find there are no related announcement.
Visit the official doc of
ExpansionPanelList
to identify its source code is located atflutter/packages/flutter/lib/src/material/expansion_panel.dart
.git clone
this repository.git log -p expansion_panel.dart
to show the logs of all of the commits which change the implementation ofExpansionListPanel
.Reading the logs, I found the related PR above.
Proposal
The current definition of breaking changes are extremely counter-intuitive.
A change which easily breaks existing codes (like in the example above) aren't necessarily considered breaking changes, and thus are not listed in the list of breaking changes in the release note.
There are two proposals:
Please change the definition of breaking changes in a more intuitive way. Considering every change which breaks existing codes a breaking change is one good idea, I think.
Plus, optionally, every breaking change can be explicitly noted in the official documentation. For example, in the case of
ExpansionPanelList
above, there can be a statement like this:Side Note
There is a related issue: Please notify us all breaking changes when releasing new stable. #37771. This is locked as resolved but it is NOT resolved at all.
The text was updated successfully, but these errors were encountered: