Why Linux Isn't The Open Source Desktop Answer

by Jon 8/18/2007 6:59:00 PM

On the PC, Windows wins, Linux loses, and I'm not even cheering for either side. The Mac is just off on the side, looking pretty like a squad of cheerleaders, but I have my eyes fixated straight up at the stars above. Even though I am sitting on the Windows side of the field, with my money invested in the team only because that's where I know the money will come back to me, I'm feeling bummed out, if more than just bored with this two- or three-sided competition.

Let's face it, there are only three major computer operating systems having any relevance in the modern personal computer markeplace: Mac OS, *nix, and Windows. And since Mac OS is, as of OS X, a rewrite built on Mach, a variant of *nix, there are actually only two, but since so much originality remains invested in the Mac environment it deserves recognition of its own.

And then there was BeOS, a truly original operating system that was complete, thorough, fast, cool, beautiful, happily geeky yet user friendly enough for my mother to use, but tragically lost to a failure to win the market. The intellectual assets of its demise went the way of mobile computing, which reminds me a great deal of the exact same process that was experienced by GEOS (my first exposure to a *real* user operating system) a decade prior, which in my view was the most innovative output of pure genius ever to execute on 64k bytes of silicon. GEOS gave the early Macintosh a run for its money, much like BeOS did ten years later, but both and especially the latter struggled to retain (or, for all I know, even obtain) profitability.

The obvious reason for their failure is perhaps because the Macintosh and Windows operating systems already had their foot in the door, and consumers couldn't handle choosing between more than two systems. But I tend to think it had more to do with hardware. GEOS ran on the Commodore 64 when the C64 was already proving itself antiquated, and except for the Commodore 128 (technically, the MOS Technology 6502, till 16-bit GEOS came about for x86) it didn't really have enough hardware on which to install itself, at least not soon enough to matter. The Be operating system, meanwhile, started out on the PowerPC CPU. In fact, it was the true power of the PowerPC that initiated the dream of Be. Be's founder was a former Apple employee who was frustrated with the fact that the Macintosh operating system simply wasn't taking advantage of the hardware, and Be OS was intent on harnessing that power. Meanwhile, PowerPC chips were manufacturered by IBM and Motorola, but they weren't exactly easy to come by on a PC except in Apple Macintosh hardware and proprietary systems. (Said proprietary systems included Be OS's own hardware, the BeBox.) When that proved to limit the Be OS market too heavily, Be OS re-targeted itself to the i386 platform, but by then it was too late; the excitement of a fresh new geeky operating system had waned, and now it was only a novelty.

To be more precise, and accurately agree with the observations of the general public, there was just too little reason for people to switch to Be. Not enough hardware driver support. Not enough software. Windows and Mac met those needs fine. Be had something for everyone, be sure, but by the time corporate funds ran out, it just wasn't nearly enough. Being a closed-source system on a commercial budget, the project simply dried up. An operating system of that magnitude really needs a decade to develop in order to take on the industry.

Then comes along Linus Torvalds. The guy slaps together (okay, that's harsh, he carefully knits together) a Unix kernel that runs on the i386 platform and makes it open source. The Linux operating system is birthed. Suddenly, the UNIX crowd--a huge crowd in the computing realm--have a zero-budget operating system for their microcomputer workstations that is stable, clean, fun, and cool (and isn't FreeBSD).

A decade later, we have a gajillion Linux "distros" (customized distributions of the Linux operating system, typically branded), a whole lot of eye candy, development tools, rediculously commonplace mention in geek and business tabloids, and a ubiquitous following by the non-Microsoft geek community. And if there isn't a day that I don't hear the word "Ubuntu" cross my web browser window at least two or three times per day, it will just be another distro to replace it.

So here I am now with VMWare, playing once again with an instance of Fedora (another Linux distro), and scratching my head wondering why in one day I have had to delete the entire thing and start over three times just to get everything installed and up-to-date when it has been made to be so click-easy. I wonder why I have lost at least three non-consecutive nights at the office to setting up Linux distros at the office, if tools like 'yum' make it so quick and simple.

And of course the answer to my wonderings is consistently the same as it was many years ago when Linux first showed itself in my living room: despite the limitless extent of scripts, quick commands, and distribution GUI tools, it's still the same geek operating system that demands flawless geek sequencing of configuration and implementation. What do you do when RPM dependency trees get out of sync or outta whack? Spend many hours rebuilding it, or start over from scratch. What do you do when the VM gets suddenly reset (because a whole frickin gigabyte of physical RAM didn't get allocated to it) while 'pup' extras are downloading and installing? Either go back and uninstall everything that got (half-)installed and then go back and reinstall everything, or just start over and format the drive. Then there's the matter of the whole stack of libraries for things like mySql. And, oh, the pain of getting MonoDevelop to just install on Fedora 7, with missing GtkSharp libraries leading me to a hell-hole path of looking for GTK+, Pango, GLib, atk, cairo, configure this, make that, oh I give up, please just kill me now!!

In fact, there is a laundry list of reasons why I think this whole operating system is just not the answer for converting Windows developers.

1. The directory structure isn't. It isn't a structure. It's a mess. I mean, what is the *real* difference between, oh, let's see, opt, usr, and var? I realize that some things just start trickling together into the same place, like putting configuration bits into a directory called "etc". But, I mean, for goodness sake.. Putting configuration files into a folder that is named the abbreviation for "etcetera"? Putting system-wide executable programs into a directory that is named after the user ("/usr/bin")? Putting the user's files into a directory called "home"? There is no rhyme or reason to this. It just is. And it is, because the geeks are used to it, they know where to put this stuff like they know how to deal with their siblings. But the so-called structure is maintained by memory and familiarty, not by sensibility.

