Merge pull request #466 from koic/add_versioning_policy
Add VERSIONING.md documenting the versioning and breaking-change policy
This commit is contained in:
commit
4147b9b980
1 changed files with 56 additions and 0 deletions
56
VERSIONING.md
Normal file
56
VERSIONING.md
Normal file
|
|
@ -0,0 +1,56 @@
|
||||||
|
# Versioning Policy
|
||||||
|
|
||||||
|
The MCP Ruby SDK follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html).
|
||||||
|
This document describes what each version component means for users of the `mcp` gem,
|
||||||
|
what counts as a breaking change, and how breaking changes are communicated.
|
||||||
|
|
||||||
|
## Version Scheme
|
||||||
|
|
||||||
|
Given a version number `MAJOR.MINOR.PATCH`:
|
||||||
|
|
||||||
|
- **MAJOR** is incremented for incompatible changes to the public API.
|
||||||
|
- **MINOR** is incremented for backwards-compatible new functionality.
|
||||||
|
- **PATCH** is incremented for backwards-compatible bug fixes.
|
||||||
|
|
||||||
|
### Current 0.x Phase
|
||||||
|
|
||||||
|
While the SDK is at version 0.x, the public API is not yet considered stable.
|
||||||
|
Following SemVer conventions for initial development, minor releases (0.x -> 0.y) may contain breaking changes.
|
||||||
|
All breaking changes are recorded in [CHANGELOG.md](CHANGELOG.md).
|
||||||
|
|
||||||
|
### After 1.0.0
|
||||||
|
|
||||||
|
Once 1.0.0 is released, breaking changes will only ship in major releases, with the exceptions described below.
|
||||||
|
|
||||||
|
## What Counts as a Breaking Change
|
||||||
|
|
||||||
|
A breaking change is any change that requires users to modify their code when upgrading, including:
|
||||||
|
|
||||||
|
- Removing or renaming a public class, module, method, or constant
|
||||||
|
- Changing a public method's signature in a way that rejects previously valid arguments
|
||||||
|
- Changing documented behavior that users can reasonably depend on
|
||||||
|
|
||||||
|
New functionality that is purely additive (new classes, new methods, new optional keyword arguments)
|
||||||
|
is not a breaking change.
|
||||||
|
|
||||||
|
## Exceptions: Spec Compliance, Security, and Clear Defects
|
||||||
|
|
||||||
|
Minor releases avoid incompatible changes as much as possible. However, the SDK's primary contract is
|
||||||
|
conformance to the [MCP specification](https://modelcontextprotocol.io/specification/).
|
||||||
|
Behavior that deviates from the specification is treated as a bug, even when users may have come to rely on it.
|
||||||
|
Therefore, incompatible changes may be shipped in a minor release when they are required to:
|
||||||
|
|
||||||
|
- Fix incorrect conformance to the MCP specification
|
||||||
|
- Address a security vulnerability
|
||||||
|
- Fix a clear defect, such as behavior that contradicts the documentation, a crash,
|
||||||
|
or data corruption, where compatibility would mean preserving the defect
|
||||||
|
|
||||||
|
When such a change ships, the release notes and CHANGELOG entry explicitly call out the incompatibility
|
||||||
|
and describe how to migrate.
|
||||||
|
|
||||||
|
## How Breaking Changes Are Communicated
|
||||||
|
|
||||||
|
- [CHANGELOG.md](CHANGELOG.md) records every release in [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format;
|
||||||
|
breaking changes appear under the "Changed" or "Removed" headings
|
||||||
|
- [GitHub Releases](https://github.com/modelcontextprotocol/ruby-sdk/releases) mirror the changelog for each release
|
||||||
|
- Where practical, deprecation warnings are added at least one minor release before removal
|
||||||
Loading…
Reference in a new issue