+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


* <https://goo.gl/NYZ8KK>*




On Fri, Sep 20, 2019 at 8:10 AM Rohit Yadav <rohit.ya...@shapeblue.com>
wrote:

> All,
>
>
>
> == Summary ==
>
>
> I have been working on a new, modern role-based UI for Cloudstack (project
> Primate: https://github.com/shapeblue/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 (https://vuejs.org<https://vuejs.org/>)
> which is a JavaScript framework and AntD (https://ant.design<
> https://ant.design/>) 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:
> https://rohityadav.cloud/files/talks/cccna19-primate.pdf
>
>
>
> == 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:
> https://github.com/shapeblue/primate 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:
> https://github.com/shapeblue/primate/issues
>
> Links:
>
> Git repository: https://github.com/shapeblue/primate
>
> Issues: https://github.com/shapeblue/primate/issues
>
> Screenshots: https://twitter.com/rhtyd/status/1171224978714288129
>
> CCCNA19 talk slides:
> https://rohityadav.cloud/files/talks/cccna19-primate.pdf
>
>
> Thanks and regards.
>
> Regards,
>
> Rohit Yadav
>
> Software Architect, ShapeBlue
>
> https://www.shapeblue.com
>
> rohit.ya...@shapeblue.com
> www.shapeblue.com
> Amadeus House, Floral Street, London  WC2E 9DPUK
> @shapeblue
>
>
>
>

Reply via email to