Why Do We Hold on to the FHS?

Ask OSAlert is apparently quite popular among you guys; the questions just keep on coming in. Since David took on the first two, we decided to let me handle this one – it’s an area I’ve personally covered before on OSAlert: file system layouts. One of our readers, a Linux veteran, studied the GoboLinux effort to introduce a new filesystem layout, and wondered: “Why not adopt the more sensible file system from GoboLinux as the new LSB standard?”

Basically, there are two reasons why we’re still stuck with the Filesystem Hierarchy Standard (FHS). The first is a perceived benefit, the other is the real reason.

The perceived benefit is that the FHS should provide a standardised file system layout across various UNIX-like operating system. This would mean that users and developers alike know exactly where to find which files. Sounds like a good idea, right?

It actually is a good idea. It’s just too bad that no one actually cares about the FHS, and places their files wherever they want. Not only do different operating systems use different implementations of the FHS, but even different Linux distributions use different implementations. On top of that, the standard itself isn’t strict, and allows for exceptions to its own rules (X11R6 being placed in /usr, anyone?). What good is a standard nobody adheres to?

Exactly, no good at all. So, this is a perceived reason why everybody still clings to the FHS. What is the real reason?

The real reason we’re not moving ahead to greener pastures in file system layout land is because of inertia. The FHS is so entrenched in the UNIX/Linux world, that it’s going to be very hard to move away from it. Not only would it be virtually impossible to get all the noses to point in the same direction (we can’t even agree on the implementation details of the FHS!), there would be a massive uprising among people who still believe the FHS is serving its intended purpose just fine (even though it doesn’t).

In the GoboLinux article on OSAlert I summarised the FHS situation as follows:

Us Linux, BSD, and (yes) Mac OS X users are still stuck with a system that predates the coming of Christ, and the only reason we still have it is because people are too afraid to make the big step and come up with something that is – in every possible way – better than the FHS, but still compatible. In a very brave and commendable effort, GoboLinux has done just that, but instead of being praised for bringing the filesystem structure of Linux systems to an acceptable, modern level, they get ridiculed and frowned upon as if they are some sort of heretics. To me, it is absolutely mind-boggling that distributions like openSUSE, Fedora, and Ubuntu call themselves “user-friendly” while still maintaining a directory structure that requires a degree in computer history to even remotely understand – including all its exceptions and quirks.

To answer your question succinctly: developers are not replacing the FHS with something that actually works because they still believe in the ideals of the FHS. In addition, it would be very hard to get everyone to agree on the FHS’ replacement.

With “something that actually works” I mean a file system layout that is:

  • Human-readable
  • Logical
  • Strict (does not allow for differing interpretations)
  • Translatable into other languages
  • Not legacy encumbered
  • Not hidden by abstraction layers

Rests me to say that the UNIX/Linux world isn’t the only one suffering from messy and incomprehensible file system layouts – Windows suffers from it just as much.


Do you have a burning question for OSAlert on any topic ranging from OSes and computing to science and geek culture? Our team of self-proclaimed experts will answer your question, and if it falls outside of our domain expertise, we’ll try to track down a real expert to help out. And of course, our responses will always be supplemented by further advice from OSAlert readers in the comments. Contact us now! (Please include “Ask OSAlert” in the subject)

227 Comments

  1. 2009-05-28 7:37 pm
    • 2009-05-28 7:39 pm
      • 2009-05-28 7:46 pm
        • 2009-05-28 7:52 pm
          • 2009-05-28 7:55 pm
          • 2009-05-28 9:24 pm
          • 2009-05-28 9:59 pm
          • 2009-05-28 10:04 pm
          • 2009-05-28 10:12 pm
          • 2009-05-29 10:58 am
          • 2009-05-29 11:05 am
          • 2009-05-29 11:28 am
          • 2009-05-29 3:19 pm
          • 2009-05-30 5:18 am
          • 2009-05-30 5:20 am
          • 2009-05-30 4:16 pm
          • 2009-05-28 10:24 pm
          • 2009-05-28 8:10 pm
          • 2009-05-28 8:29 pm
          • 2009-05-28 9:07 pm
          • 2009-05-28 9:26 pm
          • 2009-05-28 9:39 pm
          • 2009-05-28 9:46 pm
          • 2009-05-28 10:22 pm
          • 2009-05-29 8:18 am
          • 2009-05-28 10:50 pm
          • 2009-05-29 11:20 am
          • 2009-05-30 5:48 am
          • 2009-05-28 9:47 pm
          • 2009-05-28 9:58 pm
          • 2009-05-28 9:54 pm
          • 2009-05-29 12:04 am
          • 2009-05-28 9:57 pm
          • 2009-05-29 4:58 pm
          • 2009-05-28 11:01 pm
          • 2009-05-28 9:10 pm
          • 2009-05-28 10:41 pm
          • 2009-05-28 10:46 pm
          • 2009-05-28 10:59 pm
          • 2009-05-30 2:31 am
          • 2009-05-28 11:00 pm
          • 2009-05-29 11:07 am
          • 2009-05-29 11:13 am
          • 2009-05-30 3:49 pm
          • 2009-05-29 11:14 am
          • 2009-05-29 11:17 am
          • 2009-05-29 1:39 pm
          • 2009-05-29 1:49 pm
          • 2009-05-30 5:37 am
          • 2009-05-30 5:32 am
          • 2009-05-30 6:18 am
          • 2009-05-28 8:47 pm
          • 2009-05-29 12:53 am
          • 2009-05-28 9:18 pm
          • 2009-05-29 9:29 am
          • 2009-05-29 1:35 pm
          • 2009-05-29 8:15 pm
      • 2009-05-28 9:20 pm
    • 2009-05-28 10:22 pm
      • 2009-05-28 10:57 pm
      • 2009-05-29 4:48 am
    • 2009-05-29 12:07 am
    • 2009-05-29 6:13 am
      • 2009-05-29 2:54 pm
    • 2009-05-29 12:49 pm
  2. 2009-05-28 7:45 pm
    • 2009-05-28 7:52 pm
  3. 2009-05-28 8:44 pm
    • 2009-05-28 10:28 pm
      • 2009-05-29 11:13 am
        • 2009-05-29 11:45 am
          • 2009-05-29 11:51 am
          • 2009-05-29 12:26 pm
          • 2009-05-29 12:53 pm
          • 2009-05-29 5:19 pm
  4. 2009-05-28 9:00 pm
    • 2009-05-28 9:55 pm
      • 2009-05-29 11:52 am
        • 2009-05-29 3:18 pm
        • 2009-05-31 1:15 pm
  5. 2009-05-28 9:14 pm
    • 2009-05-28 9:36 pm
    • 2009-05-28 11:19 pm
      • 2009-05-29 4:38 pm
    • 2009-05-29 11:25 am
  6. 2009-05-28 9:23 pm
    • 2009-05-28 9:56 pm
    • 2009-05-28 10:37 pm
  7. 2009-05-28 9:35 pm
    • 2009-05-31 1:26 pm
      • 2009-05-31 4:15 pm
        • 2009-05-31 11:45 pm
  8. 2009-05-28 10:38 pm
  9. 2009-05-28 10:41 pm
    • 2009-05-29 1:44 am
    • 2009-05-29 4:25 am
  10. 2009-05-28 10:53 pm
  11. 2009-05-28 11:04 pm
    • 2009-05-30 1:39 am
  12. 2009-05-28 11:06 pm
    • 2009-05-29 4:37 am
      • 2009-05-29 5:16 am
      • 2009-05-29 3:22 pm
  13. 2009-05-28 11:07 pm
    • 2009-05-29 3:41 am
      • 2009-05-29 5:23 am
    • 2009-05-29 4:54 pm
  14. 2009-05-28 11:29 pm
  15. 2009-05-28 11:53 pm
    • 2009-05-29 12:58 am
      • 2009-05-29 5:46 am
        • 2009-05-29 6:03 am
          • 2009-05-29 9:37 am
          • 2009-05-29 10:05 am
          • 2009-05-30 5:12 am
        • 2009-05-30 3:28 am
          • 2009-05-30 4:52 am
          • 2009-05-30 5:18 am
          • 2009-05-30 7:02 am
          • 2009-05-30 8:46 am
          • 2009-05-30 6:25 am
    • 2009-05-30 2:40 am
      • 2009-05-31 4:51 pm
  16. 2009-05-29 12:49 am
    • 2009-05-29 3:49 am
  17. 2009-05-29 1:26 am
  18. 2009-05-29 1:59 am
  19. 2009-05-29 2:27 am
    • 2009-05-29 3:44 am
      • 2009-05-29 5:13 am
        • 2009-05-29 8:02 am
      • 2009-05-29 5:14 am
  20. 2009-05-29 4:13 am
    • 2009-05-29 7:58 am
      • 2009-05-30 4:30 am
  21. 2009-05-29 4:33 am
    • 2009-05-31 5:42 pm
      • 2009-06-02 3:27 pm
        • 2009-06-02 6:19 pm
          • 2009-06-02 9:39 pm
  22. 2009-05-29 4:35 am
  23. 2009-05-29 4:45 am
    • 2009-05-29 11:27 am
    • 2009-05-29 11:39 am
    • 2009-05-30 2:54 am
  24. 2009-05-29 4:52 am
    • 2009-05-29 5:27 am
      • 2009-05-29 6:28 am
        • 2009-05-29 6:50 am
          • 2009-05-29 8:10 am
          • 2009-05-29 11:35 am
          • 2009-05-29 11:40 am
        • 2009-05-29 7:09 am
          • 2009-05-30 11:11 pm
          • 2009-05-31 2:40 am
    • 2009-05-29 5:11 pm
  25. 2009-05-29 6:03 am
    • 2009-05-29 6:31 am
      • 2009-05-29 6:37 am
        • 2009-05-30 4:07 am
      • 2009-05-29 6:40 am
    • 2009-05-30 3:50 am
      • 2009-05-31 10:45 am
        • 2009-05-31 4:13 pm
          • 2009-05-31 4:23 pm
          • 2009-05-31 6:09 pm
          • 2009-06-01 12:01 am
          • 2009-06-01 2:07 am
  26. 2009-05-29 6:13 am
  27. 2009-05-29 8:09 am
  28. 2009-05-29 8:22 am
  29. 2009-05-29 8:49 am
    • 2009-05-29 9:20 am
      • 2009-05-29 3:47 pm
      • 2009-05-30 4:57 am
    • 2009-05-29 4:45 pm
      • 2009-05-29 5:04 pm
        • 2009-05-29 7:16 pm
          • 2009-05-30 2:31 am
          • 2009-05-30 3:28 am
          • 2009-05-30 10:50 am
          • 2009-05-31 2:53 am
  30. 2009-05-29 10:10 am
  31. 2009-05-29 10:55 am
    • 2009-05-29 11:27 am
      • 2009-05-29 5:30 pm
    • 2009-05-29 12:42 pm
      • 2009-05-29 3:26 pm
        • 2009-05-29 3:35 pm
  32. 2009-05-29 11:14 am
    • 2009-05-29 11:17 am
      • 2009-05-30 8:45 am
  33. 2009-05-29 11:24 am
    • 2009-05-29 3:23 pm
    • 2009-05-30 2:16 pm
      • 2009-05-30 5:47 pm
        • 2009-05-30 7:52 pm
  34. 2009-05-29 12:47 pm
    • 2009-05-29 3:30 pm
      • 2009-05-30 3:55 am
    • 2009-05-31 6:02 pm
      • 2009-06-01 2:03 am
        • 2009-06-01 2:33 pm
      • 2009-06-01 12:30 pm
  35. 2009-05-29 1:02 pm
  36. 2009-05-29 1:57 pm
    • 2009-05-29 3:03 pm
    • 2009-05-30 8:47 am
  37. 2009-05-29 5:30 pm
    • 2009-05-31 6:06 pm
  38. 2009-05-29 11:29 pm
  39. 2009-05-30 7:38 am
    • 2009-05-30 4:19 pm
    • 2009-05-30 6:56 pm
      • 2009-05-30 7:28 pm
        • 2009-05-31 6:10 pm
  40. 2009-05-30 8:01 am
  41. 2009-05-31 5:32 pm
  42. 2009-06-01 9:04 pm
    • 2009-06-02 12:03 am
  43. 2009-06-02 9:01 am