You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+4-19Lines changed: 4 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -161,9 +161,9 @@ Small pull requests for things like typos, bugfixes, etc are always welcome.
161
161
162
162
Please note that we will not accept pull requests for style changes.
163
163
164
-
## API compatibility
164
+
## API evolution
165
165
166
-
Apollo Kotlin observes [semantic versioning](https://semver.org/). No breaking change should be introduced in minor or patch releases.
166
+
Apollo Kotlin observes [semantic versioning](https://semver.org/). No breaking change should be introduced in minor or patch releases. See our [evolution policy](https://www.apollographql.com/docs/kotlin/v4/essentials/evolution) for more details.
167
167
168
168
The public API is tracked thanks to the [Binary compatibility validator](https://github.com/Kotlin/binary-compatibility-validator) plugin.
169
169
@@ -186,26 +186,11 @@ stateDiagram-v2
186
186
Deprecated(WARNING) --> Removed: Major release
187
187
```
188
188
189
-
However, there are cases where an API must be removed even if it hasn't been deprecated. For instance when a high level behavior is changed and the related API is made irrelevant.
190
-
In this case don't remove the API yet, instead, deprecate with the `ERROR` level. This will make the build fail if the API is used, but the message can guide the developer with an explanation or recommended steps. This should only happen in a major release (source breaking change).
191
-
192
-
The API can then be removed in the next major release (breaking change).
193
-
194
-
```mermaid
195
-
stateDiagram-v2
196
-
direction LR
197
-
NotDeprecated: Not deprecated
198
-
NotDeprecated --> Deprecated(ERROR): Major release
199
-
Deprecated(ERROR) --> Removed: Major release
200
-
```
201
-
202
189
## Experimental / internal APIs
203
190
204
191
Using Kotlin's (or other dependencies') experimental or internal APIs, such as the ones marked
205
-
with `@ExperimentalCoroutinesApi` should be avoided as much as possible (exceptions can be made for native/JS targets
206
-
only when no other option is
207
-
available). Indeed, applications using a certain version of Apollo Kotlin could use a more up-to-date version of these
208
-
APIs than the one used when building the library, causing crashes or other issues.
192
+
with `@ExperimentalCoroutinesApi` should be avoided as much as possible.
193
+
We have historically made exceptions to that rule for JS/native (`UnsafeNumber`) but no new opt-in to experimental APIs must be made.
209
194
210
195
We also have the `@ApolloExperimental` annotation which can be used to mark APIs as experimental, for instance when
211
196
feedback is wanted from the community on new APIs. This can also be used as a warning that APIs are using experimental
0 commit comments