Project Primate – a new UI for Apache CloudStack
There is currently significant effort going on in the Apache CloudStack community to develop a new, modern, UI (user interface) for CloudStack: Project Primate. In this article, I discuss why this new UI is required, the history of this project and how it will be included in future CloudStack releases.
There are a number of key dates that current users of CloudStack should take note of and plan for, which are listed towards the end of this article.
We also recently held a webinar on this subject:
The current CloudStack UI
How to build a new UI for Cloudstack ?
A UI R&D project was undertaken by Rohit Yadav in early 2019. Rohit is the creator and maintainer of CloudMonkey (CloudStack CLI tool) and he set off to use the lessons he’d learnt creating CloudMonkey to evaluate the different options for creating a new UI for CloudStack.
Rohit’s initial R&D work identified a set of overall UI requirements and also a set of design principles.
- Clean Enterprise Admin & user UI
- Intuitive to use
- To match existing CloudStack UI functionality and features
- Separate UI code from core Management server code so the UI becomes a client to the CloudStack API
- API auto-discovery of new CloudStack functionality
- Config and Role-based rendering of buttons, actions, views etc. Dashboard, list and detail views
- URL router and browser history driven
- Local-storage based notification and polling
- Dynamic language translations
- Support desktop, tablet and mobile screen form factors
- Declarative programming and web-component based
- API discovery and param-completion like CloudMonkey
- Auto-generated UI widgets, views, behaviour
- Data-driven behaviour and views, buttons, actions etc. based on role-based permissions
- Easy to learn, develop, customise, extend and maintain
- Use modern development methodologies, frameworks and tooling
- No DIY frameworks, reuse opensource project(s)
Out of these initial principles came the first iteration of Project Primate , a new Vue based UI for Apache CloudStack. Rohit presented his first cut of Primate at the Cloudstack Collaboration conference in Las Vegas in September 2019 to much excitement and enthusiasm from the community.
Unlike the old UI, primate is not part of the core CloudStack Management server code, giving a much more modular and flexible approach. This allows Primate to be “pointed” at any CloudStack API endpoint or even multiple versions of the UI to be used concurrently. The API auto-discovery allows Primate to recognise new functionality in the CloudStack API, much like CloudMonkey currently does.
Primate is designed to work across all browsers, tablets and phones. From a developer perspective, the codebase should be about a quarter that of the old UI and, most importantly, the Vue.JS framework is far easier for developers to work with.
Adoption of Project Primate by Apache Cloudstack
Primate is now being developed by CloudStack community members in a Specialist Interest Group (S.I.G). Members of that group include developers from EWERK, PCExtreme, IndiQus, SwissTXT and ShapeBlue.
In late October, the CloudStack community voted to adopt Project Primate as the new UI for Apache CloudStack and deprecate the old UI. The code was donated to the Apache Software Foundation and the following plan for replacement of the old UI was agreed:
Technical preview – Winter 2019 LTS release
A technical preview of the new UI will be included with the Winter 2019 LTS release of CloudStack (targeted to be in Q1 2020 and based on the 4.14 release of CloudStack). The technical preview will have feature parity with the existing UI. The release will still ship with the existing UI for production use, but CloudStack users will be able to deploy the new UI in parallel for testing and familiarisation purposes. The release will also include a formal advance deprecation notice of the existing UI.
At this stage, the CloudStack community will also stop taking feature requests for new functionality in the existing UI. Any new feature development in CloudStack will be based on the new UI. In parallel to this, work will be done on the UI upgrade path and documentation.
General Availability – Summer 2020 LTS release
The summer 2020 LTS release of CloudStack will ship with the production release of the new UI. It will also be the last version of CloudStack to ship with the old UI. This release will also have the final deprecation notice for the old UI.
Old UI deprecated – Winter 2020 LTS release
The old UI code base will be removed from the Winter 2020 LTS release of CloudStack, and will not be available in releases from then onwards.
It is worth noting that, as the new primate UI is a discrete client for CloudStack that uses API discovery, the UI will be no longer bound to the core CloudStack code. This may mean that long term the UI may adopt its own release cycle, independent of core CloudStack releases. This long term release strategy is yet to be decided by the CloudStack community.
What CloudStack users need to do
As the old UI is being deprecated, organisations need to plan to migrate to the new CloudStack UI.
What actions specific organisations need to take depends on their use of the current UI. Many organisations only use the CloudStack UI for admin purposes, choosing other solutions to present to their end-users. It is expected that the amount of training required for admins to use the new UI will be minimal and therefore such organisations will not need to extensively plan the deployment of the new UI.
For organisations that do use the CloudStack UI to present to their users, more considered planning is suggested. Although the new UI gives a much enhanced & intuitive experience, it is anticipated that users may need documentation updates, etc . The new UI will need to be extensively tested with any 3rd party integrations and UI customisations at users sites. As the technology stack is completely new, it is likely that such integrations and customisations may need to be re-factored.
A summary of support for the old / new UI’s is below
|Cloudstack version||Likely Release date||Ships with old UI||Ships with new UI||LTS support until*|
|Winter 2019 LTS||Q1 2020||Yes||Technical Preview||c. Sept 2021|
|Summer 2020 LTS||Q2/3 2020||Yes (although will contain no new features from previous version)||Yes||c. Feb 2022|
|Winter 2020 LTS||Q1 2021||No||Yes||c. Sept 2022|
*LTS support cycle from the Apache CloudStack community. Providers of commercial support services (such as ShapeBlue) may have different cycles.
Anybody actively developing new functionality for CloudStack needs to be aware that changes to the old UI code will not be accepted after the Winter 2019 LTS release.
As development of Project Primate is still ongoing, I encourage CloudStack users to download and run the Primate UI before release – it is not recommended to use the new UI in production environments until it is at GA. The code and install documentation can be found at https://github.com/apache/cloudstack-primate. This provides a unique opportunity to view the work to date, contribute ideas and test in your environment before the release date. Anybody wishing to join the SIG can do so on the firstname.lastname@example.org mailing list.