Both the Macintosh operating systems and Windows operating systems make sense with their system directory structures. Or at least, the Macintosh I once knew with System 6 and System 7 (I haven't seen OS X closely yet.) The operating system was in a directory called "System". Fonts were put into a pseudo-directory (a "suitcase") in the System directory called "Fonts". User documents were put into "Documents", applications into "Applications". And on Windows, it's a bit messier but still makes more sense than opt/var/usr. The operating system files go into "Windows", the name of the operating system. Software applications go into "Program Files" (with a space in the name that has driven us all crazy, I know, but at least it's obvious what it's for). Shared DLLs now go into Program Files, in a subdirectory called "Common Files". User documents and preferences once went into a horrible place called "Profiles" in the Windows directory, but that was moved to "Documents and Settings" in the root directory, and then in Windows Vista it moved again to just "Users". A lot of moving around, but always in the pursuit of sensible structure. And inside the user's profile directory, you have a whole new world, especially in Vista, with organized directory structure, between documents, multimedia files, temp files, app settings, and more. Each directory is sensibly named, no geeky bull. As Microsoft so annoyingly puts it, it's "people-ready".

And don't get me started on how brilliantly simple, perfect, readable, yet sufficiently geeky (terse and lowercase) Be OS's directory naming convention was...

2. It's consistent in things that users don't want to see, and inconsistent in things that they do. So many distros, each one having its own touches. So many window managers, each one having its own capabilities and layouts. But no one is cleaning up the ugly bits. All that stuff is tucked away, swept under the bed, hidden, with a nice GNOME/KDE/other user interface that attempts (and fails, miserably) to shield the novice end user from being exposed from the senseless geekiness that is the UNIX underpinnings of a very old operating system. When the shielding does work, it doesn't work. For instance, Fedora 7 has a GUI configurator for the Apache web server, but if you use it you will break Apache because you'll get two different configuration files in the "etc" directory and between the two of them you'll get two bindings to Port 80. This doesn't just get fixed through the update pipeline (or hadn't when this bug bit me) because Fedora's contributors are busy working on so many other bugs. This is the big problem with having so many distros, all the efforts are forked across a couple hundred repeat efforts to provide a custom solution to the same problem and no one is ultimately accountable for leadership except the volunteers on behalf of a particular instance.

3. It is bound to its legacy. Despite very careful and successful handiwork of incredibly smart software programmers, the ancient operating system has evolved with total support for both legacy and modern architectures. That fact should bring a smile to any Linux geek's face, but it is not a good thing. Think Windows 95. Windows 98. Windows ME. Each of these was an evolution of a really, really poorly architected operating system that seemed as though Microsoft was using bubble gum and tape to expand the operating system's capabilities. (In actuality, bubble gum and tape were not used. Microsoft had a bit more money than that to afford caulk and nails. The problem was a broken foundation, that was ultimately replaced with the NT4/2000 reworked codebase.) Linux fortunately has a very stable foundation on which to add all these new evolutionary features, but the support it has for legacy software and the great multitude of development libraries is also the undying foundation that can never become declared as antiquated because so much depends on it.

I'm glad that the Linux foundational underpinnings are constantly improving; I know that the Linux kernel team(s) are working hard to stay up to date to support the latest and greatest support for things like new chipset hardware, multiprocessing (years ago), and now hypervisor support (recent). But it still walks and talks like a penguin--as in, like a geek who knows how to use Emacs and can explain what the big difference is between '/var' and '/usr', or why we use 'init 3' to break out of the GUI. Evolution has come in the form of additional software libraries that run on top of this awkward wave-bouncing boat that miraculously stays afloat without sinking.

4. The revised GUI applications are improving dramatically, but the classic software itself doesn't make sense. Look at text-mode Emacs. If you know how to use Emacs, skip this, but if you don't, look at it. Can you figure out how to use it just by looking at it? Poking at it? No? OK, try "man emacs", or google for help. What's that? Going to take you days to get started? Okay, then, let me know when you can start being productive. I expect to hear from you next week. Hopefully that's not too soon.

5. Without authoritative decision makers, you end up with chaos. And that's exactly what Linux is--organized chaos. Or is it chaotic organization? The stuff "just works", when it does. But wow is it a mess of gobbligook, with no one to account for the mess that it is. With the old Macintosh System 6 / 7 (again, I don't know what OS X looks like), applications were cleanly organized into a self-dependent, fully consolidated application file. Preferences were dropped into a Preferences directory. In Windows, applications are cleanly tucked into "Program Files\Company\App Name" or "Program Files\App Name". Shared libraries are pretty much always .dll's, and DLLs are always either 'C' invokable libraries (which may or may not be COM invokable) or CLR assemblies. App settings go into a pseudo file system, created just for configurations--the Windows registry--and follow standard path conventions like HKCU/Software/[App]/@setting=value. And when software is installed, it must be registered as an installed app and be uninstallable from "Add/Remove Programs" (or "Programs and Features" in Vista). Linux does have RPM, but the dependency trees as well as the potential corruption thereof are too painful to deal with.

A clean design starts with a designer, and consistency with a clean design depends on an authority figure who can sign off on it. With Linux, which has no one designer, you have all sorts of kinds of files, in all kinds of different "languages" (.o, .class, .pl, .bleah), no file typing ("chmod +x bleah"), and can put /any/thing/any/where/.and/yet/it/will/make/sense/to/some/geek. Everything that works, works to the people that established it and to the people who learned it to build dependencies upon it. But the fact that any one thing might work fine doesn't change the fact that the combination of the sum of all of its parts is more akin to a zoo than an organization, which makes it extremely difficult for the average person to adopt.

6. The GUI subsystem (X Window) is hardly performant and is erratic. Macintosh rebuilt its GUI subsystem based on PDF technology for crisp anti-aliasing, yet its down-to-the-metal optimizations make it a clean, fast, and beautiful environment. Microsoft Windows Vista's Aero subsystem takes it to the next level and channels everything through Direct3D, taking advantage of video card optimizations to make the user experience very smooth and responsive. But Linux? From what I can tell, it still pushes everything through the TCP/IP network stack, which is one of the slowest (if most versatile) computer communications channels on an operating system. The advantage is that you can redirect windowing instructions to another machine (like you can with Windows' Remote Desktop) even through SSH, but the down side is that you have limited performance, and you have to minimize the instructions and make the instruction set "smarter" to do things like OpenGL or other graphics-intensive work. In the end, whenever I use Linux locally I feel like I'm using Remote Desktop. The mouse is slow and erratic, and everything feels a few milliseconds slower than me. Everything seems like it's bound by elastic bands. Whereas, when I'm in Windows doing the same things, everything is very responsive; the mouse, in particular, feels flawless and perfectly optimized to bind to my hardware and physical movements. (The Windows kernel seems to manage the mouse in an isolated, high priority system thread, seperate from everything else, which is why no matter how slow other things are, it is always very responsive and true to physical movement.) And I don't suppose I can ever dream of getting VMWare to resize the client OS screen resolution at runtime without unloading X Window and restarting it.

