I will warn all of the readers of my blog in advance, THIS WILL BE A RANT - I am stepping up onto my soapbox currently.
I recently had reason to attempt to install and use ReviewBoard - a software review management system. ReviewBoard is written in Python, on the Django CMS framework. In and of itself, ReviewBoard caused me no specific pain - now installing it into my environment is a completely different story. I will freely admit, additionally, that the company that I work for currently has chosen Solaris as the platform of choice for their systems which added to the complication and heartache I had attempting to install ReviewBoard, in fact making the install nearly impossible.
ReviewBoard was easy to download - Check in their Favor
ReviewBoard works on several different versions of Python - Check in their favor
ReviewBoard has a bunch of Python package dependencies - and here is where the issues begin.
Python has precious few pre-built things for Solaris (SPARC or x86). This means that ReviewBoard needs to compile a bunch of libraries in order to function correctly. Those libraries were not available in the ReviewBoard download - the were not bre-bundled in the ReviewBoard tar, they had to be downloaded. NOW - ReviewBoard does have the knowledge to go and attempt to grab those dependency downloads for you so you don't have to go track them down yourself. Yea! I am however much more of the option that the software should have the 'Version' of the things it needs to run included with it - the software should not be 'required' to download it in order to work. This requirement is about its specific software dependencies and not tools like MySQL that software might depend on. Those are requirements to setup the system, no specific dependencies in my definition.
OK - Now I have a bunch of stuff to compile, that failed. Solve the libs issues, build, fail, rinse and repeat for HOURS. Eventually get the whole thing to compile correctly. ReviewBoard is now installed - but you still have to setup a 'web' site that contains ReviewBoard. The task also had dependencies that had to be worked out - and did not work out of the box. Even if it was Solaris - the whole thing should have been easier.
OK - Now there is a ReviewBoard site that is setup, you can hit it with a browser, but it still needs to be configured with interesting things like where is your current source code repository. Login to the ReviewBoard site you set up, attempt to configure the site and "LD LINKER ERROR" missing a specific library in the OS. Which library is missing? What additional thing needs to be installed? Was it a compile error even though it didn't report any problems?
In the end - I never really got it working. This was probably due to Solaris more than ReviewBoard specifically, but there were a-lot of problems. I feel strongly that ReviewBoard as a site should have worked OUT OF THE BOX, and not required as much work on my part. I imagine also that there were design decisions that would have effected my specific experience that were made in the past about how ReviewBoard would be put together - like the choice to use pysvn API integration rather than using the command line client and parsing output.
When you want to build something for someone else - the easier you can make the setup/install for them, the more they will see the care you took and the more likely they are to persevere when it comes to using the tool. However when the experience is like what I experienced - I am left feeling like I never want to look at ReviewBoard again. Chose the simplest thing that removes dependencies from your tool to make the install even easier. First impressions are EVERYTHING, if peoples first experience is a shitty one, even if it is not specifically the fault of the software attempting to be installed - that bad view will be pervasive and stick with you.