Context and Problem Statement
In the beginning, Foreman and Katello had two separate UIs with all their own pages. Foreman kept track of hosts through its Hosts pages, while Katello had the Content Hosts pages. The basic idea of these pages is simple:
- A “list” page, which lists all your hosts and allows you to perform bulk actions on several hosts
- A details page, which displays information about a single host and allows you to perform actions on that single host.
The legacy of Foreman and Katello starting as separate applications is that we basically have two of each of these. For years now, it’s been a goal to merge Foreman and Katello’s hosts pages into a single page, because that just makes more sense.
Originally, the pages consisted of
- Foreman’s All Hosts list page, written in Ruby ERB/HTML, containing provisioning-related bulk actions
- Foreman’s host details page, written in Ruby ERB/HTML, containing provisioning-related information and actions
- Katello’s Content Hosts list page, written in AngularJS, containing content-related bulk actions
- Katello’s Content Host details page, written in AngularJS, containing content-related information and actions
We are now well on our way towards combining these into
- A single All Hosts page, written in React, that offers both provisioning- and content-related bulk actions and replaces both list pages.
- A single host details page, written in React, that offers both provisioning- and content-related information and replaces both details pages.
In general, for large UI rewrites such as this, our process has been
- Offer a partially-functional new UI as a tech preview, gated behind a setting
- Expand functionality of the new UI until users can accomplish the most important tasks without having to fall back to the old UI
- Deprecate the old UI and make the new UI the default
- Remove the old UI completely. (Note that this does not necessarily mean that every function from the old page is available on the new one.)
The current state of these pages is
Content Host and Host details pages: Step 3. These pages have been combined and most functionality is available as part of the new UI, written in React. Links from the list page lead to the New UI by default. The Legacy UI is still available via links on the new pages.
All Hosts list page: Step 2. Most of the top bulk actions are available already, with more on the way. There is a “New UI” button on the legacy list page, for easy access.
In the next 1-2 Foreman and Katello releases, we plan to add the following bulk actions to the new All Hosts list page:
- Repository sets
- Location and org
- Disassociate host
- Change owner
- Change host collections
After these are completed, it will mean that
- most of the “top” (most important) bulk actions from the original All Hosts page are available in the new UI; and
- all of the Content Host bulk actions are now available in the new UI.
Proposal
In light of this, we’d like to make the following changes:
- Remove the deprecated legacy Content Host details UI.
- Remove the legacy Content Host list UI.
Several good reasons for this include
- It just makes more sense to have all host-related actions on one page instead of two.
- This removal will mean that a lot of Katello’s AngularJS code can be removed, which furthers our goals of modernizing our tech stack, improving security, and eliminating technical debt.
- The new pages conform to current, modern design standards (Patternfly 4, currently being upgraded to Patternfly 5) and have the involvement of UX designers. The old pages use outdated designs and cause a bad user experience.
- Having some actions under “Hosts” and others under “Content Hosts” can be confusing to new users.
Proposed timeline / order
- First, we will complete adding the bulk actions mentioned above to the new UI.
- In the same Katello release that those bulk actions are complete, we will officially deprecate the legacy Content Host UI in favor of the new UI.
- In the next Katello release after that, we will remove access to those pages and remove the underlying AngularJS code and routes.
Keeping the legacy Content Host UI around simply isn’t a viable option, due to the security issues and technical debt of AngularJS.
Note that this proposal does not include the deprecation or removal of Foreman’s legacy host list or details pages. Those will still be available (though they will not be shown by default.) Rails ERB and HTML are still fully supported, so modernizing those is somewhat less urgent.
Decision Outcome
tbd
Impacts
It’s possible there may be actions available on the removed pages that were not available anywhere else. Depending on what the action is, it may still be available through Hammer CLI or API. I would expect that if a particular omission caused a lot of pain, that we would have heard about it already or will be hearing about it soon. However, often people don’t use the new UI until they have to, and we’ll find out where those pain points are after the old UI is removed.
Other than that, I expect most of the impacts from this to be positive, with the removal of technical debt and outdated pages and designs.