+1 to the new UI as it supports: 1. Faster development of features 2. Better experience as a user 3. Easy customisation declaratively
Regards, Anurag > On 20-Sep-2019, at 8:17 AM, Siddhartha Kattoju <skatt...@cloudops.com> wrote: > > +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 >> >> >> >>