Back in April I got a shiny new MBP and decided I wouldn’t transfer anything over by hand. I had spent too long bootstrapping development environments, for myself and others. “Restoring” the fresh machine from an old backup was an option, but it lacked nuance. My team had used Puppet to bring the setup time of Mozilla’s crash reporter down from one week to an hour, and I was looking for similar gains for dev machine setup. After a survey of the field I chose GitHub’s Boxen.
Boxen is a framework for creating automated, repeatable laptop setups. I created a Boxen for Mozilla WebDev, and have been slowly building our install base since April. After installing xcode and enabling full disk encryption, a single command will install Boxen and set up:
- git + hub
All of these and a few more useful utilities are installed into
/opt/boxen and set up for the machine – no more fussing with the difference between Apple supplied libs and the ones you Homebrew’d. Because I defined my own manifest, which was entirely optional, Boxen will install (just for me) my preferred chat clients, web browsers, editor, music player, and some other utilities. I’ve even set it up to install and update my public dotfiles. Once that is finished, BitTorrent Sync copies over my private files (unique to me) and in a few minutes my machine is ready to go.
I’ve been slowly evangelizing this way and growing the install base inside Mozilla. Some have used it as a foundation, customizing the rest of their machine manually. A few have contributed back their own manifests and modules. Matt Basta went so far as to set up project modules to make it easy to hack on Firefox Marketplace and Addons related projects.
Anyone meeting Boxen’s minimum requirements can run our flavor of Boxen, and I invite any curious parties to try. At the time of publishing, this means running OSX 10.8 or later – though support for other operating systems is slowly spreading through Boxen’s core modules. It works great for bootstrapping a fresh machine, and we’ve had no problems reported from installing it on already configured hardware either. You can read more about customizing it in the README, or jump right in via our new install page.
Boxen has already saved us a bunch of time bootstrapping new hires and recovering from hardware upgrades, component failures, and laptop theft. Many thanks are due to the community, at GitHub and elsewhere, that maintain the various modules that make our custom Boxen easy to maintain. We just pushed GitHub two-factor auth and improved OSX Mavericks support. For a sneak peak of what will be included in the future, check out Will Farrington’s PuppetConf 2013 talk about where the framework is heading or come hack on either Boxen modules or our boxen setup and build the features you want to have.