Hi all,
One of the roadmap threads, alongside Path to ASGI and Path off the Red Hat subscription surface: finishing a rebrand that is long overdue, removing AWX from function names, variables, config options and paths. It is the only roadmap item that touches every repository, and the hard part is not the renaming. It is deciding which names cannot be renamed without breaking something that already exists.
Where this stands. All eight steps have landed, the operator API included: it was the one needing a decision rather than a rename, and the decision was to serve both groups. What is left is pull requests waiting on review in the installers, and one held back on purpose until no operator carries the old name.
Where the name lives
Counts of lines mentioning the name on each default branch today, against what this post opened with:
- ascender: around 1,600, down from 24,000. The package is
ascender/, with a shim for the old name.
- ascender-operator: around 950, the kinds and role variables, now deliberate compatibility.
- ascender-install: around 560, and ascender-pro-install around 380, mostly CRD manifests.
- ascender-k8s-install: around 190, CRD manifests plus
awx-manage in the migrate and restore roles.
- ascender-collection: around 120, down from 400.
- ascender-kit: around 30, and ascender-ledger 10.
- ascender-ee, ascender-galaxy-proxy and ascender-playbooks: nothing worth a change.
The five that are not a rename
Each was load-bearing outside the code, so each needed a decision. All five are settled now, and the way they settled was the same each time: serve both names, and let callers move when it suits them.
- The operator API,
awx.ansible.com and its AWX* kinds: both served, a CRD belonging to one (#47).
- The logger names: Ledger read both first (#50), then they moved (#990).
- The credential plugin entry point: registered under both group names (#986).
- The filesystem:
/var/lib/ascender aliases onto /var/lib/awx, so no volume moved (#985).
- The user-facing names: the command, the settings and the client answer to both (#982, #984, #998).
A conversion webhook converts between versions and never across groups, so there is nothing to bridge the two operator groups with. #45 made every group and kind in the roles a variable, which is what serving two of them needs, and #46 dropped the RBAC scaffolding nothing applied. ascender-kit reads ASCENDER_* while still reading TOWER_* (#72), and the deployed database keeps the name awx on purpose (#991).
The order
Eight steps, each reviewable on its own, and nothing breaking before something else is ready for it:
- The invisible half: comments, docstrings, log text and test names. ascender-k8s-install is last (#7).
- Settings and environment variables, old names kept as aliases, in #984 and #998.
- The command:
ascender-manage added, awx-manage kept (#982); k8s-install still calls the old one (#6).
- The filesystem, addressed as
/var/lib/ascender in #985.
- The Python package: one module object under both names (#988), then
awx/ became ascender/ (#997).
- The logger names, in #990, once Ledger read both.
- The operator API:
ascender.ansible.com is now served beside awx.ansible.com.
- Documentation, once the names stop moving. #1016 removed the pages describing what no longer exists.
Three installer pull requests are also open and ready: #5 installs the collection under its own name, and #247 and #16 import the platform as ascender, which needed a release carrying the alias and now has one.
Two things I would avoid
Two ways this goes wrong, and both are tempting:
- One repository-wide search and replace: unreviewable, unbisectable, and it takes the five above with it.
- Renaming anything user-facing without an alias: the installers and people's scripts call those names.
Pull requests