RFC: Align Foreman and Katello
Decision Outcome: November 16, 2026
Context and Problem Statement
Katello has long stood as it’s own Github organization dating back to the days when it was first open sourced and existed as a Rails application that lived beside Foreman.
Since then, Katello has moved to become a plugin of Foreman, aligning on a single installer, tools and conventions in efforts to normalize Katello’s role as a plugin; albeit a large one with bigger dependencies.
The foreman-installer encapsulates this difference, and users feel it, having to think which world do I live in: Foreman or Foreman+Katello.
In that time, Katello usage has grown.
The community has been building a new installer from the ground up with the idea in mind of having a united model desiring to get away from the which world do I live in and rather to have users think in terms of what capabilities, what features do I have enabled.
I think the time has come to finally normalize Katello.
Proposal
There are three major elements:
- Move the maintained Katello repositories to
theforemanGithub organization - Ensure Katello can be enabled on an existing Foreman
- Reconsider our baseline Foreman installation
1. Move Git Repositories
Six repositories currently live under the Katello GitHub organization and are proposed for transfer to the theforeman organization. Moving them would place these projects under the intended Foreman organization namespace and make repository ownership and discovery more consistent for contributors and users.
The repositories proposed for transfer are:
Katello/hammer-cli-katelloKatello/katelloKatello/katello-certs-toolsKatello/katello-client-bootstrapKatello/katello-host-toolsKatello/smart_proxy_container_gateway
2. Ensure Katello can be enabled on an existing Foreman
When a user has installed Foreman using the Foreman scenario in foreman-installer and they want the content management capabilities of Katello, they must re-install their setup from scratch. Katello adds constraints on top of Foreman’s standard model, and does not posses the ability to migrate key data types (such as organizations) to match Katello’s expectations.
This change would be to add the right set of migrations to ensure a user adding Katello properly connects the right set of models with their backend implementations. That any additional restrictions are handled. Any behavior that changes the core model of how a Foreman entity works, is either moved to Foreman core, or relaxed in Katello to arrive at a common model.
This change also requires handling of certificates since a typical Foreman installation relies upon Puppet CA certificate, while Katello has a self-signed certificate chain generated from a different set of tooling. This is handled much more cleanly in foremanctl than foreman-installer and thus this convergence of the two could be handled there instead of applying to foreman-installer.
3. Reconsider our baseline Foreman installation
With the rise in Foreman+Katello installations over the years, with our design of foremanctl to unite into a single model of installation with features that can be added, we should consider changing the baseline from pure Foreman to Foreman + Katello. Which inherently means also foreman-tasks and foreman_remote_execution.
As these establish a broader baseline of capabilities for managing infrastructure, as these all increase the resource requirements necessary from a plain Foreman installation, as there are multiple other plugins that rely on this configuration, making them the baseline means the community can focus on designing around this from the beginning.
Yes, this would be a shift from Foreman’s roots. However, in those 15+ years a lot has changed about how the application is built, how the community uses and deploys. History should be consulted, but ultimately the decision should reflect where the project is at today, where the project is headed tomorrow, and what most benefits users and contributors alike.
Alternative Designs
- Keep
foremanas the baseline, and for anything not in the core repository, it must be thought of as a feature that is added and support that.
Decision Outcome
Pending. No decision has been made yet.