My Broadband service was fixed on Monday Evening. Unfortunately for me, though, part of the troubleshooting process involved exchanging my old cable modem for a new model, and my old firewall was unable to get an IP address via DHCP from the new cable modem. I basically had to build a new firewall system and put it into place. This process has been long and frustrating because I chose the latest version of Linux to use for my firewall, and that version of Linux is even more user friendly than ever.

<rant>

Don't get me wrong; I understand that ordinary users need user friendliness. I want to see Linux become more widely accepted, and I know that most users don't want to learn the ins and outs of networking and Unix-like systems. I don't really think most users should have to learn such things. What I don't understand is why perfectly competent programmers keep making such stupid decisions about how to make Linux more user friendly.

There is a fundamental principle that is important to consider when trying to understand the hazards of user friendliness: A Graphical User Interface (GUI) is nearly always the least expressive interface possible to accomplishing a complex task. Every tiny detail of everything that can be pointed to, moused over, or clicked on has to be coded; The work involved in constructing a GUI to manage something which is complex, technical, and extremely non-user-friendly is staggering. In my case, there are a number of network related details I wanted to configure on my firewall, but the writers of Yast2, the GUI based user friendly systems administration tool that comes with SuSE Linux, shouldn't write a GUI tools that just configures everyone's system to be the way I want my firewall. Instead they must write Yast2 to give users a lot of configuration options. And, while it might take me a few seconds to put a command in a shell script for one small part of my configuration, it may take hours to program a GUI to safely and correctly give a user the flexibility he needs to make his choices about that small part of his configuration. GUIs are usually only good at doing the very specific things that the GUI writers expected their users to want to do, because it takes so much work just to get GUIs to handle even that much.

The programmers who write system administration GUIs like Yast2 have a lot of incentive to find ways to organize the problems they must solve so that they can re-use code, and they often choose architectures that are oriented too specifically toward common configurations to the detriment of less common configurations. Since I use computers to do less common things, I find that system administration GUIs help me with a very small fraction of the configuration problems that I face. Most of the time, the odds of the GUI programmer anticipating my needs or even something close to my needs are quite slim.

I would be happy if Yast2 were simply useless to me, but in my case, Yast2 is far worse than useless. First, it appears to be the only tool that SuSE offers for managing security related updates to my system; And second, Yast2 is designed to rebuild most of my system's configuration every time a substantial change is made. This means that, if I do any configuration by hand, every later change I make to my system with Yast2 may wipe out any changes I made without Yast2. It's not enough to make the changes I want by hand. To be safe, I have to explore a complicated system that Yast2 uses to build my configuration and integrate the changes I want to make into that system, so that when Yast2 rebuilds my configuration, it builds in my customizations, even though Yast2 was never designed to support most of those configurations.

For those of you who want to use computers to do very normal things, I'm sure user friendliness must be nice, and I really am glad it's available to you. For me, user friendliness almost always means my job is going to be at least ten times as difficult as it would be without all that friendliness.

Ideally, a GUI should be built *on top of* the existing character interface, parsing the existing config file, and restoring said config file to a useable, readable state when the GUI is done.

The authors of YaST... chose poorly. I recommend SUSE for new Linux users, because of the GUI.... but once they get to where they want to do more, I start pushing Debian. It's smaller, lighter, and the GUIs, if they exist, do the Right Thing.

There will always be the basic Chevy with an automatic, and the highly-tuned open-wheel racer with the unsynchronized gearbox.

distributions

I've heard some good things about debian, and I may try it, at some point. We're starting to use SuSE at work, since it's backed by IBM and it runs on a mainframe. So there's no getting around the need to learn about SuSE for work, whatever the merits of other distributions.

My problem with Debian is that sometimes the multiple layers of virtualization make it difficult to know for sure what's configured by what where. The alternatives system is great, but it's not transparent enough to avoid making life difficult for people who want to do it by hand.

Aroo?? I never had to deal with /etc/alternatives at all. Just let the packaging system do whatever it wanted.... of course, I never wanted to put more than one of whatever it was doing on the system anyway.... most of the time the packages either conflict in dpkg or do the right thing....

Yes, deb does have a non-"standard" layout, what with /etc/default and /etc/network.... but I've learned to *like* those idiosyncracies. What I *really* like is the fact that I can say "apt-get install postfix" and have a working MTA, and I mean *working*, properly configured and started, before I get the shell prompt back. Sure, it won't configure SASL and passwords, but you really should be doing that only once per network... and so many other packages are well-packaged like that.

To each his own, though. What're you running these days, still Slack? elfs insists on running Gentoo even on underpowered hardware... I couldn't stand that. But speaking of compiling, make_kpkg just totally rocks... make config, make_kpkg, presto! new kernel packages. Try doing that on any other distro.

babylon5 still runs something that was long ago Slackware 7, yes. When Slackware 9.0 came out and I tried to upgrade babylon5 to Slack9, it wouldn't work, because too much of Slack9 wasn't new enough to support the things I was doing.

GUIs are usually only good at doing the very specific things that the GUI writers expected their users to want to do, because it takes so much work just to get GUIs to handle even that much.

[....]

I would be happy if Yast2 were simply useless to me, but in my case, Yast2 is far worse than useless. First, it appears to be the only tool that SuSE offers for managing security related updates to my system; And second, Yast2 is designed to rebuild most of my system's configuration every time a substantial change is made. This means that, if I do any configuration by hand, every later change I make to my system with Yast2 may wipe out any changes I made without Yast2. It's not enough to make the changes I want by hand. To be safe, I have to explore a complicated system that Yast2 uses to build my configuration and integrate the changes I want to make into that system, so that when Yast2 rebuilds my configuration, it builds in my customizations, even though Yast2 was never designed to support most of those configurations.

Getting backstabbed by Yast and its cousins like this is exactly why I have little personal use for distributions like SuSE, Red Hat et al. In their zeal to make the system administerable for the 80% of cases by pretty, easy, little-technical-knowledge-required point-and-drool wizards, the authors neglect to consider that they've made the system difficult or impossible to administer without using their GUIs. The official position of some of the Red Hat web training courses I beta'd is that there is only one way to perform any given task, and it involves the GUI. (Still another reason I've remarked that Red Hat has become the Microsoft of Linux.)

There is something to be said for making it possible for people lacking in technical skills to use, at a basic vanilla level, the most accessible parts of a complex system requiring in-depth technical skill to truly master. But if in doing so you've made it a needlessly frustrating and precarious task for those who have the technical skill to use the system as they choose to in the ways that require their skills, then you've thrown the baby out with the bathwater.

There is something to be said for making it possible for people lacking in technical skills to use, at a basic vanilla level, the most accessible parts of a complex system requiring in-depth technical skill to truly master. But if in doing so you've made it a needlessly frustrating and precarious task for those who have the technical skill to use the system as they choose to in the ways that require their skills, then you've thrown the baby out with the bathwater.

Which is exactly what I like about Deb. There are GUI tools... but they're built on top of the existing config files, and do the Right Thing.

Programmer Friendliness

User friendliness is a fine thing, but it is not substitute for programmer friendliness. And in the open source world, attracting good programmers to a system is critical if you want them to write good applications for all those users. It sure seems short sighted in the linux world to sacrifice programmer friendliness on the alter of user friendliness.