Several new people coming to the Eclipse MicroProfile project have been asking the same question:
“Why there are micro/patch releases for the individual MicroProfile specifications when the parent umbrella specification always references only the minor versions?“
This is not so strange to the contributors already involved in the MicroProfile project but we can see why this question may arise for newcomers. The short answer is: minor releases are only the bug fixing releases containing only TCK fixes and/or Eclipse IP review adjustments. There are no API changes in the minor releases of MP specifications.
Just for completeness, for the versions referenced in this blog we assume versioning scheme, Major.Minor.Micro(patch). For instance, 2.0.1 means Major == 2, Minor == 0, Micro == 1.
To demonstrate why this question arises, let’s take a look at the concrete examples with MP JWT 1.1 and MP Health 2.0.
MicroProfile JWT 1.1.1 vs MicroProfile JWT 1.1
If you check the MP JWT release page you can see that the latest release as of the time of this writing is MP JWT 1.1.1. However, the latest umbrella specification project references MP JWT 1.1. So it is natural to question why the parent specification does not pull the latest release. The answer is, in this case, documented in the MP JWT release page in the MP JWT 1.1.1 release:
“This is a patch release that provides fixes to the TCK tests that were seen to have issues in different implementations.”
“This release has no API changes.”
This means that there is no issue from the user point of view to pull release 1.1 in the umbrella specification since it does not contain any changes that could affect MicroProfile users. On the other hand, MicroProfile vendors which are typically actively participating in the specification make use of this micro release to adjust the problems with the TCK runs in their individual implementations.
MicroProfile Health 2.0.1 vs MicroProfile Health 2.0
With MP Health we have run into a similar yet different issue when we needed to rollback one newly added TCK test because it brought a new dependency that did not pass the Eclipse IP process for MP 3.0 which is also documented on the release page. There were thus also POM changes but they did not affect the produced API binary which is why umbrella specification still references the MP Health 2.0.
Which release to use?
For most of the users, the minor releases should be the right choice when developing MicroProfile applications. However, if you are in the need of running TCKs you should instead be pulling the latest micro releases.
Hopefully, this blog post will be useful to all newcomers to the MicroProfile project. If there are any questions, don’t hesitate to ask in the MicroProfile google group, in the issue trackers of individual specifications, and as always find other relevant materials at microprofile.io.