The server GUI dilemma
Among the many comments on my last article there were calls for a graphical administration interface, i.e. providing by default a desktop environment on the server (like Microsoft or Redhat do) or some web-based admin application. This is an often required feature, and so far we stood firm on the desktop environment part, and did not really invest in integrating a specific web-based admin tool by default.
The reason behind this is that we think the command-line interface is great. We want everyone to use it. CLI is good for you: it allows easier reproduction (I can remember snapshotting every tab of Windows GUI tools to document the changes necessary on a Windows server), it allows scripting. SSH and screen are great. That’s the way things should be done. Most of all, it allows to keep the server stack focused on what it has to do (serve) rather than spending resources running a desktop environment. That’s key to performance and security, and fits well in a growing virtual machines world.
Why do people want admin GUIs ? I hope it’s not to open Firefox on the server console. I guess it’s not to have multiple windows. To get notifications without having to check the logs for events ? That makes sense, but we can still address that in the CLI, as evidenced by Dustin Kirkland’s work on screen-profiles. Status dashboards ? I agree with that. Colorful graphical reports do indeed convey better information than a text-only report. But I think what people are really after is an easier learning curve.
The learning curve for Ubuntu Server is quite steep. Even if most packages come with sane defaults, setting them up usually requires reading a good HOWTO, if you can find one. And for customizing what the server will really do, in most cases our Server Guide won’t go deep enough in the subject, while the upstream documentation might go too much in details.
I think the missing link is discoverability. GUI admin tools allow to play around with the interface and discover what it can do. And it’s true that it’s quite easy to setup Microsoft SQL Server by just exploring the GUI, right clicking on some node items on its admin interface. But it’s also true that when this interface will show its limits those same users will probably have to call Microsoft consultants for help.
Our challenge here is to provide discoverability while not shielding away the users from the CLI tools. Have an easier learning curve while still teaching the user the right way. How can it be done ? For example by providing a task-oriented CLI tool that will show you what you should have executed in the CLI to get the same result. Next time, type this directly. To automate that, just put that line in a script. That’s what SMIT did in AIX. Trying to educate the user while providing an accessible admin tool.
You might reply that you don’t really care, you don’t want to learn stuff, you just want an appliance with limited predetermined choices on a web interface that “just works”. I see value in that, and I wouldn’t prevent such interfaces from running on top of Ubuntu Server. But making it the default, primary way of administering Ubuntu Server ? No. I prefer the server platform to empower our users, rather than limiting their options.