cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rohit Yadav <>
Subject Re: [DISCUSS] Primate - new UI for CloudStack?
Date Mon, 23 Sep 2019 02:20:11 GMT
Hi Sid,

I've put the proposal on the wiki for reference:


Rohit Yadav

Software Architect, ShapeBlue

From: Siddhartha Kattoju <>
Sent: Friday, September 20, 2019 20:47
To: <>
Cc: <>
Subject: Re: [DISCUSS] Primate - new UI for CloudStack?

+1 from me as well.

Just a side note: I feel like there is a high risk of tldr here. May be its
just me. It may be would be good to put most of the details in a wiki page
and just post a summarized version on the list ?

*Sid Kattoju*

Cloud Software Architect | Professional Services

c 514.466.0951

* <>*

On Fri, Sep 20, 2019 at 8:10 AM Rohit Yadav <>

> All,
> == Summary ==
> I have been working on a new, modern role-based UI for Cloudstack (project
> Primate: I demoed this for the
> first time at CCCNA19 last week and it was very well received. It was
> discussed, at length, as an item in the hackathon and the general consensus
> there was that this could become Cloudstacks new UI. We discussed a plan to
> achieve that and now I’m bringing that plan to the list for discussion.
> == Background ==
> The current CloudStack UI has grown technical debt over time and it has
> become harder to extend, develop, maintain in the long run, it is also
> difficult for new contributors to learn and get started. Since late 2018, I
> started working on a side-project with the aim to create a modern
> progressive and role-based declaratively-programmed UI for CloudStack,
> called Primate. Before creating Primate, I set out to create a list of core
> requirements of what would give us an extensible, modern UI that was easy
> to develop now and in the future. These are the requirements I came up with:
>   *   designed from ground up to be  a complete replacement for our
> combined user/admin UI
>   *   to respect all entities in cloudstack and not make assumptions on
> use-cases of cloudstack
>   *   data-driven and auto-generation of UI widgets and to be easy to
> learn, develop, extend, customise and maintain.
>   *   declarative programming
>   *   support for API discovery and parameter completion like CloudMonkey
>   *   support for custom roles
> I looked at existing Cloudstack UI projects but none of them fully
> satisfied all these requirements and started Primate.
> == Project Primate ==
> For the implementation, I compared a couple of opensource JS and UI
> frameworks and decided to use VueJS (<>)
> which is a JavaScript framework and AntD (<
>>) which is a UI design language with a well-defined
> spec, styling guide, and an implementation-specific to VueJS. VueJS was
> selected because among a few other JS frameworks I surveyed it was the
> easiest (for me) to learn and get started. I also surveyed a few UI
> frameworks and selected AntD because it came with a well-defined spec,
> styling guide and VueJS specific implementation which gives several
> re-usable components out of the box.
> During the development of Primate, I used my previous experience from
> CloudMonkey and another PoC angular-based UI ProjectX, and it currently
> supports:
>   *   role-based UI based on API autodiscovery
>   *   auto-generated action/API forms with parameter completion
>   *   declarative component-driven views
>   *   modern programming methodologies (hot reloading, npm based
> build/run/compile etc.)
>   *   decoupled from core Cloudstack code
>   *   dynamic translation (most/many of old translation files ported)
>   *   includes dashboards, async job/API polling, all list views/tables
> per the old UI
>   *   browser history and url/route driven navigation
>   *   support for mobiles/tables/desktop screens
>   *   configuration driven UI customisation (of navigation, icons, APIs
> etc)
> To get to this point, I’ve had some valuable help from Anurag and Sven et
> al at EWerk.
> The development strategy to support all APIs out of the box in a
> data-driven way gives a functioning UI and scope to customise
> views/components over time. Support to declaratively add actions on all
> views and some action/customisation (ex. vm/zone deployment wizard) is in
> progress. The work was recently discussed and demo-ed at CCCNA19, the
> slides of my talk are here:
> == Discussion ==
> With this discussion thread, I want to propose the idea hatched in the
> recent hackathon for Primate to become the next UI for CloudStack. I’d like
> to seek everybody's thoughts, feedback, comments, and reviews on that idea.
> Obviously, part of any new UI project would mean that the existing UI
> development would eventually get abandoned. In the hackathon we discussed a
> potential plan to formally deprecate the old UI. I therefore think that
> this is something that needs discussion here and a vote if its going to
> happen.
> In summary, that plan is as follows (with proposed timeframes in
> [brackets]) :
>   *   allow the community to download & experience the UI
>   *   discuss and gather consensus around Primate [now]
>   *   take a vote on whether to take this plan forward [next few weeks]
>   *   create a new repository under Cloudstack and accept Primate
> codebase, work on initial documentation with getting started, styling guide
> etc (i.e. make this part of the cloudstack project) [after the vote, if
> agreed]
>   *   collaborate to get primate to be functionally on-par with current
> CloudStack UI, gather feedback, issues, iterate development/testing etc.
> [2-3 months before winter LTS release]
>   *   release Primate with winter LTS 2019 release as a technical preview
> and also give notice of deprecation plan for existing UI
>   *   define a release approach (separate repo/releases with separate
> rpm/deb repo, or use git subrepo/subtree/submodule with CloudStack
> repository?) [Before winter LTS release?]
>   *   optionally  stop taking feature FRs in old UI and create upgrade
> path/plan documentation from old UI to Primate
>   *   Release Primate GA in summer LTS 2020 release as the new UI, but
> still ship old UI with a final deprecation notice
>   *   old UI reaches EOL in Winter lts 2020, old UI codebase is removed
> from codebase (this gives one year period from winter LTS 2019 Primate
> technical preview for community and users to discuss/comment/upgrade)
> So, the last release of the old UI would be in summer 2020 LTS. According
> to our LTS schedule, this would be supported under LTS until summer 2022
> (but, with no new UI functionality after summer 2020)
> The repository is currently available here:
> and has instructions on getting
> started – I’d encourage everybody to look at the work to date.
> If anybody is keen to contribute in the meantime, I can receive
> bugs/requests/feedback as new issues:
> Links:
> Git repository:
> Issues:
> Screenshots:
> CCCNA19 talk slides:
> Thanks and regards.
> Regards,
> Rohit Yadav
> Software Architect, ShapeBlue
> Amadeus House, Floral Street, London  WC2E 9DPUK
> @shapeblue
Amadeus House, Floral Street, London  WC2E 9DPUK

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message