Renaming Kibana to OpenSearch Dashboards, One PR at a Time

Between March 3rd and March 19th, 2021, I merged 49 pull requests into what would become OpenSearch Dashboards. That’s roughly three PRs a day for seventeen straight days, and almost all of them were doing the same kind of thing: renaming kbn-* packages to osd-*, one directory at a time.

kbn- shows up in package names, import paths, config files, build scripts, generated docs, test fixtures, and a bunch of other places that don’t all update the same way. Doing it all at once gets you a PR nobody can review and a build that’s broken in ways nobody can trace back to a single change. So we didn’t — we did it directory by directory, package by package, and shipped each piece as its own reviewable PR.

You can see the shape of it just from the PR titles:

On March 15th there’s PR #167: “Fixes renaming renames and able to start Dashboards 🎉🎉🎉🎉.” After two weeks of renaming pieces one at a time, that’s the PR where the whole thing rebuilt and started up again.

Doing this in 49 separate PRs instead of one giant one wasn’t about process for its own sake. A rename this size touches thousands of files, and if something breaks after landing it all in one shot, you have no idea which change caused it. In small, reviewable pieces, when something did break — and things did break — we knew within minutes which PR to look at.

It’s the most I’ve shipped in any single stretch of this project so far — more PRs in these seventeen days than everything before them combined. Not the most interesting engineering problem I’ve worked on, but probably the one that’s required the most discipline to do carefully instead of fast.

Repo history