Seamless Installation: Convention Over Configuration
Today, I will not take the role of the architect that knows how to deliver applications but instead I will play the end-user part.
In a previous post, I was tasked to put a whole development infrastructure in place. A continuous integration server was indeed in order. I took a look at some, but I was really dumbfounded when I tried Hudson. Features are not what stroke me at that time (although Hudson’s features did serve me well) but only the ease of installation.
Let’s look at a traditional installation. The steps are the following:
- Download the installer
- Launch the installer
- Accept the security warning (I’m on Windows, guess Nix users would probably sudo before)
- Follow the wizard numerous steps (which probably includes accepting a license)
In turn, launching the Hudson test drive is a two-click process, the only thing needed being a local JVM:
- Click the Java Web Start link
- Accept the security warning
Let’s not dive into the technical details on how it is done. I’m only interested with the results: with only two mouse clicks, Hudson launches its console and you can start working. From a user point of view, that’s real value! Now, I understand that such an installation is just for example purposes; yet, this is really nice to have a product ready to run in such a few steps.
Maven invented the convention over configuration so that build managers would not have to write the same tasks over and over for each of their projects. Learning its lessons from EJB2, Sun took the same path for EJB3: developers now really have less code to write. Build managers and developers are end-users in these processes. As the product end-user, I would really like to install it from some common sense default configuration. If needed, I should be able to overload this convention (Hudson does not provide this overloading because the goal is to test the product quickly).
As an architect, I think the installation domain area is pretty uncharted. We are much focused on clean code, maintenability, design and such. Some of us even sometimes explore the interface and ergonomy of the product. All of these are fine and needed but not enough IMHO. Think of the installation process too and of Hudson’s example so that we, as end-users, can benefit from seamless installation.