With the 1.0.96 release of Aikau we've introduced a new AMD package (simply called "aikau") that will give you a sneak peak of where things are going to be heading. This post is going to explain why we've made this addition, what it will do for you and how you can contribute to its success.
If you watched my recent Tech Talk Live presentation you'll have a good idea about the history of Aikau and you'll also have been given a brief overview of where we want to take it. The first couple of items on the road map were performance improvements and the introduction of Material Design styled widgets. Alfresco has decided to adopt Material Design and this means that at some point in the future we may want to update Share to use this "visual language" (Google's terminology, not mine).
The simplest approach to achieving this aim is to convert more of Share to use Aikau, and then either update the styling of the widgets used to define the pages to use Material Design or swap them out with dedicated Material Designed widgets.
At the same time we also want to apply the lessons that have been learned over the last 4 years to this new suite of widgets. One of our most valuable Community members (Axel Faust) provided us with some great analysis of how Aikau performs and we know that there is room for improvement.
Right and Wrong
Some things we got right... Fine grained components that follow the "Single Responsibility Principle" (having learned our lesson from the coarse grained YUI2 components) being one and another being decoupling over a publication / subscription model (whilst adding complexity) to provide clean customization, easy enhancement and promote reuse. I did however initially imagine that a widget would only ever have one set of child widgets... and this proved to be incorrect and I also didn't focus enough on the performance of generating child widget at large scale.
New Package, New Rules
Aikau is released on a weekly basis and every release is guaranteed to be backwards compatible with the last. We also try to avoid removing functions or changing their signatures to ensure that 3rd party widgets that rely on them don't break. This makes working on something as complex as performance quite an interesting challenge.
Therefore we've introduced a new package called "aikau" (the original package is called "alfresco") in which we're going to create our new Material Design style widgets that inherit from from new, performance enhanced modules. In order to make it easier to collaborate with the Alfresco Community the new "aikau" package will not be subject to the same stringent, backwards compatibility rules as the original "alfresco" package.
This means that we will be able to make breaking changes between releases should it be necessary and therefore you shouldn't start using these in production yet. Ultimately we want the "aikau" package to be a safe collaboration space that will eventually form a 1.1 release of Aikau. At which point the original "alfresco" package will be deprecated (but not removed) as there will be a full complement of Material Design widgets and production applications (such as Share) can begin to transition to using them.
What This Means
This gives us the best of both worlds - the "alfresco" package will continue to be developed, new widgets will be added, bugs will be fixed and weekly releases will continue... but we will open up the contribution process of the "aikau" package to encourage more active participation without needing to worry about backwards compatibility or regression testing until we're confident that we've got the implementation right.
If you have an interest in the future direction of Aikau and Share then now is the time to get involved. In my next post I'll showcase the new Material Design widgets and discuss what we've done so far and the other areas where we're looking to improve performance. If you have additional ideas of where you'd like to see Aikau go then we'd love to hear about them.