-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
OpenSearch's Unreliable Dependency - A Call for Enhanced API Compatibility #8982
Comments
|
Recent change that impacted all plugins: |
@nknize I know you are at work with refactoring components in core [1], the breaking changes being pushed out to plugin teams are painful. Is there a quantification of how far along that work is / for how much time plugin teams will have broken builds due to these changes? |
Adds a gradle task and github action to check for breaking changes made to the APIs in server by running comparison against most resent snapshot build on sonotype maven repository. Uses japicmp to perform the comparison against the jar files, learn more https://siom79.github.io/japicmp/ - Related opensearch-project#8982 Signed-off-by: Peter Nied <petern@amazon.com>
Hey @peternied. I missed this message before posting my comment on the PR to detect compatibility impact.
I'd like to target Phase 0 of #8110 to be complete no later than 2.11. Of course that could slip, however, depending on the downstream surface area impacted once In the meantime any mechanisms we can create to surface downstream impact early will help us assist downstreams in quickly opening PRs to change namespaces. Perhaps someone could put together a slackbot to post to a #build channel? |
@nknize Its good to hear we have a near-term target for those changes. Building off of this - do we know if there is a list of planned breaking changes we need before we think we can target a semver safe API? |
@nknize Do you know who would be able to help assemble that list of breaking changes that should be expected? |
Capturing this proposal on how we could change the consumption model within OpenSearch Project
From #9367 (comment) |
Follow up comment:
|
@peternied I think there are two major shortcomings with this proposal, all while it does solve the problem for plugins to depend on a more stable core. It actually resembles the ODFE state where plugins depended on a previously released version of core, except that every plugin will be able to depend on some random snapshot build. That did not work well.
Maybe the problem is the breaking changes? Instead of making those with downstream impact that we're feeling, I would have first extracted a public API/SDK, declared that as a public API, and then migrated all plugins to that (similar to what we proposed with extensions, but in core). |
Thanks @dblock and @nknize for your thought
That is a significant reason not to engage in this proposal. It would be different if changes were waiting out in 3.0.0 for a significant period, but instead they are moving into the 2.X line as fast as a day later.
If there were no breaking changes at java's public API level - this wouldn't be an issue.
This sounds like it would be very useful to signal to plugins what contracts are safe, and which are going to be in flux. Would it be worthwhile to invest in, do we know a number of how many expect breaking changes are left around the refactor - that would help weight investment for myself if it made this difference between avoiding a number of breaking changes. |
RE: CompatibilityCheck: |
This issue aims to shed light on a frustrating experience that is negatively impacting contributors, including myself. The intention is not to shame or punish but rather to address the problem constructively and foster a conversation for a potential solution.
Describe the bug
OpenSearch's main does not have any requirements for public API compatibility. This often causes changes on snapshot builds that break compilation of plugins or integration tests of plugins to fail. This issues are difficult to debug and consumer considerable time on its plugins.
Breaking changes are backported in previous major version numbers, these layers make it hard to know where new issues are coming from.
To Reproduce
Maintain a plugin that depends on OpenSearch.
Expected behavior
There are several options:
Keep the Status Quo:
Strictly Follow SemVer:
Increase Verification of Pull Requests:
Additional context
The text was updated successfully, but these errors were encountered: