CHIMIT (2007,2008,2009) is a conference for researchers that study the habits and workflows of IT workers in an effort to find ways to make them more productive (they call this "human factors in IT"). Anyone trying to make my work easier is alright in my book.
At the most recent conference I moderated a panel of system administrators who had been in the audience watching the first day of presentations. It was our turn to "speak up" about what we had seen.
One of the useful things that came out of this panel was a list of "signs that a product was designed to be easy for system administrators to install and maintain."
Here is a short version of the list:
- as a command line interface
- has an API so it can be remotely administered
- has a "silent install" mode so it can be cleanly deployed
- has a config file that is ASCII so it can be stored in a revision control system; and the same file can be input INTO the system.
- has a clearly defined way to do backups and restores.
- has a clean way to monitor for up/down issues (know when there is an emergency) AND vital statistics that relate to scaling/latency (know how to debug slowness) AND historical monitoring (be able to predict far in advance when we need to buy more capacity)
What would you add to this list?
I'd add a couple things:
* Be amenable to packaging or installation in another directory. I'm thinking of a couple packages I've had to work with (one programming library, one protein modelling tool) that insist on being run/linked to from the directory where they're unpacked or compiled. Want to turn it into an RPM, or copy it into /opt? Sorry...not supported. (The programming library, in particular, produced a spaghetti-like mess of symbolic links, only some of which used relative paths, during compilation. You ended up with a 1.5 GB directory that couldn't be moved.)
* Do not insist on being run as root -- and if you do, be explicit about it. The documentation for one scientific package hinted that you could run it as an ordinary, non-privileged user -- and since it was basically a web-based search engine, there's certainly nothing requiring root privileges. I set up everything to run as a separate user, only to find out that much of the package's initialization assumed you were running as root and hard-coded that everywhere ("ssh root@othermachine -t 'install_me'"). My bad for not checking beforehand; their bad for using root and not saying so.
* For bonus points, generate an installation config file that's based on the interactive one you just did. I'm thinking of how Red Hat/CentOS will drop a kickstart file into your newly-installed system, which lets you use that as a starting point for new installs or further customization. I wish that Red Hat Directory Server did the same.