-
Notifications
You must be signed in to change notification settings - Fork 972
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
[RFC] Clarifying Semantic Versioning for OpenSearch Dashboards #9491
Comments
Makes sense: Is there a designated location we are planning where the public contract is documented and maintained? I see the SEMVER.md is an examples. What is the process for determining if a change affects the public contract? And can plugins proposed something is a public contract or will it be only maintainers that determine the public contract. Will there be a regular review on the public contract? For breaking changes as a maintainer, do we have a process? Should we get agreement among stakeholders or just maintainers that this breaking change makes sense? We should also label the PR with the breaking change label so it's easier to find these PRs at the time of major version release. Should we have policies on deprecation and timelines? Since we have a lot of long running deprecated stuff. |
i like the idea to remove treating npm/internal change as breaking About doc: regarding doc, we already using openapi to doc doc, we should continue to use it for all existing public api and new api About dependencies/interface about versioning Rules, while the rfc is aim to discuss Semantic Versioning for OSD, from content it is mainly focus on developer's view, while we should be open to bump up version for new feature and change that don't introduce any break change. |
@kavilla Yes we will have a single place where this is documented. I think as @seraphjiang mentioned, the openapi doc has already been started, we will need to add to that. We can also just specify for now in a api.md file what the API's are and link to the openAPI docs where it makes sense.
This will be defined in the semver.md file which requires approvals from maintainers before its changed
Thats not something i want to cover here. This is just to clarify the semantic versioning definition for OSD. The process to enforce it can come later. Lets make sure we agree on the definition first.
I have a section on that inthe RFC
Good callout. I can add that
I agree on following OpenSearches definitions. Opensearch also follows senver2.0. I just restated them given that we are discussing semver here. I can remove it too. As for the roadmap. I dont want to mix the conversations. I agree with the other proposal to allow different versions but that can happen independent of this change.
What version do you want us to be open about bumping up? That wasnt clear to me |
Is it intentional that this definition doesn't cover UI itself?
Is it always clear what is being consumed? Should default assumption be that it is consumed?
How are plugins bound by OSD's npm dependencies? In what situation will OSD fail to build when dependencies are mismatched. There's a tension that Plugins may depend on a npm package version for particular logic, but are at the same time bound to the same version that OSD uses. If OSD updates the package, it potentially could be problematic for the plugin, and while the plugin probably shouldn't have depended on that functionality, they also didn't really have a choice in the versioning. I think we should at least call this out as a risk for plugins, and would be good to understand how we can further mitigate (not clear on what packages this would be an issue for).
Extension points are code, right? They don't need to be called out from a UI perspective, right? Documented user experiences is quite broad. What does "documented" mean and what "changes to these behaviors" are considered breaking. Are we saying the functionality that is documented is breaking, but the UX can change? Is some amount of UX consistency expected? Agree that getting more specific per seraphjiang will help.
Saw you said we'd define later, but would be good to have a way to ensure correct calibration. |
Summary
This RFC proposes a refined Semantic Versioning (SemVer) policy for OpenSearch Dashboards. It explicitly separates internal npm dependencies from the semver public contract, reduces the likelihood that internal changes will cause breaking version bumps, and provides examples illustrating when a dependency update affects the public API (and thus semver) versus when it does not.
Background
OpenSearch Dashboards currently treats many aspects of its platform—including npm dependencies, server APIs, and the UI—as part of its semver contract. In particular:
This broad interpretation of what counts as a semver-breaking change has made it difficult to address security fixes and internal improvements without triggering a major version increment.
Motivation
Proposal
1. Defining the Public Contract
Principle: A “public contract” is any interface or behavior that is:
Covered in official documentation or API references explicitly intended for external consumption (e.g., plugin APIs, server endpoints).
Declared stable and supported across releases unless a deliberate version bump is communicated.
Relied upon by third-party developers or users, such that any change would require them to alter their code or workflows.
Modifications would force external consumers to update their implementations or significantly change their usage patterns.
Public Contract Checklist
Ask these questions when determining if a change affects the public contract:
If all answers above are “yes,” changes to that interface are semver-breaking. Otherwise, the change can be classified as internal.
2. Excluding npm Dependencies from Semantic Versioning
Because of the coupled architecture, npm dependencies are often shared between OpenSearch Dashboards and its plugins, causing updates to affect plugin builds. This policy explicitly excludes npm dependency changes from semver unless they alter a documented, stable public interface.
Example: Upgrading from [email protected] to [email protected] to address a security fix. The plugin API or behavior doesn’t change, so this is not a breaking change.
Example: Migrating from lodash@4 to lodash@5 means that we cannot support a data plugin API that directly exposes a lodash API that changes with the version upgrade
Objective: Decouple the semver contract from routine npm dependency updates, so only true API/behavioral changes trigger a major version bump.
3. Versioning Rules
OpenSearch Dashboards adopts Semantic Versioning 2.0.0 with the following structure:
4. UI Versioning Considerations
While UI changes can sometimes be disruptive, the RFC distinguishes:
5. Deprecation Policy
To provide clarity on when features or interfaces will be removed:
6. Implementation Plan
Once this RFC is closed we can add a
SEMVER.md
file in the repository to outline these rules, including the examples of internal vs. public changes.Feedback required
The feedback that this RFC is looking for is
The text was updated successfully, but these errors were encountered: