-
Notifications
You must be signed in to change notification settings - Fork 27.5k
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
Add more safeties against breaking the ecosystem with federated plugin PRs #89518
Comments
Actually, now that I think about this more I don't understand how it passed CI in the form it was landed. |
Oh, right. A subclass override can add optional named parameters in Dart, so the web change in isolation is actually a valid change against the original code. |
So far I see two ways we could have caught this:
Given the added safety I'm strongly inclined toward #2. To see how much of an impact that's likely to have, I checked the repo history for landed PRs that would trip that check. There have been 26 (using the
Since almost all the negatives (-) would can be screened out by additional checks, and the neutrals (/) don't seem like they would have been particularly annoying to adjust the PRs for, my plan is to do 2 with the added checks—with a very clear error message describing options—and we'll see how problematic it is in practice. If we find that we're often having to jump through hoops to work around it, we can revisit. My impression from the audit is that it will give us significant added safety without much cost in annoyance. |
Creates a new command to validate that PRs don't change platform interface packages and implementations at the same time, to try to prevent ecosystem-breaking changes. See flutter/flutter#89518 for context. Per the explanation in the issue, this has carve-outs for: - Changes to platform interfaces that aren't published (allowing for past uses cases such as making a substantive change to an implementation, and making minor adjustments to comments in the PI package based on those changes). - Things that look like bulk changes (e.g., a mass change to account for a new lint rule) Fixes flutter/flutter#89518
Creates a new command to validate that PRs don't change platform interface packages and implementations at the same time, to try to prevent ecosystem-breaking changes. See flutter/flutter#89518 for context. Per the explanation in the issue, this has carve-outs for: - Changes to platform interfaces that aren't published (allowing for past uses cases such as making a substantive change to an implementation, and making minor adjustments to comments in the PI package based on those changes). - Things that look like bulk changes (e.g., a mass change to account for a new lint rule) Fixes flutter/flutter#89518
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 |
Creates a new command to validate that PRs don't change platform interface packages and implementations at the same time, to try to prevent ecosystem-breaking changes. See flutter/flutter#89518 for context. Per the explanation in the issue, this has carve-outs for: - Changes to platform interfaces that aren't published (allowing for past uses cases such as making a substantive change to an implementation, and making minor adjustments to comments in the PI package based on those changes). - Things that look like bulk changes (e.g., a mass change to account for a new lint rule) Fixes flutter/flutter#89518
Creates a new command to validate that PRs don't change platform interface packages and implementations at the same time, to try to prevent ecosystem-breaking changes. See flutter/flutter#89518 for context. Per the explanation in the issue, this has carve-outs for: - Changes to platform interfaces that aren't published (allowing for past uses cases such as making a substantive change to an implementation, and making minor adjustments to comments in the PI package based on those changes). - Things that look like bulk changes (e.g., a mass change to account for a new lint rule) Fixes flutter/flutter#89518
Creates a new command to validate that PRs don't change platform interface packages and implementations at the same time, to try to prevent ecosystem-breaking changes. See flutter/flutter#89518 for context. Per the explanation in the issue, this has carve-outs for: - Changes to platform interfaces that aren't published (allowing for past uses cases such as making a substantive change to an implementation, and making minor adjustments to comments in the PI package based on those changes). - Things that look like bulk changes (e.g., a mass change to account for a new lint rule) Fixes flutter/flutter#89518
flutter/plugins#4288 was an ecosystem-breaking PR that passed both presubmit and postsubmit (and was thus auto-published), demonstrating that we need a stronger safety system.
In particular, it looks like the CI did correctly detect that the isolated change to the interface package was wrong (a breaking change, but not marked as such)—I assume via the
build_all_plugins
test, but can't tell because of force-pushing that happened in the PR—but then that safety was disabled by the addition of unpublished source changes to a different package in the same PR. That should absolutely not have happened, and ideally should have been caught in review, but it was missed and the PR was approved with that change.We should have something that's not subject to human error that would prevent that. The tricky part is going to be figuring out how to do it in a way that doesn't have false positives that prevent reasonable multi-package changes (e.g., something that is fixing a new analyzer warning that involves changing both interface and implementation packages). Worst case we could force the false positives to just require separate PRs, but I'd rather not do that if possible.
The text was updated successfully, but these errors were encountered: