Earlier this week, we ran a story on GoboLinux, and the distribution's effort to replace the Filesystem Hierarchy Standard with a more pleasant, human-readable, and logical design. A lot of people liked the idea of modernising/replacing the FHS, but just as many people were against doing so. Valid arguments were presented both ways, but in this article, I would like to focus on a common sentiment that came forward in that discussion: normal users shouldn't see the FHS, and advanced users are smart enough to figure out how the FHS works.

There are numerous problems with that sentiment. In fact, the last people I would expect such a statement from is from open source and Free software enthusiasts, who generally believe that it are the users who should control and understand their computers and the software that runs on them, instead of big, greedy, and scary corporations. The statement above goes directly against that entire noble idea, hence my surprise to see the statement made so often.

The statement can be broken up in three parts, all of which raise serious questions:

Normal users shouldn't see the FHS,

and advanced users are smart enough to figure out

how the FHS works

I want to focus on the third part first. "How the FHS works". As has been shown by numerous people in the thread to the GoboLinux story, but also in various articles around the web, the Filesystem Hierarchy Standard does not work. In theory, the system sounds like it could work. The standard exlains which files should go where, so that both developers and users can find these files, as long as they know how the standard works.

In practice, the situation isn't as pretty and idealistic. The reality of things is that every distribution has their own rules, and organises their files in a way they deem fit. This effectively means that as soon as you figured out how the filesystem is laid out in distribution Abc, you'll have to re-learn various things before you know how distribution Xyz lays out its filesystem. And to make matters worse - the standard itself allows for various exceptions, such as X11R6 being placed in /usr.

Because of this, the FHS can barely be regarded as a standard. How much of a standard is a standard that nobody follows (ever seen the /srv directory?)? Consequently, the merits of the FHS are debatable. Its goals are to make various UNIX systems' filesystem layouts consistent with one another, but there is no consistency among Linux distributions - let alone other UNIX systems such as Mac OS X or the BSD systems. In other words, how valuable is the FHS in reality? Does it really provide the often-advocated advantages?

Which brings me to the second part. "And advanced users are smart enough to figure out". I am an advanced user. I know my way around stuff. I know how to get tricky things done in Linux, Windows, Mac OS X, and my personal favourite, BeOS. Still, I would greatly appreciate a human-readable filesystem. It would make my life so much easier if I didn't need to decipher cryptic acronyms and learn ten billion million exceptions for each specific UNIX variant.

Why is that just because I'm an advanced user, I need to painstakingly invest so much time in learning things that can be done so much easier? How much easier would Windows maintenance be if the /Windows directory actually made sense? How much easier would it be to fix a broken Ubuntu install if files were located in directories whose names actually explain what they do?

So, why do so many people resist the idea of making computers easier to use not just at the surface, but also at the core? Why do I, as an advanced user, need to learn a lot of difficult and cryptic things? Is it because the developers want to take revenge on other people because they had to learn it themselves too? A sort of geek hazing? Creating job security?

This leaves me with the first part of the statement, which also happens to be the most important one to me. "Normal users shouldn't see the FHS." I'll keep it plain and simple.

Why not?

Seriously. Why shouldn't normal users see the original directory structure on their machines? Are we purposefully trying to prevent users from learning how their systems work? Isn't the goal of Free and open source software to allow users to take ownership of their systems again, contrary to proprietary software such as Windows? If that's the case, than why do we still hang on to an incomprehensible directory structure that pre-dates the first ice age?

If we make the directory structure easier to understand and to manage, by making it human readable and clear, we will make it easier for normal folk to move from merely using their computers, to actually understanding them. I'm harping on the directory structure here, but of course, this goes for a lot more parts of a modern operating system.

Designing for developers, by developers

All three major operating systems today are designed for developers, by developers, and it shows in almost every aspect of computing except the very surface. Developers have stacked layer upon layer upon layer just to make it possible for ordinary people to use these complex beasts we call operating systems. Funnily enough, by providing all these layers, developers actually flat-out admit operating systems are anything but designed for users. If they were actually designed for users from the ground up, they wouldn't need all those layers. Those layers are the developers saying: "look, we know we have an incomprehensible messy system that even we ourselves barely understand, but instead of actually fixing the problems and making our operating systems better, we'll just staple another layer on top to hide the ugliness."

The holy grail of the coming ten years of the operating system world is to make them not only pretty on the surface, but also pretty underneath - logical, structured, human-readable. This is exactly what I've been trying to do with my theoretical program management system, which I designed from the ground up to be easily usable by all those hypothetical grandmothers, while still offering advanced functionality that no other operating system offers. I strongly believe that this is the next big challenge for developers on all sides - Windows, Mac OS X, or Linux.

We got computers to work. We got them in every home. We got them to be usable. The next big step is to make them manageable.