When I joined Appnovation a few months back, I was tasked with setting up my new shiny laptop with all the software needed to have myself up and running and be ready to tackle client work: multiple versions of PHP, a web server (for most Apache, but I’ve switched to Nginx recently) and a local MySQL database server to name a few.
In the span of less than 5 years, it feels like the toolset available to web developers has exponentially increased, and with it, the amount of work required to get up and running on new or already undoing projects has also increased.
Now, let me go off on a tangent.
Last week, a colleague at our Montreal office told me about the book “Of Dice and Men: The Story of Dungeons & Dragons (D&D) and The People Who Play It” [link] and got me reminiscing about what many teenagers of our generation did in the 80’s. I wasn’t a hardcore D&D player, but I had the books and was a big fan of the universe created around the D&D franchise.
Long story short, I’ve tried many times to start D&D campaigns with my friends but most of the time - when we would schedule a game session - it ended being spent creating and tweaking characters, improving those characters and discussing specific rules and how it may impact our future campaigns. Somehow, it felt like we were more interested by the universe surrounding Dungeon & Dragons then by playing it per say.
When I moved away from my hometown to go further my studies, I left my books in boxes at my parents place and never really played D&D or other pen and paper roleplaying games since.
This incursion into my geeky past wasn’t just meant to be entertaining, it’s intended to also highlight the fact that with experience I’ve learned that, to get up and running faster and jump right in the campaign, you need to plan and get organized for it.
In the web development world, system automation often tends to be the discipline of people in the operation world - often called ops or devops - were it is a common best practice to have your server, deployment and continuous integration systems scripted and their installation and configuration replicable. It won’t be a surprise to anyone that most frameworks used to orchestrate those installation are server centric and focused on concepts related to such a paradigm. Chef, Puppet, Ansible and Salt are all good examples of those.
And there’s us, web developers, who are building site and apps living on those infrastructure.
With the necessity to often have to mimic those environments on our local machines there is a definite need to also come up with a proper documentation - through scripts - and orchestration of the installation and configuration of all those tools.
Somebody already said it better than I could on his personal blog:
“Anybody could take a stab at rolling their own collection of Puppet manifests to manage their laptop or their corporate install base. That's actually exactly what GitHub did to create Boxen. Having tried (and failed) at doing just that before I was pretty impressed when I gave Boxen a test drive. GitHub has not only provided a system that "works for them"; they have also managed to engineer a reasonably extensible solution for a very complex problem.”
So now, as web developers, we have a framework built on sound foundations - Puppet - but with a local machine setup focus in mind: Boxen!
It started as a personal grassroots initiative when I joined and decided I wanted to step up my game while configuring my own work environment. It is now being used by most of our Montreal development team and we’re working towards improving it and leverage it’s project bootstrap capabilities to the fullest.
You can look forward to a followup to this post where I will delve deeper in how we use Boxen at Appnovation. And make sure you have your d20 ready for it!