There a many solutions out there for this and I found Vagrant the most usable for our environment. I started setting up a few projects to see how I might create these development environments that I had in mind. Pretty quickly I was ready to actually get stuff done. In fact reading Vagrant docs, working through a quick proof of concept and then downloading a few virtual machine boxes took only a few hours before I felt comfortable. That’s however where the fun stopped.
The next step was to create each of the development stacks on a Vagrant box. I decided to go with Chef as my provider and setup a few custom cookbooks and recipes. I needed a few virtual machines for each developer: an nginx server, Adobe CQ server, WebSphere Portal server and and a static asset server. Most of these recipes were easy to write and in fact I got all but one of them done within a day.
The WebSphere Portal virtual machine still isn’t done. It’s been a week of all my spare time. I’d guess it’s about 20hrs or more now.
Here is just a very quick list of the pain I’ve suffered trying to get this to work:
- Downloading install files.
- Downloading developer friendly versions of Portal (LOL).
- Downloading a proper 32/64 bit version.
- Downloading close to 2Gb worth of installation packages.
- Locating installation documentation.
- Realizing that the installation is actually 5 installations.
- All 5 installation methods are different.
- Debugging by reading gazillion lines of log files.
- Log files are located in more than 5 locations.
- Log files are all written in different formats.
That last one is the most infuriating. The fastest I’ve gotten the WebSphere installers to work is around 20 minutes. The worst part is that those fast installations were never complete or never worked. Usually it’s 45 minutes. The next biggest pain is the debugging. In almost all cases the installer will fail with very little information about what exactly failed. I got many error codes (233, 255, 237 etc) and found almost zero places on the interweb documenting how to resolve these. In fact I barely found documentation about what they mean. On many occasions I was simply reading <code>install.sh</code> to parse what happened.
The irony of all of this is that at I set out to remove developer friction. And I think it will be great when I’m done. But I’ve suffered a ton of friction in doing this. More than I thought I would. I blame IBM (seriously you guys – I’m betting you have a terabyte of documentation online and not a goddamn bit of it is useful – please prove me wrong). Adobe doesn’t get off scott free here, but at least I was able to get a virtual machine built with little effort.
By the time I’m done with this I will probably be able to say I’m an expert in getting WebSphere Portal installed on a server. Which is totally sad. Because I could not care less about that. What I really want to know is how to build web apps with it.
And that is developer friction.