Hi everybody! I wanted to take a moment to discuss our plans for a new major version of AUI.
The AUI 8 agenda
For AUI 8, we have a few areas of focus.
Doing these things will drive down the default and minimum page size. Less code means a faster page, thus a better user experience.
Updating dependency versions
AUI has been using old versions of its upstream dependencies for some time. A major version allows us to bump those versions and remove support from older ones.
In AUI 8, we will be:
- Adding support for jQuery 3.x.
- Dropping support for jQuery 1.x.
- Bumping jQuery-UI to the latest version.
- Bumping Skate.js to the latest version.
- Bumping Backbone and Underscore to their latest versions.
Small and sensible by default
A major version is a good time to revisit the shape of the AUI library ā how it ends up in a browser, and what you get by default. In AUI 8, we will be:
- Re-evaluating what you get āby defaultā when you load an entry point to AUI.
- Splitting less-used pieces of AUI in to separate Node packages.
- Updating our build tooling to better compile and optimise our code.
Eliminating dead code
Finally, a major version offers an opportunity for us to remove long-deprecated code.
- As AUI supports IE 11+, we will be removing polyfills and other code that supports IE 10 and below.
The progress so far
Progress is being made on the ānextā branch of AUI.
Development of the version is currently in alpha. The direction is set, but the specifics of what will land in the final version are not.
Depending on your feedback, much can change before the beta and final versions.
So far, the AUI team has:
- Replaced the build pipeline with Webpack 4 and the atlassian-webresource-webpack-plugin. The move has allowed the team to use modern versions of code minifiers and optimisers, and paves the way for future improvements such as code splitting.
- Re-evaluated and moved code out of initial entry points for the library.
- The default entry point for AUI in P2 ā the āajsā web-resource ā is 50% smaller than in 7.x.
- Removed several dead code paths, such as polyfills for
requestAnimationFrame
,window.MouseEvent
, and other things that are supported natively by IE 11+ and other evergreen browsers. - Bumped AUIās version of jQuery-UI to
v1.12.1
(up fromv1.8
). - Bumped Backbone to
v1.3.3
(up fromv1.0.0
). - Bumped Underscore to
v1.9.2
(up from `v1.5).
The breaking changes
With this version of AUI, there are a few significant areas of backwards-incompatible changes.
- The minimum required version of jQuery is now
2.x
, up from1.7.2
. - Backbone and Underscore are not added to window by AUI any more. If you depend on these libraries, you must pull in your own.
- In P2 plugins, most components no longer load through the āajsā web-resource; they must be explicitly added as a
<dependency>
in your own pluginās<web-resource>
definitions.
For consumers of AUIās source, there are some significant file structure changes as well. Individual source files have moved around quite drastically.
- AUI is now split in to several Node packages:
-
packages/core
ā contains the majority of AUIās component source code -
packages/docs
ā the documentation pages and website assets -
packages/deprecated/*
ā extracted packages for code that AUI no longer uses -
packages/iconfont
ā contains the Atlassian ADG icon assets and iconfont files -
packages/soy
ā contains all soy templates to implement AUIās HTML patterns
-
- The individual ābatchā JS and LESS files are gone. In their place are āentryā files that pull in all necessary assets to make a given component work. These can be compiled via Webpack, Rollup, or Parcel.
The full changelist is incomplete, but the changelog on AUIās ānextā branch is being kept current.
A comprehensive upgrade guide will be published alongside the final version of AUI 8. In the meantime, you can read the guide in our preview builds of the AUI 8 documentation.
What isnāt changing
We will be leaving HTML patterns alone in AUI 8.0.
During the course of AUI 8.x development, some HTML patterns may be augmented and improved, but breaking changes to the HTML layer are not planned until AUI 9.
How to get the release
You can see all released versions of AUI listed here, including alpha and beta releases: @atlassian/aui - npm
If youāre using AUI through NPM, add the latest beta by running npm install --save @atlassian/aui@beta
or yarn add @atlassian/aui@beta
.
If youāre using AUI through an Atlassian product and testing your app via the AMPS plugin, you can bump to the latest beta version by adding AUI as a pluginArtifact
in your AMPS plugin configuration:
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-bamboo-plugin</artifactId>
<version>${amps.version}</version>
<extensions>true</extensions>
<configuration>
<pluginArtifacts>
<pluginArtifact>
<groupId>com.atlassian.aui</groupId>
<artifactId>auiplugin</artifactId>
<version>${aui.next.version}</version>
</pluginArtifact>
</pluginArtifacts>
</configuration>
</plugin>
If you just want a ZIP of the files, you can find a list of AUI ZIP files on Atlassianās public packages registry.
Where we want your input
We want your teams to succeed. This version of AUI is the first major version weāve planned with backward-incompatible changes in some time, so we want to work with teams to get it right.
Weāre confident there is a reasonable upgrade path for consumers of the Atlassian P2 plugin for AUI. We are working with Atlassianās Server product teams to identify and fix incompatibilities within their products. They will be aiming to ship AUI 8 in their next major versions, so there will be a stable set of UI components and web-resource dependencies across each.
Weāre less confident about what the community needs from the other AUI distribution options. If youāre using AUI in your projects today through NPM or the ZIP files, weād love to hear from you.
Download the latest AUI 8 version and try it out in your project. If you encounter any issues with code not working that you expected to, let us know in the comments below.
If you have any questions, concerns, or feedback for us about any of this, add a comment below.
<3,
Daz.