Tools versus frontends in systems programs
I feel that people writing programs for system administration should be forced to make a choice: are you writing a tool or a frontend? 'Both' is not a good answer, because nine times out of ten that leads to a program that does neither very well and irritates everyone, leading to things like Friday's entry on why apt-get is not my favorite program.
A system administration tool is is a reusable building block, part of the larger system. It's designed to be easily used by scripts and other programs, as well as by system administrators. By contrast, a frontend is 'user friendly' (and program-hostile): chatty, redundantly informative, and often interactive.
If you think about system administration programs this way, building a frontend without an accompanying set of tools, making it the only way to do something, is clearly a mistake. Also, tools are clearly more important than frontends; you can always build a frontend on top of tools, but you can't build tools on top of a frontend very easily (if at all).
Tools are vitally important because people are always needing to administer systems in new ways you didn't expect. If they have tools, they can; if they don't, they're trapped. (If you think you know everything that people are going to need from your program to administer their systems, you're fooling yourself.)
For all its issues, Red Hat's
rpm is a tool, not a
frontend. This means it is easy to build other systems around the core
it provides (whether directly as a command or through using the RPM
libraries); in turn this has created a pile of frontends and other
tools based on this core, from up2date and yum to our local tools for
automated RPM management across a large number of systems.
A big part of my issues with apt-get is that apt-get is more of a frontend than a tool, and there is no tool program for doing the same things (or at least, if there is it is hideously underdocumented). This means that people who want to use apt-get as part of larger processes are forced into contortions that are at best awkward.