Hi Developer Community ,
We recognize there is a lack of clarity around some of the changes that will be shipped as part of future Atlassian Data Center products. In this post, we want to go into more detail on some of the changes that are shipped as part of Platform 7 and let you know what our next steps are to address the concerns brought up across several communication channels.
The Platform acts as a baseline of common libraries and plugins that are used across all products. Products like Jira and Confluence typically expose parts of this Platform as Java API. Since products need to integrate new versions of the Platform and then, deploy a new version, you may find that there are different versions of the Platform across products at any given time.
However, it is possible to get direct access to what is available in the Platform. In reality, the Platform is nothing more than a set of dependencies managed through Maven POM files in Platform Dependencies. For app developers, the most relevant are:
- platform-public-api dependencies exported through OSGi and publicly available to all apps.
- platform-deprecated-public-api dependencies that we will remove in the next major version of the Platform. Typically, a new major product version ships with a new major version of the Platform, and at least for the upcoming major versions of Data Center products, it is expected they will ship with Platform 7.
We regularly release Platform 7 milestones. These are primarily aimed at Atlassian Data Center products to aid in the early adoption of the changes. We recognize that for you â Marketplace partners and app developers â these early versions may also help in identifying the impact the changes will have on your own apps. While not a replacement for the documentation on all changes â we are working on it and it will get in your hands as soon as possible â comparing the POMs directly may give you an early indication of the changes weâve made.
Our current focus is to finish the implementation phase, and towards the end of February, you should find the public API of the Platform to reach a stable state. Because the work on the Platform 7 release is still in progress, we are still expecting some minor changes. However, the current state of the public API is indicative of the final state, and we do not expect these changes to have a major impact on your migration. But if you want to play it safe: we expect to release the stable version of Platform 7 by early Q2 2024.
Platform 7 only covers the common aspects of each Atlassian Data Center product, and each product may individually make further changes to its own APIs or feature set. Covering all of those in this post would be too much, but as a rule of thumb, the next platform versions of each product will contain the changes as discussed in this post. Refer to the posts below for more product-specific information:
- Confluence 9.0
- Jira 10.0
- Bitbucket 9.0
- Bamboo 10.0
- Crowd 6.0
Platform 7 high-level changes
API changes
We have reduced the number of third-party libraries and improved the overall definition of our Java API. We have previously released a minor version of the Platform â version 6.5, containing the majority of deprecations and API changes. We plan for this to be the last minor release before Platform 7.0. Platform 6.5 allows for a transitional period for app developers. We expect new feature versions of Atlassian Data Center products containing these changes to be released â either in full or as an EAP â through the coming weeks. However, timelines vary for the different products.
With the exception of some modules (like Atlassian Plugins or Crowd), we have completed the work of removing the deprecated API. The next step we are working on right now is to integrate all of the different work streams together into the final set of Platform dependencies. As we adopt these changes, we regularly release milestones of the Platform Dependencies (at no particular cadence). These milestones are numbered using the 7.0.0-m##
versions and are available through the Maven repository in case you want to inspect the changes early. Alternatively, the deprecations shipped with Platform 6.5 cover the majority of announced changes.
Atlassian REST v2
Due to how tightly coupled the implementation of Atlassian REST was with JAX-RS 1 and Jersey 1, the changes to the Java API of Atlassian REST are some of the most significant. The new API is based on JAX-RS 2 but continues to work much as you would expect. We have taken the opportunity to more clearly define the public API, so some types have disappeared from the OSGi context, but the API should provide alternatives for all use cases.
Removed libraries
As outlined in this post, we are reducing the number of external libraries that are exported from the Platform by default. The different Atlassian Data Center products will largely align with these removals. These removals have been made possible by the changes made to our API. At this moment, we believe this list is final and complete.
If your app relies on any of these modules, you will need to start adding these dependencies to your app directly and bundle them with your app. We are actively investigating whether we need to raise upload Marketplace limits to accommodate this.
Java 17
From Platform 7 onwards, we will start compiling against Java 17. This means we will no longer support Java 8 and 11. Moving forward, all the latest releases of our Data Center products will be compatible with Java 17 runtime (insofar as they are not yet).
We realize that the requirement to upgrade to Java 17 has raised concerns. We are analyzing the possibilities to reduce the effort on your side and help you with the migration.
Test the changes
While we are working on the detailed migration guides, there are several ways to experiment with the changes already. These methods were never designed to be official but in light of the scale of the upcoming Platform release, we are sharing them regardless.
Platform BOM
The POM files linked above (platform-public-api and platform-deprecated-public-api) can be used as a âMaven BOMâ. You can add the following snippet to your POM configuration:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.atlassian.platform.dependencies</groupId>
<artifactId>platform-public-api</artifactId>
<version>${platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.atlassian.platform.dependencies</groupId>
<artifactId>platform-deprecated-public-api</artifactId>
<version>${platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependencies>
<dependencyManagement>
This configuration will automatically update the versions of Atlassian components and third-party libraries provided through OSGi (assuming your configuration doesnât set it explicitly).
Please note that together with API changes, in some cases you may have to change the Maven module you depend on. We will provide more details in the migration guides when they are ready.
Products on Platform 6.5 or EAPs
We tried to fit as much preparation for the next major version as possible in Platform 6.5. This version contains most of the API deprecations and replacements. It also already provides the REST v2 component.
Based on our best knowledge, all products plan to migrate to Platform 6.5 soon:
- Confluence 8.8
- Bitbucket 8.18
- Crowd 5.3
- We are still working on Jira and Bamboo, and will let you know as soon as we have more details
You can use those versions to test API changes in a production-like environment.
We are also releasing RefApp (see About the Atlassian RefApp ) together with the Platform. In some cases you could use it to test your app on a new Platform 7 milestone.
REST v2
REST v2 was added in Platform 6.5. The products that implement it provide it at runtime. To test the compatibility of an app with the new REST implementation, you can:
- Remove Maven dependencies related to Atlassian REST and JAX-RS (
jsr311-api
). - Add Maven dependencies to REST v2 API 7.2.0 and JAX-RS API (
jakarta.ws.rs-api
). - Add the following snippet to your
atlassian-plugin.xml
file:
<rest-migration key="unique-key">
<rest-v2/>
</rest-migration>
- Resolve any compilation errors.
We will also share a detailed migration guide to help resolve compilation errors and ensure all the features are used correctly.
Next updates
At this time, our engineers are still finishing the changes for Platform 7. Therefore, we cannot yet provide you with a final build containing all the changes. Our priority is to get a stable version of Platform 7 ready and integrated into the Atlassian Data Center products to get an EAP in your hands as soon as possible.
In the meantime, we are putting together detailed migration guides for all the changes to make the migration as smooth as possible. We are also using your feedback to identify common challenges and pain points and will provide guidance where necessary.
The changes in Platform 7 will be introduced in the next major version of every Atlassian Data Center product. Each product will update its EAPs at its own pace. Products will make specific changes, including API cleanup and removal of third-party libraries. Product-specific changes will be communicated through regular channels.
We highly appreciate all the feedback we got in response to our earlier communications, and we are doing our best to provide clear information on what is to come. Stay tuned.