Skip to content

Commit b0e5e08

Browse files
authored
[📚docs] Update evolution policy (#6060)
* Update evolution policy * clarify
1 parent c1f55c0 commit b0e5e08

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

docs/source/essentials/evolution.mdx

+12-3
Original file line numberDiff line numberDiff line change
@@ -28,26 +28,35 @@ The Apollo Kotlin projects follow [semantic versioning](https://semver.org/):
2828
* `4.0.0-rc.x` versions are release candidates
2929
* The API is frozen and if no issue is found, a stable version is made from it.
3030
* `4.x.y` versions are stable releases
31-
* Stable releases are supported for 2 years for bug fixes and security patches.
31+
* Stable versions get bug fixes and new features.
32+
* No binary breaking change until the next major version.
33+
* After a new major version is released, a release branch is made to support the older major version with bug fixes and security patches.
3234

3335
We interpret minor version bumps liberally. They are used to hint at new functionality or substantial changes, but we are not strict about it. A small new API may be introduced in a patch release. Conversely, a big internal rework might be signaled with a minor release.
3436

3537
Reporting issues is welcome on any version.
3638

3739
## Breaking changes
3840

41+
<Note>
42+
43+
See [compatibility types](https://kotlinlang.org/docs/api-guidelines-backward-compatibility.html#compatibility-types) in the Kotlin documentation for more details about the different breaking changes.
44+
</Note>
45+
3946
### Binary breaking changes
4047

4148
Binary breaking changes only happen for major versions.
4249

4350
### Source breaking changes
4451

45-
Source breaking changes may happen for any version. This is because [true 100% source compatibility is often unreachable](https://wiki.eclipse.org/Evolving_Java-based_APIs_3#A_Word_about_Source_Code_Incompatibilities). Also, source breaking changes are easier to mitigate because they can be fixed by the consumer directly. Already compiled transitive libraries are not impacted by source breaking changes.
52+
We avoid source breaking changes as much as possible in non-major versions. In particular, parameter name changes and deprecations with `Error` level only happen for major versions.
4653

47-
That being said, we'll do our best to avoid them as much as possible. In particular, parameter name changes and deprecations with `Error` level only happen for major versions.
54+
That being said, [true 100% source compatibility is often unreachable](https://wiki.eclipse.org/Evolving_Java-based_APIs_3#A_Word_about_Source_Code_Incompatibilities) and an occasional source breaking change might slip in a non-major version.
4855

4956
We’re trying to update to newer Kotlin versions after a few weeks. This is typically a compatible change for JVM-consumers on Kotlin version n-1 because Kotlin JVM [has best effort n+1 forward compatibility](https://kotlinlang.org/docs/kotlin-evolution.html#evolving-the-binary-format). This can be a source breaking for non-JVM consumers. In those cases, you'll need to update your build in those few weeks or keep using older versions of Apollo Kotlin.
5057

58+
Already compiled transitive libraries are not impacted by source breaking changes.
59+
5160
### Behavior changes
5261

5362
Bugfixes happen in any version (patch, minor, major).

0 commit comments

Comments
 (0)