Skip to content

Commit e8cc953

Browse files
committed
Document versioning and stability of programming interfaces
1 parent e5d48ba commit e8cc953

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

src/docs/asciidoc/index.adoc

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,37 @@ repositories {
8585
}
8686
----
8787

88+
== Versioning
89+
90+
The RabbitMQ AMQP 1.0 Java Client is in development and stabilization phase.
91+
When the stabilization phase ends, a 1.0.0 version will be cut, and
92+
https://semver.org/[semantic versioning] is likely to be enforced.
93+
94+
Before reaching the stable phase, the client will use a versioning scheme of `[0.MINOR.PATCH]` where:
95+
96+
* `0` indicates the project is still in a stabilization phase.
97+
* `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.
98+
* `PATCH` is a 0-based number incrementing with each service release, that is bux fixes.
99+
100+
Breaking changes between releases can happen but will be kept to a minimum.
101+
The next section provides more details about the evolution of programming interfaces.
102+
103+
[[stability-of-programming-interfaces]]
104+
== Stability of Programming Interfaces
105+
106+
The RabbitMQ AMQP 1.0 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.
107+
108+
The client contains 2 sets of programming interfaces whose stability are of interest for application developers:
109+
110+
* Application Programming Interfaces (API): those are the ones used to write application logic.
111+
They include the interfaces and classes in the `com.rabbitmq.client.amqp` package (e.g. `Connection`, `Publisher`, `Consumer`, `Message`).
112+
These API constitute the main programming model of the client and will be kept as stable as possible.
113+
* Service Provider Interfaces (SPI): those are interfaces to implement mainly technical behavior in the client.
114+
They are not meant to be used to implement application logic.
115+
Application developers may have to refer to them in the configuration phase and if they want to customize some internal behavior of the client.
116+
SPI packages and interfaces are marked as such in their Javadoc.
117+
_These SPI are susceptible to change, but this should have no impact on most applications_, as the changes are likely to be limited to the client internals.
118+
88119
include::usage.adoc[]
89120

90121
include::appendixes.adoc[]

0 commit comments

Comments
 (0)