Skip to content

Commit ca9884f

Browse files
committed
Document versioning and stability
1 parent d00b0fb commit ca9884f

File tree

2 files changed

+43
-6
lines changed

2 files changed

+43
-6
lines changed

README.adoc

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,14 @@ to find out more.
1717

1818
== Project Maturity
1919

20-
The project is in early stages of development and is considered experimental.
21-
It is not ready for production use. Features and API are subject to change.
20+
The project is in development and stabilization phase.
21+
Features and API are subject to change, but https://rabbitmq.github.io/rabbitmq-stream-java-client/snapshot/htmlsingle/#stability-of-programming-interfaces[breaking changes] will be kept to a minimum.
2222

2323
== Support
2424

2525
* For questions: https://groups.google.com/forum/#!forum/rabbitmq-users[RabbitMQ Users]
2626
* For bugs and feature requests: https://github.com/rabbitmq/rabbitmq-stream-java-client/issues[GitHub Issues]
2727

28-
The project is currently under development, there is no guarantee yet that it will be maintained and supported
29-
in the future (read: you are welcome to experiment with it and give feedback, but please do not base
30-
your whole business on it).
31-
3228
== How to Use
3329

3430
=== Pre-requisites
@@ -40,6 +36,20 @@ The library requires Java 8 or more.
4036
* https://rabbitmq.github.io/rabbitmq-stream-java-client/snapshot/htmlsingle/[Reference documentation]
4137
* https://rabbitmq.github.io/rabbitmq-stream-java-client/snapshot/api/com/rabbitmq/stream/package-summary.html[API documentation]
4238

39+
== Versioning
40+
41+
The RabbitMQ Stream Java Client is in development and stabilization phase.
42+
When the stabilization phase ends, a 1.0.0 version will be cut, and
43+
https://semver.org/[semantic versioning] is likely to be enforced.
44+
45+
Before reaching the stable phase, the client will use a versioning scheme of `[0.MINOR.PATCH]` where:
46+
47+
* `0` indicates the project is still in a stabilization phase.
48+
* `MINOR` is a 0-based number incrementing with each new release cycle. It generally reflects significant changes like new features and potentially some programming interfaces changes.
49+
* `PATCH` is a 0-based number incrementing with each service release, that is bux fixes.
50+
51+
Breaking changes between releases can happen but will be kept to a minimum.
52+
4353
== Build Instructions
4454

4555
You need JDK 1.8 or more installed.

src/docs/asciidoc/overview.adoc

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,30 @@ connections depending on the number of publishers and consumers.
7474
* _let the client handle network failure_ thanks to automatic connection
7575
recovery and automatic re-subscription for consumers.
7676

77+
== Versioning
78+
79+
The RabbitMQ Stream Java Client is in development and stabilization phase.
80+
When the stabilization phase ends, a 1.0.0 version will be cut, and
81+
https://semver.org/[semantic versioning] is likely to be enforced.
82+
83+
Before reaching the stable phase, the client will use a versioning scheme of `[0.MINOR.PATCH]` where:
84+
85+
* `0` indicates the project is still in a stabilization phase.
86+
* `MINOR` is a 0-based number incrementing with each new release cycle. It generally reflects significant changes like new features and potentially some programming interfaces changes.
87+
* `PATCH` is a 0-based number incrementing with each service release, that is bux fixes.
88+
89+
Breaking changes between releases can happen but will be kept to a minimum.
90+
The next section provides more details about the evolution of programming interfaces.
91+
92+
[[stability-of-programming-interfaces]]
93+
== Stability of Programming Interfaces
94+
95+
The RabbitMQ Stream Java Client is in active development but its programming interfaces will remain as stable as possible. There is no guarantee though that they will remain completely stable, at least until it reaches version 1.0.0.
96+
97+
The client contains 2 sets of programming interfaces whose stability are of interest for application developers:
98+
99+
* Application Programming Interfaces (API): those are the ones used to write application logic. They include the interfaces and classes in the `com.rabbitmq.stream` package (e.g. `Producer`, `Consumer`, `Message`). These API constitute the main programming model of the client and will be kept as stable as possible.
100+
* Service Provider Interfaces (SPI): those are interfaces to implement mainly technical behavior in the client. They are not meant to be used to implement application logic. Application developers may have to refer to them in the configuration phase and if they want to custom some internal behavior in the client. SPI include interfaces and classes in the `com.rabbitmq.stream.codec`, `com.rabbitmq.stream.compression`, `com.rabbitmq.stream.metrics` packages, among others. _These SPI are susceptible to change, but this should not impact the majority of applications_, as the changes would typically stay intern to the client.
101+
102+
103+

0 commit comments

Comments
 (0)