But there are some things I like about Linux.

I like that there is a "clean" command-line environment where administration can be performed without a GUI. I still miss Windows 95/98 being able to "boot into DOS mode", switching straight to MS-DOS 7 on which Windows 95 was still built on top of. Windows NT/2000/XP/2003/Vista forces you to have a useless mouse in your face even if you're booting into "Safe Mode with Command Prompt".

I like the support for significant development languages and tools, like Java and Python. I can learn such things in Windows and deploy to Linux. (Why I would want to if it runs in Windows, though, I don't know, but some stuff I have to support is built on that crazy zoo of a foundation that Linux is, such as Perl and Apache and lots of Linux-specific add-on modules that get dropped into those weird directories.)

I like the geek love that Linux enjoys. Windows doesn't get that love. It only gets hate, from the Linux lovers. Then again, the local user's group for Microsoft technologies definitely enjoys some Windows and .NET love, so nevermind.

I like the network orientation of Linux. It's not the answer, but it does set a precedent.

I like the artistic contributions for the more recent UI elements, like GNOME. I think the fonts are lame, but more for inconsistent display behavior between windows and programs than for the font designs.

But I can totally live without those things. I'd much rather live without those things than have to put up with the mess that Linux is. Let's face it, Linux isn't the open-source answer for a sensible operating system.

The ReactOS project isn't the answer, either. If we wanted Windows, we'll get Windows. We don't need an open-source look-alike of Windows. What this is about is the need for an innovative and original open source operating system that is not bound by legacy constraints.

Be OS came ever so close, if only it was still available and open source! But Haiku OS (not Linux-based, and inspired by Be OS) seems REALLY interesting. Could it be the answer??

With the advent of virtualization with VMWare, Virtual PC, Parallels, and Xen now being commonplace, I can't help but wonder why people in the geek community haven't gone back to the drawing board already to rethink operating systems.

Microsoft gave me a glimmer of hope with their Singularity project. Singularity is a fresh, from-scratch operating system that Microsoft built using a little bit of assembly and C/C++ but mostly a variant of C# all the way down to the metal. It completely drops all ties to legacy support, and instead focuses on the future. It's so multi-threaded oriented that hypervisors are a moot concept. It is Microsoft's opportunity to take two decades of lessons learned with Windows and try to prototype an OS with no legacy constraints and lessons learned now applied. And although it's not tuned for inherent performance (which is why assembly and C++ lovers will inevitably hate the Singularity project idea), it's still performant, and runs circles around modern OS's when it comes to inter-process communications.

Sadly, the Singularity project isn't open-source. That is, Microsoft Research did "open" it up to a few professors in a few select universities, but this isn't an open source operating system intended to be consumed by the general global geek community.

This is why I'm getting a bit excited about the idea that maybe it's time for the geeks to get a clue. VMWare has debugger support to the hardware level and even rewind and replay support. The tools are ripe for dreaming, building, and playing with a whole new operating system, one that is sensibly designed, responsibly organized, and yet open for community contributions. This would be an opportunity for people to learn how to organize and delegate community representatives, to provide the world a fresh, clean, newly design operating system that is free to use, freely consumable, free to break apart, free to extend, but having a single, organized, moderated, carefully planned public "distro", all the way down to the metal, with no legacy constraints, and with sights set for the future. If the open source community really wants to compete with Microsoft, they should pay attention to what Microsoft is doing beside duplicating Windows Explorer with Nautilus, and look at how Microsoft is constantly rethinking and refactoring its core design, from the kernel (dropping Win9x for WinNT) to the directory structures to the windowing subsystem being channeled straight through Direct3D (with Aero).

Believe it, you can have your GNU and OSI (open source initiative), and lose your *nix. It's okay if you do. I'll be cheering you on. Even if I'm the only one on the stands who is doing the wave. But not until we get away from usr/var/etc, and stop taking geeky, old-school, antiquated foundations for granted. They're expensive and they're not worth keeping around.

Currently rated 2.7 by 17 people

  • Currently 2.705882/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , , , ,

Computers and Internet | Software Development | Linux

Related posts

Comments

8/17/2007 4:15:49 PM

Pete

Great article! I agree with almost everything.. and I did't know about Singularity project before, so thanks!

Pete cz

8/17/2007 7:52:57 PM

raveman

amazing, hard to find something to disagree with, hopefull linux developers will read this.

raveman

8/18/2007 11:55:11 PM

Me Again

Guess what. The last 2 months I installed Ubuntu Linux on 3 computers (2 of which have compiz-fusion -- that's bleeding edge eyecandy) and they all worked the first time. I've used Ubuntu as my primary operating system (I sometimes run Windows in VirtualBox because I need IE) for about 2 years now and I've never had a problem with APT (the package management system). Everything installed smoothly and it was much less of a headache compared to windows (no dll hell, all the software gets updated automatically, not just the system and the browser etc). I don't deal with the filesystem below /home much. In fact, other than disabling IPv6 from /etc/modprobe.d/aliases (which is not something the regular user cares about) I don't think I've made other changes. Well, of course some files did get changed, but I didn't change them manually. APT seems to know exactly which files go where (opt/var/usr). And the GNOME interfaces work pretty well too. So you don't usually need to know the difference between /usr and /var (btw, most Linux books explain the filesystem on two pages -- it's really not that hard) and you don't need "init 3" to break out of the GUI either. Don't like Emacs? Ever heard of Eclipse? That's the nice thing about Linux: it's choice. You can choose a distribution, you can choose an editor/ide/whatever, you can choose a programming language etc. To be honest, I don't know how X works, as opposed to Aero. But the fact is, compiz-fusion is blistering fast on my system (think: 3-4 years old computer) and it's much more "spectacular" than Aero. Flip3D? Boring. I've got it in compiz and I don't even use it. Well, I have to go, I think my Linux system is going down. I didn't reboot it for almost 15 minutes...

And oh, yeah. Apache on Windows is much easier to configure.

Me Again ro

8/19/2007 12:01:27 AM

Joshua Kuhn

I like your article, and you have some valid points that are definitely worth thinking about, but I have a few things I'd like to point out. While I agree with you that the directory structure could be a little more descriptive, the fact is that the existing structure in GNU/Linux is used far more consistently than in Windows. For example, you mention the registry in windows as a place for application configurations, but in reality, some applications put their configurations in the registry, some in your Username/Application Data folder, some put them in the application's Program Files folder, and some, like Adobe, just make their own folder and put stuff there. In Linux, all your things are in your home folder.

As far as problems installing and uninstalling programs, you should try a modern package manager, like apt or portage. They will actually manage all of your installed packages, and upgrade them too when new versions come out. If something doesn't install correctly, it can be cleaned out without leaving little orphaned files on your computer. In windows, I can't tell you how many times the Add/Remove Programs utility has refused to allow me to remove something (or just not even known about a program I've installed).

The mouse lag you're encountering is probably not a result of X's network oriented protocol. Windows and Mac OS X both use a separate graphics subsystem that is similar to X's client /server model. They are all reasonably similar in speed and responsiveness these days. As far as Windows Vista using Direct 3D to accelerate the desktop graphics, the various composite managers for X(Compiz etc) do the same thing with OpenGL.

I won't defend Emacs or anything, since it's definitely not for just picking up and being productive immediately (but definitely has places where it excels) . But, the fact is that there are plenty of editors for Linux that are user friendly and easy to pick up. Your point seems to be that since the operating system runs these legacy programs it is a harder operating system to use in general, which is not true. Windows can run old DOS programs from the 80's, that doesn't mean you have to use them.

There are some more things, like the fact that GNU IS specifically geared towards creating a *nix operating system, but I'll just quit taking up space now.

Joshua Kuhn us

8/19/2007 12:03:19 AM

Ancestor

Your filesystem doubts are esily explained using "man hier" or the FHS on Wikipedia (en....pedia.org/.../Filesystem_Hierarchy_Standard). Also, it is important to mention that MS has implemented over the years some features similar to those found on unix, like mountpoints and symbolic links. I can pick up a 12-year old linux installation and know where to look for the files I want - do you remember where are the user's desktop files in Win95?
Software installation is also easier to manage on linux/unix - most package managers will show you a list of all the files installed for a given package (and what packages uses a given file), often with a signature. Of course they aren't perfect software, but they do work - and often better than the installshield crap you find on windows.

If you google for it, you may also find that most X/Xorg installations ship without TCP enabled, and that not everyone is using framebuffer (well, out of VMWare). You have some pretty decent 3D support for selected devices, and on "bleeding edge" distros you'll find desktop compositing somewhat similar to OSX and Windows.

Every software has problems. Maybe your Fedora has really some issues, but the big advantage is, you can report those issues and maybe have them fixed almost right away. With windows, you generally have to wait a while if the problem will be fixed at all. Also, when you install Fedora, you're not installing an operating system - you're installing a distribution, packaging hundreds of independent programs. It's not that difficult that some errors are present on the final release. Well, in windows, if I install 40 or 50 applications, I might get some errors too. Haven't you ever got problems with software installation on windows?

Most of unix environments assume that the user can and have read the documentation. "User-friendly" doesn't mean "documentation-free". After all, most vehicles are user-friendly enough so that a child could drive them, but you're required to learn the rules of usage. Of course Linux/unix/whatever isn't as idiot-able as windows is. But the philosophy behind the "just works" concept drive idiot users to do idiot things - like disabling stuff until whatever they want to work works. Its fairly common to find whole drives (literally) shared to the world because some idiot wanted to share files between a laptop and a desktop.

Don't get me wrong - I do find X/Xorg lacking when compared to windows, specially regarding font rendering, and you make some true and valid points. I also use windows as my primary desktop SO and I have no interest whatsoever in linux, but most of your arguments against linux reveal lack of knowledge.

Ancestor pt

8/19/2007 12:24:20 AM

Jon Davis

>>
Maybe your Fedora has really some issues, but the big advantage is, you can report those issues and maybe have them fixed almost right away. With windows, you generally have to wait a while if the problem will be fixed at all.
<<

But that's exactly my point: "This doesn't just get fixed through the update pipeline (or hadn't when this bug bit me) because Fedora's contributors are busy working on so many other bugs. This is the big problem with having so many distros, all the efforts are forked across a couple hundred repeat efforts to provide a custom solution to the same problem and no one is ultimately accountable for leadership except the volunteers on behalf of a particular instance."

As for Windows getting it in the pipeline, I'm not sure I agree entirely since Microsoft does regular Windows Updates, but the whole idea of my post was that I am looking for an open source, community-supported OS. I just don't think Linux cuts it.

Jon Davis us

8/19/2007 6:23:37 AM

Ancestor

Most microsoft updates address security issues and well-known bugs that affect thousands (millions?) of users, not some obscure problem reported by a small group of persons. The changes after the release are always minimal and sparse, even when they tell you otherwise. But I don't need to explain that, you already know - you're a programmer.

The number of distros itself isn't a problem - just because a guy contributes to project A doesn't mean he'd contribute to project B. Also, contrary to what you say, most of the major distros do have a clear leadership structure, a roadmap and goals to achieve. There are a zillion of distros offering the same funcionality, but then again you can pick the one you like better. Its like cookies. Why have a whole bunch of different chocolate cookies? Because different people have different taste. And the big plus is, if you really have a bug that is essential to your work, and can't change the distro, as a last resort throw money at it. Someone will surely fix it for you if you're willing to pay. Try that with Microsoft.
I don't know what kind of problems you had with Fedora and VMWare, but apart from the crappy SCSI support some desktop-oriented distros have, I had none.
So, you're looking for a community supported OS but you don't like the community support? If you're looking for a windows-like community supported OS, better stick with windows - it is actually usable, quite stable, and OEM licensing isn't that expensive. If you want a open source unix OS that actually works, I'd recommend FreeBSD or OpenBSD.

Ancestor pt

8/19/2007 6:30:05 AM

Jon Davis

>>
Guess what. The last 2 months I installed Ubuntu Linux on 3 computers (2 of which have compiz-fusion -- that's bleeding edge eyecandy) and they all worked the first time.
<<

Good. Mostly, Fedora does, too, in fact, mostly any good distro does... until you go beyond the basic feature set and set up programming libraries and other stuff...

>>
I've used Ubuntu as my primary operating system (I sometimes run Windows in VirtualBox because I need IE) for about 2 years now and I've never had a problem with APT (the package management system). Everything installed smoothly and it was much less of a headache compared to windows (no dll hell, all the software gets updated automatically, not just the system and the browser etc).
<<

Again, yum generally works, too. Generally hasn't cut it for me, though, when trying to set up MonoDevelop, or the required libraries for Krang CMS, etc.

>
I don't deal with the filesystem below /home much. In fact, other than disabling IPv6 from /etc/modprobe.d/aliases (which is not something the regular user cares about) I don't think I've made other changes.
<<

This is telling, to me, of our usage patterns. Those many sleepless nights I've been spending have been almost exclusively outside of /home.

>>
Well, of course some files did get changed, but I didn't change them manually. APT seems to know exactly which files go where (opt/var/usr). And the GNOME interfaces work pretty well too. So you don't usually need to know the difference between /usr and /var (btw, most Linux books explain the filesystem on two pages -- it's really not that hard)
<<

Yes, I do, because of the crap I'm trying to use. That's like telling a Windows user, "You don't really need to know what's lurking in that \windows\ directory, because I don't."

>>
and you don't need "init 3" to break out of the GUI either.
<<

Yes, we do; if there is another way, please share.

>>
Don't like Emacs? Ever heard of Eclipse?
<<

Yes, of course. I prequalified my Emacs statement (Emacs being only an example of classic bits) with acknowledgement that more recent GUI apps have come a long way. At any rate, Eclipse isn't a Linux technology; it's a platform agnostic technology that wasn't built on Linux and then ported out, but rather it was built on Java with no porting required.

>>
That's the nice thing about Linux: it's choice. You can choose a distribution, you can choose an editor/ide/whatever, you can choose a programming language etc.
<<

How is that a nice thing about Linux? How is that any different than, oh, let's see, .. Windows? Eclipse runs great on Windows, you know. Heck, it was you who used that as an example.

>>
To be honest, I don't know how X works, as opposed to Aero. But the fact is, compiz-fusion is blistering fast on my system (think: 3-4 years old computer) and it's much more "spectacular" than Aero. Flip3D? Boring. I've got it in compiz and I don't even use it.
<<

No, no, no, the special effects aren't what I was talking about when I mentioned Aero. I agree, Flip3D is boring. And I'm sure compiz fusion is fast and all. But the fact remains that X is a TCP/IP protocol, and as such it is loosely coupled with the hardware. This means to me that either compositing systems, while they may be fast, could have been much faster, or else had to really do some painfully awkward programming hacks to overcome the obstacles. And as a software geek, that just doesn't inspire me.

>>
Well, I have to go, I think my Linux system is going down. I didn't reboot it for almost 15 minutes...
<<

LOL!!

>>
And oh, yeah. Apache on Windows is much easier to configure.
<<

Sure, if you're doing PHP / Perl. But ASP.NET on IIS 7 in Vista is pretty nice to administer.

Jon Davis us

8/19/2007 6:49:08 AM

Jon Davis

>>
I like your article, and you have some valid points that are definitely worth thinking about, but I have a few things I'd like to point out. While I agree with you that the directory structure could be a little more descriptive, the fact is that the existing structure in GNU/Linux is used far more consistently than in Windows.
<<

Consistent, yes. Consistently geeky and insensible. Tong

>>
For example, you mention the registry in windows as a place for application configurations, but in reality, some applications put their configurations in the registry, some in your Username/Application Data folder, some put them in the application's Program Files folder, and some, like Adobe, just make their own folder and put stuff there.
<<

I agree that the registry in Windows, and the following of best practices by both Microsoft and its third party software vendors, are horrifically shameful. However, ...

>>
In Linux, all your things are in your home folder.
<<

.. well, Windows Vista puts both user config files and user settings in the \Users\{Username} directory, so I don't see that as any different. The HKCU branch in the registry is stored in the \users\ path. And all of the physical files that are kept on behalf of a user are stored in there. If a software product doesn't use that directory, it's not playing by the rules. That's no fault of Windows; there is an appropriate and consistent place in Windows.

On the other hand, as I posted, there is little consistency *between* Windows releases. Stuff keeps getting moved around. But software still works because they're placed using environment variables rather than hard paths. My point, though, was that with each Windows release being different, it's in the pursuit of sensibility and giving better structure to all this crap. In other words, Windows is striving to clean up the mess.

To just say "it all goes into /home/" is really uninspiring, as well; the rules for the directory structure in the "\Users\" path are extensive. I see little consistency in /home in Linux, other than a desktop and hidden bits having a '.' as file prefixes.

>>
As far as problems installing and uninstalling programs, you should try a modern package manager, like apt or portage.
<<

I use yum, which works fine, until dependency trees for software libraries are invalidated. This is more of a problem I have with Mono being distributed with versioning locks (a characteristic I observe in RPM) than with Linux.

>>
They will actually manage all of your installed packages, and upgrade them too when new versions come out. If something doesn't install correctly, it can be cleaned out without leaving little orphaned files on your computer. In windows, I can't tell you how many times the Add/Remove Programs utility has refused to allow me to remove something (or just not even known about a program I've installed).
<<

Yeah. Agreed, don't go there. Tong Microsoft should be ashamed of themselves for the mess they've made in the registry, yeesh.

>>
The mouse lag you're encountering is probably not a result of X's network oriented protocol. Windows and Mac OS X both use a separate graphics subsystem that is similar to X's client /server model. They are all reasonably similar in speed and responsiveness these days.
<<

I disagree, but that's okay, we can agree to disagree. My experience has been that the network stack is rediculously slow especially for graphics subsystems.

>>
As far as Windows Vista using Direct 3D to accelerate the desktop graphics, the various composite managers for X(Compiz etc) do the same thing with OpenGL. I won't defend Emacs or anything, since it's definitely not for just picking up and being productive immediately (but definitely has places where it excels) . But, the fact is that there are plenty of editors for Linux that are user friendly and easy to pick up. Your point seems to be that since the operating system runs these legacy programs it is a harder operating system to use in general, which is not true. Windows can run old DOS programs from the 80's, that doesn't mean you have to use them.
<<

Emacs was just an example. There are still a lot of nerdy aspecs about Linux that anyone doing anything more than Open Office and some MP3 player is going to have to encounter. Most of the GUI tools are just wrappers for what is essentially still done with a command console, and the GUI tools, especially the administrative tools, have always been pretty flaky. But that's entirely opinion, my own.

>>
There are some more things, like the fact that GNU IS specifically geared towards creating a *nix operating system, but I'll just quit taking up space now.
<<

Hm. Last I checked, the 'N' and the 'U' in GNU said otherwise, but maybe I misinterpereted the meaninglessness of the acronym. Still, my point was about open source philosophy, which is absolutely not tied to UNIX except only by popular example.

Jon Davis us

8/19/2007 12:16:16 PM

pkphilip

It was good to see that someone else is stating many of the points I have myself stated in a few discussion lists.. but is not getting flamed as I was Smile.

I agree with you completely. Linux is not ready for the desktops for the reasons you have stated:

a) Horrible file system layout
But you should really check out www.gobolinux.org - this is a linux distribution with a much better file system. I have been playing around with it. Seems quite promising. The installation mechanism is also based on copying the application directory to a /Programs folder and then just running it from there.

b) Messy configuration settings
Here again, there is some hope in the horizon. Take a look at the new Gconf project which stores the configuration quite sensibly. Also, there is the the Elektra project, the Uniconf project etc. All promising efforts but these configuration management frameworks are not being used extensively in most distributions and that is a shame.

c) X-Windows
X is a mess. There is so much focus these days on eye candy and 3D flipping windows that real usability improvements, and real upgrades to the underlying graphical layer is not happening. On windows, setting up multiple monitors, utilizing a new graphics card etc is very simple.. but this is really painful to do on X and it is done differently in different distributions of Linux.

I cannot understand why X-Windows needs to be configured separately for each graphics card. Isn't that the job of the OS to abstract the hardware?

As for Aero - besides the fact that Aero uses Direct3D (and hence the underlying 3D capabilities of the card), Aero also utilizes the excellent DirectX10 which includes audio capabilities as well. There is nothing on Linux (yes, I am aware of SDL etc..) that even compares to the features of DirectX 8.. and DirectX 10 is a really significant upgrade. So we know that Linux is further behind than it already was.

d) Device driver installation is a mess
Expecting users to download the entire Linux kernel (+ the modules) when they want to update just their printer driver is not a great idea. Asking them to reconfigure and recompile this kernel is even worse.

pkphilip in

8/19/2007 1:03:32 PM

Jon Davis

Yeah, thanks pkphilip. I saw GoboLinux just before you commented, and posted a comment about it in a more recent blog post (http://www.jondavis.net/blog/). I agree with all of your points; wow, you definitely get DX's value. It's weird, as prominent as Windows is, most Linux folks *seem* to live in a hole and have no clue as to just what makes Windows and its APIs so powerful on the desktop for UX, for gaming, and for productive desktop programmers.

Jon Davis us

8/19/2007 1:07:15 PM

Jon Davis

Oh, and yes, pkphilip, following up with my last reply to your comment, you definitely seem to get what I was getting at regarding the mess of X. All the way around. *sigh* I feel much better now, knowing someone out there sees with me all this stuff that I thought was rather obvious.

Jon Davis us

8/20/2007 2:49:34 AM

JeffS

Very good article. I agree with some points, disagree with others.

I do agree with your comments on the Linux file structure. The names and structure are leftovers from when Unix was originally designed at ATT/Bell labs in the late 60's / early 70's, when computer resources were much more scarce, and keyboards were hard punch. This resulted in the terse names (which also is why C is so terse).

But since *nix has proven to be so spectacularly successful over the years as a very robust, very secure, very fast, very scalable, very multi-user, very networked operating system that can run on any hardware architecture, people have been reluctant to muck with something that is proven over time to work very well.

Nonetheless, to non computer geeks, the file system is very cryptic and confusing, at first. That said, learning it, as has already been said, takes about 2 pages of reading a *nix book or online doc.

But I do like the ideas behind GoboLinux. It gives a sensible, intuitive, design to file structure that any non geek could feel comfortable with.

You said: "In the end, whenever I use Linux locally I feel like I'm using Remote Desktop. The mouse is slow and erratic, and everything feels a few milliseconds slower than me." ... and ... "And I don't suppose I can ever dream of getting VMWare to resize the client OS screen resolution at runtime without unloading X Window and restarting it."

Have you actually installed Linux natively, rather than just running it in VMWare? That does make a huge difference, you know. I'm currently running a native install of Ubuntu Feisty, with Windows 2000 (one MS's best, fastest, most robust, OS's, IMHO) in VirtualBox. Of course Windows 2000 is not as responsive as the native running Ubuntu.

Anyway, for me, there are no problems with Linux GUIs. I prefer Gnome slightly over KDE, but that's not the point. For me, font rendering, look and feel, responsiveness, resizing, mimizing, maximizing, are all excellent in Gnome/Linux. I find it way more responsive than WinXP or Vista, and on par with, if not better than, Windows 2000.

Regardless, I do agree with your point that the X window system should be completely gutted and re-written, if not replaced outright. It's networked orientation is good, but it does present too many layers and inefficiencies. X is a relic of big networked Unix workstations, with fairly minimal GUIs and industrialized apps. It was never a great underpinning for modern desktop environments.

You said: "Without authoritative decision makers, you end up with chaos." ... and then you go on to explain how stuff is spread out in Linux, with no apparent logical organization, and compare it with the seemingly logical Windows way.

Point well taken. But two words: Windows Registry.

If anything is organized chaos, it's the Windows registry. The thing is a nightmare, and very dangerous to non geeks and geeks alike (if one makes the wrong manual registry change in regedit, one's system can go KABLOOM!) Also, there is the infamous registry bloat. Over time, after adding and deleting software, the registry gets very bloated, and slows down the whole system (since both the OS and the apps use/depend on it). Eventually, the OS has to be re-installed, to improve performance. And need I mention that the registry is a security nightmare?

Nevertheless, when stuff is installed on Linux, there does need to be improvement in the logic of placement of files. No doubt about it.

JeffS us

8/20/2007 2:50:44 AM

Garry Hurley

I sent Jon a rather lengthy email detailing his mistakes in this article. For those of you who agree with him, I have two options for you. Option one, LEARN something about Linux before using it. Option two, LEARN something about Linux WHILE using it. Now, you might think these sound alike, and you would be almost correct. You need to keep an open mind while learning something. Don't go into the whole process thinking about how terrible Linux is and how great Windows is. Look at it with an open mind. I had difficulties when I first learned Linux ten years ago. I now love it more than Windows. I even installed it on my laptop (the fourth laptop I have upgraded from Windows to Linux I might add). I have a Windows PC at work - and that is only because my employer will not let me run Linux on it - and one at home in which I installed my video capture card and now use for watching TV and extracting firmware from closed-source drivers. All my daily web surfing, DVD watching, and personal development projects are done in Linux. Do yourselves a favor, people, try other distributions besides Fedora Core. Most Linux users agree that Red Hat was over-hyped, and the RPM is a bad format for software installation (I don't know why IBM still clings to it though).

Garry Hurley us

8/20/2007 6:19:28 AM

Jon Davis

Gerry, there were no mistakes in my blog posts; one cannot make mistakes when he is expressing only opinions based on his own observations. That's one thing I love about blogging. This isn't a magazine, it is my personal space where I can speak what I observe, right or wrong, and not worry about mistakes.

As for your two "options", you're assuming that the user has some kind of motivation to WANT to learn to use the operating system that is in front of them. What I said in my blog post is that I don't WANT to use these directory names, and I don't WANT to have to deal with the constraints imposed by legacy support. I am looking for incentive. Literally, the only incentive I have right now is because some software is written exclusively for Linux, and from experience and hearsay of those who work with that software, the hassle of making that software work is about tenfold the hassle I must go through in order to support our own .NET-based system in Windows.

I have been trying out other distros besides Fedora Core, and will continue to do so. I'm building up a library of VMs because I am certainly curious. My statements of frustration are not entirely conclusive that Linux is trash; I am not passionately spiteful of Linux as most Linux geeks are of Windows. If anything, the rediculously resentful reactions to my statements of frustration, including those in my e-mail inbox, pushes me away from curiosity of Linux. Linux is, after all, a community-supported OS, and if the community is spiteful of me just because my lightweight exposure to the OS has been frustrating, once again, where is the incentive to retain curiosity?

Jon Davis us

8/21/2007 3:02:43 AM

JMC

I'm going to attribute your lack of success with setting up your virtual linux instances to inexperience. I have had few to no problems setting up various distros on a multitude of hardware. Sure, when I was learning linux, there were some long nights spent trying to get things going, but that was mainly due to my lack of understanding. For instance, you seem to have taken issue with the directory structure. Have you considered that the reason why things seemed to be spread out is partially due to the fact that these different locations are typically stored on different drives/partitions? that backing up crucial system data can be as simple as backing up system-wide configs (/etc) and system logs (/var/log)? I'm going to wager a guess and say that you have not read this:

en....pedia.org/.../Filesystem_Hierarchy_Standard

JMC us

8/21/2007 3:35:58 AM

JMC

In response to your reply to Garry Hurley...

My opinion regarding people like yourself who seem to be saying things like "I don't like the way Linux does thing X, so why should I use it?" is that no response is warranted. If you don't like it, don't use it. I guarantee that the Linux community is not going to lose any sleep having not won your approval. If you're happy with Windows, continue using it with pride. If you're not, but don't find Linux to be your cup of tea, whip out your trusty keyboard and start coding something better.

JMC us

8/21/2007 7:40:56 AM

Jon Davis

JMC, are you losing sleep over my personal blog post?

>> If you're not, but don't find Linux to be your cup of tea, whip out your trusty keyboard and start coding something better. <<

That was the general idea of what I posted!! Let's code something better!! From scratch!! And quite literally, as much as I tell myself I'm so naive I'm really tempted to start poking around at kernel development.

Jon Davis us

11/30/2007 2:55:18 AM

David J. Heinrich

A few comments...

There are good reasons why the Linux file system is organized the way it is, via FHS. Backwards compatibility is important. This is why Linux can still run on very primitive hardware, which is useful for say routers. Note that for the most part, my comments also apply to *BSD. Btw, Compiz-fusion is very fast and quite usable, and will run on systems that are several years old. It works fluently on Thunderbird-Athlon 1GHz systems with 64MB video cards. How well does Vista work on those machines? It doesn't work at all on them. Vista, and newer versions of OSX to a lesser degree, have insane hardware requirements.

You seem to want something that is impossible with FSS/OSS, which seems to be no forking, because you perceive of that as duplicating the wheel. Yet, you then say, "lets code something better"; which, of course, again, seems to be duplicating efforts. That's what Haiku OS is doing.

A few comments are warranted here. Obviously, many people found it worthwhile to fork, or "duplicate efforts", as this is being done. And not just many developers, but also many users, as a variety of Linux distros have significant mindshare among users: RedHat, SuSe, Debian, Slackware, Gentoo, etc (those are the big 5 original distros that I can think of, although there are RH, Debian, and Gentoo-based distributions, like Ubuntu). But I should note that with open development models not encumbered by patents -- see MS and Apple -- duplicating efforts really isn't as big a problem, because you can share code, and reuse code, or slightly modify it. There may be some complications to this, as OpenBSD developers have noted when they want to make revised-BSD-licensed drivers based off of GPL-licensed drivers, as they have to reimplement it in a way that avoids being a derived work. But unlike when proprietary competitors make something else, they don't truly have to start from scratch.

Regading Haiku OS, there are of course some very good ideas they have. However, right now -- and the right now is very important, otherwise we'd all be using GNU/HURD -- it doesn't provide (as a package, including apps) anywhere near the functionality of GNU/Linux or *BSD. I would like to see some of their ideas incorporated into GNOME or other places where appropriate. That's the great thing about FSS/OSS projects, that you can do that. I'm particularly fond of column view navigation, and in a Haiku OS article on the desktop finder, someone commented taht a good mod to column navigation would be to make the last column scaleable, or even adjustable to different views, so full file-names could be viewed. In short, it would make the last column like a list or Icon view, with the first 2 columns as the history of higher folders (where you "came from"Wink. But I'm not sure it's worth it to me to start over again to the extent that Haiku does. We already have Compix-fusion, and multi-media filesystems (XFS), with filesystems coming that are going to be very fault-tolerant and scaleable (ZFS and BtrFS). But whoever thinks its worth it, despite arguments to the contrary, of course has the right to go ahead and do it.

Regarding GoboLinux, that's an interesting idea. There are certainly some positives to having everything in one folder as a self-contained running application, with no reference to external libraries. It means that things "just work 'all the time'". However, there are also drawbacks, such as requiring numerous copies of the same library. There are also security problems. With common libraries, when a library is updated for a security fix, it's updated for all programs. Having multiple copies of libraries lying around or running can pose security problems. And of course, self-contained packages don't "just work 'all the time'", as that statement needs to be qualified. It works when it doesn't create security problems, and when HD, RAM, and CPU strain aren't concerns. It doesn't just work on slower systems. Overall, I think it is inferior. People talking about how easy it is to install stuff this way always seem to ignore or minimize the drawbacks, which are significant. An alternative solution is just to use better package management software; BSD ports, Gentoo's portage, and Debian's apt deal very nicely with dependencies.

As far as the minimalist abbreviation of the filesystem, an alternative to breaking backwards compatibility would be to layer more understandable labels ontop of that, using maybe using meta-data.

Finally, regarding X.org's network interface and whatnot, numerous people have noted that X can be incredibly fast, even without hardware acceleration. However, with Compiz-fusion, your GNOME/KDE desktop will run faster and smoother than Vista or OSX, even if on inferior hardware. You don't need an insane computer to run it.

And X's network-capabilities and multi-user features have always been used by various segments of the market. And the market overall maybe going back in the direction of "mainframe", to save money. You're starting to hear about home-severs -- so why not have the server do all the grunt work, and save on hardware costs for connected PC's. X even has the capability to be multi-head or multi-seated. You don't even need "thin clients", but can have two or three different sets of monitors, keyboards, mice, speakers connected to the same case, each user doing their own thing. Linux and X can handle this quite well. Windows or OSX doesn't. With this kind of setup, you don't even need a local network with multiple thin-clients, you just need one poweful box.

David J. Heinrich us

Add comment


(Will show your Gravatar icon)  

  Country flag





Live preview

8/21/2008 4:34:10 AM


 

Powered by BlogEngine.NET 1.2.0.0
Theme by Mads Kristensen

About the author

Jon Davis Jon Davis (aka "stimpy77") is a software and web developer by day and a software and web enthusiast (geek) by night. He was recently a senior web engineer for the enthusiast division of a major magazine publishing company for nearly two years. He has been a programmer, developer, and consultant for web and Windows software solutions professionally since 1997, with experience ranging from OS and hardware support to DHTML programming to IIS/ASP web apps to Java network programming to Visual Basic applications to C# desktop apps. Lately, Jon's professional focus has been on C#, ASP.NET, Windows services, WCF, custom Javascript libraries, and implementations of Lucene.net and telligent's Community Server for multiple web sites.
 
Software in all forms is also his sole hobby, whether playing PC games or tinkering with programming them. "I was playing Defender on the Commodore 64," he reminisces, "when I decided at the age of 12 or so that I want to be a computer programmer when I grow up."

E-mail me Send mail

Calendar

<<  August 2008  >>
MoTuWeThFrSaSu
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

View posts in large calendar

Pages

    Recent comments

    Authors

    Tags