infochimps/cluster_chef — Issue #103: ClusterChef will be renamed Ironfan
Author: mrflip
Created: 2012-02-11 03:40:11+00:00
State: open

Good news: we're working on the burndown to a release late this month.
Interesting news: due to a polite request from the outside, it will be released under an exciting dynamic new name, Ironfan.
Bad news: this will involve a craptastic upheaval of the git-scape.

Yes, I know this sucks -- changes of this magnitude to the codebase should receive much more forward warning. In this case however there's a fixed timeline and non-engineering reasons for the change. Below I'm outlining the migration plan. I've included details of our internal migration, so that other people who have this in production can adjust.

New homes:

* **github.com/infochimps-labs/ironfan** -- the primary destination, and the home of the knife tools (pretty much what's here in `infochimps/cluster_chef`)
* **github.com/infochimps-labs/ironfan-pantry** -- collection of public cookbooks, roles and demo clusters
* **github.com/infochimps-labs/ironfan-homebase** -- skeleton homebase (looks a lot like the current cluster_chef-homebase)
* **github.com/infochimps-labs/ironfan-ci** -- continuous integration stuff (homebase/vagrants)
* **github.com/infochimps-labs/ironfan-scrubby** -- de-linter/simulator (`cluster_chef/lib/cluster_chef/cookbook_munger*`)
* **github.com/infochimps-labs/opscode-cookbooks** -- our fork of the opscode cookbooks repo

_______________________________________________________________________________________________

Note that once we make this change you will need to re-sync and re-converge every machine, as they will refer to things in the `ClusterChef::` namespace. Also: the metachef cookbook will be renamed "Silverware" (get it, middleware for ironfan & chef == silverware!).

## Phase 1: Regex Replace

0. message everyone on the github watchers/forkers list to describe that we're pushing towards release and to warn them about the name change.
1. Make a branch in each repo (`cluster_chef` and `*-homebase`) called `before_rename`, holding the current state of the code. Make another branch `ironfan`, where the renames will occur. That branch will be deleted as soon as the merge lands, hopefully before anyone even notices.
2. Make sure `el_ridiculoso` is up to date and that it fully converges in the vagrant and cloud environments.
3. Ensure all infochimps devs have push-pulled to various repos. make a tarball of the repos (.git and everything) and put them somewhere safe.
4. rename the `vendor/infochimps/metachef` cookbook as vendor/infochimps/silverware.
5. Bump the *minor* version number on all cookbooks (so 3.0.x => 3.1.x). Commit.
6. regex-replace `ClusterChef` => `Ironfan`, `cluster_chef` to `ironfan` and `[Mm]etachef` => `[Ii]ronfan`. Do this in `cluster_chef` and `infochimps-labs/cluster_chef-homebase` only. Get chef-client to complete on el_ridiculoso using an emptied-and-reloaded local chef server. Run knife cluster sync on all clusters in all homebases against local chef server.
7. Then **git merge** from cluster_chef-homebase into any other homebase-n. Please DO git merge, please DO NOT just repeat the regex-replace process. Once the merges go through, regex-replace any remaining references. Now check everything converges in each world.
8. Update the submodule references if any, and the .gitignore. Rename the vendor/cluster_chef folder to vendor/ironfan.
9. Delete the metachef cookbook from the chef server (or delete all cookbooks from the chef server).
10. Upload all the cookbooks and do rake roles; re-sync all clusters and re-converge all machines.
11. bump the *minor* version number on the gem and release it with a deprecation warning that is emitted by the gemspec file (so I see it when I run gem install) and a note in the doc file and so forth explaining that it is now called ironfan.
12. once the name is updated in the gemspec, release the `ironfan` gem. @temujin9 and I agree that it should be a single combined gem now that we won't have the stupid `_chef` gem name conflict.

## Phase 3: Repo migration

1. back up the repo and put it somewhere safe.
2. Transfer ownership of `infochimps/cluster_chef` to `infochimps-labs/cluster_chef`. Do whatever is necessary/possible to migrate issues over.
3. Change name of `infochimps-labs/cluster_chef` to `infochimps-labs/ironfan` and name of `infochimps-labs/cluster_chef-homebase` to `infochimps-labs/ironfan-homebase`
4. Create new repo `infochimps/cluster_chef` with helpful link to new repo. I don't think we need a placeholder at `infochimps-labs/cluster_chef-homebase`.
5. Rename master branch of what is now ironfan to be `version_2`, and move the `version_3` branch to master. We will leave the `before_rename` branch in place for a while, but will not be backporting anything.
6. Update any remaining documentation links, etc to point to new home.
7. Have all devs edit their .git/config to point at right place.

important details:

1. It's possible some people have been referring to a proxy.pac file by its URL. This URL will die. If that didn't make sense, don't worry about it -- you're not affected.
2. When we do the internal regex-replace, all documentation URLs wiill point to .../ironfan and not .../cluster_chef -- meaning they will be inaccurate. I have put a stub in to say 'soon, not yet, look over here'.