cloudstack-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Simon Weller <swel...@ena.com.INVALID>
Subject Re: [DISCUSS] Primate - new UI for CloudStack?
Date Fri, 20 Sep 2019 16:51:38 GMT
I like the idea of separating the UI from the main code base. I think that will provide a lot
more flexibility moving forward and the project is well overdue for a new look and feel.
I think the time frame proposed to sunset the old UI is doable and we'll need some feedback
from those using it today (we have our own UI, so this doesn't affect us).

One of our challenges over the last few years is the added work of getting UI features into
the release and it has added around 30% additional work load due to the older style code of
the current UI. Having it in VUE is great and I think it will also encourage others to contribute.

+1.

________________________________
From: Anurag A <anuraga.iitk@gmail.com>
Sent: Friday, September 20, 2019 11:26 AM
To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>
Cc: users@cloudstack.apache.org <users@cloudstack.apache.org>
Subject: Re: [DISCUSS] Primate - new UI for CloudStack?

+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 <skattoju@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.yadav@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.yadav@shapeblue.com
>> www.shapeblue.com<http://www.shapeblue.com>
>> Amadeus House, Floral Street, London  WC2E 9DPUK
>> @shapeblue
>>
>>
>>
>>

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