Friday, April 18, 2008

Why Not Help Linux?

I just finished reading the news about Haiku's event at LUGRadio last weekend and the question asked of Koki got me to thinking. Some Linux fans out there may be wondering, "Yeah, why not?" I can think of quite a few reasons why not. Be warned, my skin has been infused with asbestos. Not as good as adamantium, but I don't have problems at airports. ;)

Linux is Intended for Servers

To use a quote from Michael Phipps at the first WalterCon, "You can put a pig in a dress, but it's still a server." Linux's kernel is primarily intended as a server operating system. Yeah, yeah, there are tweaks that have been made to the sources to help with responsiveness on the desktop, but they have not been made official part of the kernel. X Windows is not going away any time soon, and despite the efforts of the XOrg team, it's still got problems, primarily the complexity of configuration but also other things like multiple monitor support. Yes, most configuration is hidden away from the user, but it still manages to rear its ugly, textfile-based head now and then. Xinerama helps, too, but it's too difficult to setup and has limitations in its flexibility. This one area that Windows beats Linux on, hands down. These issues stem from the UNIX origins that Linux is based on.

Linux is not Commercial-Friendly

Have you noticed that while there are a few companies out there that are gung-ho about Linux development and open source software in general, most won't touch it? A lot of corporations are not about to develop for an operating system that forces them to give away the family jewels, free or not. nVidia has a bad reputation among the GPL zealots because it won't do this. Making wireless networking under Linux is a crapshoot with the odds stacked against you, for example. Most of it is because of the GPL.

Linux Desktop Usability has a Long Way to Go

I am writing this from within Firefox 3.0 Beta 5 on a laptop that only runs Xubuntu Hardy Heron. I am not afraid to use Linux and am relatively comfortable using it on the desktop. Simply put, desktop Linux is too much work. I use it because I don't have to reinstall it every 6 months to a year to keep it from bogging down, unlike Windows, and because I am more productive using it for day-to-day tasks and office work. It takes a lot of tweaking -- regardless of the desktop environment -- to get productive. I would not dare ask my wife to try to install any Linux distro, nor would I try to get her to learn all the things I've had to learn about Linux.

Need some examples of places where Linux usability is ridiculously bad? Here are a few: a user should never have to edit config files. Ever. Regular users do not care about the GPL. At all. Not in a million years. A user should not have to ever compile a kernel (or anything else) for any reason. Go beyond the basics and nice, sweet, Ubuntuland becomes a wilderness of BASH, text files, tweaking, and forum searching. I could go on and on here.

Linux has no Cohesiveness

I've said this before: if I sit down at a Windows desktop, I have a reasonable expectation of the experience to come, for bad or worse. If I sit down at a Linux (or UNIX, for that matter) desktop, I have no idea what to expect: Xfce, GNOME, KDE, GNUStep, WindowMaker, or something else, particularly if the maintainer of the machine is a bigger geek than I am. The parts don't all work together, visually, functionally, or otherwise. Try copying some text to the clipboard, closing the app, and then pasting the text into another app. It doesn't work. Motif doesn't look like GNOME or KDE. Same with Java. The lack of a unifying vision and direction for the OS results in chaos in general, and this shows in using Linux.

Haiku is Easier for Developers

While it has been a while since I did any development for BeOS, I have been experimenting with APIs from other toolkits and OSes. BeOS is still easier than any other I've seen. The only one that comes reasonably close is Qt, and even it has its difficulties. It is easier for a developer to write a responsive, multithreaded (and, thus, multicore-friendly) application under BeOS than any other toolkit. SMP support doesn't have to be compiled into the kernel because it's already there. The filesystem automatically has support for extended attributes.

Linux is Slow on the Desktop

There are so many reasons why Linux is slow for the desktop. The network transparency that X has doesn't have much use in one- or even two-computer homes. The Linux kernel, by default, does not include low-latency code, so home audio work takes more work than it needs to. Programs are single-threaded, so there are countless instances of waiting for a window to redraw itself because it's off doing something else. Boot time is on par with Windows XP or Vista and shutdown time isn't much different. I have not seen any mainstream OS -- or any seriously developed hobby OS -- that shuts down faster than Haiku does, bar none.

Final Thoughts

This may sound like I'm bashing Linux. In some places, yes I am, but not because I hate it or anything. Many of the problems that go with Linux have to do with either using a tool for a purpose other than what it was intended (server on the desktop), development decisions that have an impact on relations with corporations, or because of the geek culture that Linux is best suited to. The desktop market is primarily regular, non-technical people. Linux is a culture of geeks. The two don't really mix very well. Red Hat was smart in saying that a desktop distro is hard, because it is. Why not help Linux, because Joe User is a person, too.


  1. That was a pretty ignorant list. Apologies if my response is posted more than once, it appears that Blogger is having trouble with its CAPTCHAs.

    "Linux is Intended for Servers"

    Linus wrote Linux so that he could use his 386 _desktop_ PC. Today its used on large distributed clusters, single-image server arrays, blade servers, workstations, desktops, laptops, set top boxes, palm-sized devices, household gadgets, mobile phones and numerous miniature embedded applications (sometimes literally, e.g. embedded in a glacier).

    Linux benefits from a broad view. Linus and others on the LKML have said many times that a separate kernel tree would need to have a technical justification and no-one has ever offered one.

    "Linux is not Commercial-Friendly"

    This so-called unfriendliness extends to the hundreds of billions of dollars a year. Large international businesses, profitable businesses at that, are founded on the GNU GPL's software freedom. In sharp contrast to BeOS which lost money every year until the coffers were bare and took small businesses to the bottom along with it.

    Your nVidia comment would imply that, unlike every previous operating system vendor from outside Redmond to ask, Haiku has received up-to-date manuals and engineering support from nVidia. But that isn't so, is it? In fact Haiku's limited support for nVidia hardware is a mixture of expertise and one man's tedious trial-and-error. Because he's lost interest, it isn't even up-to-date with a modern reverse engineered driver, which has accelerated video playback on newer GeForces.

    In fact, none of the companies that are refusing to co-operate with Linux developers is working with Haiku. The one company that I know has actively worked with Haiku, providing documentation and also I think sample hardware, JMicron, is also working with Linux, and their various chips are well supported.

    When I think about documents that might scare away a small business, I don't think about the GNU GPL, but rather Haiku's trademark and distribution rules.

    "Linux Desktop Usability has a Long Way to Go"

    There's always more we could do. Does it take a lot of tweaking? For a power user, and on a distro like Xubuntu, sure. But most people aren't as demanding as power users - indeed that's what Haiku is relying on. Look at the response to the simple suggestion that Haiku offer an easy way to disable the annoying Caps Lock key. On this laptop that runs Linux, I choose "Caps Lock is another Control" from a GUI list of power user keyboard tweaks. But Haiku, apparently, will force users to write and install their own filter software.

    Trolls about kernel compliation were tired in 1998. No-one has to compile their own Linux kernel unless they want to. When things get fixed, or new drivers are added, you just accept the vendor updates, like you would in Mac OS X or Vista. In contrast it seems that Haiku is determined that anyone who wants anything except Koki's own personal defaults will need to build their own system from scratch. I don't think they'll bother, when it's so easy to go back to Windows, or just to install a Linux distribution.

    "Linux has no Cohesiveness"

    You can tweak any modern desktop OS until it's unrecognisable. Mac OS Classic, configured by some masochist with a fondness for shareware could be transformed into an unrecognisable sludge. OS X beats this by supplying, out of the box, applications with at least three distinct looks and feels. Yet somehow, despite what you perceive as lack of "coheisveness" the Mac Book is a huge seller, and the Air will sell better than its poor design decisions deserve to.

    Windows is the same, scoff as you might, even a fundamental like MDI, is consistnetly different between Microsoft Windows (made by Microsoft) and Microsoft Office (same company) because the two teams can't agree about how to design widgets, so each designs their own incompatible ones for each generation. The result is that most users just accept that each application behaves a little different, you've probably not even noticed yourself adjusting.

    Yet, Linux desktop projects have a HIG, a style guide for UI design. True, not every application you're going to run will obey the guide, but that's third party software for you. When you get Adobe Photoshop to obey the Apple HIG, you can call me and I'll look into the outstanding HIG bugs filed against The GIMP. Aside from some truly archaic software that modern users have no reason to try (like Xfig) the Linux desktop has come a long way and is still on a good course.

    "Haiku is Easier for Developers"

    This is an old story, and it's always told the same way. But it doesn't quite fit because somehow, despite being "easier" Haiku (and BeOS) didn't get many major applications, including those most obviously and desperately needed.

    The problem is that Haiky makes GUI "Hello world" easier, but it doesn't help you, the developer solve really hard problems. Users aren't much interested in "Hello world" or other BeOS demos. They want to make the next "Dark Side of the Moon" or "Toy Story" on their home computer. They want to work out how much tax they'll owe on their stock options, make a DVD of baby's first Christmas and watch that Youtube video of the Hypnotoad. Some of those are pretty hard to do.

    Deriving your "Window" class from your "Thread" class doesn't help with this any more than deriving "String" from "File" or "BigNum" from "Mutex" would. It's an interesting design experiment, Be tried it, it was a failure (and Be's own developers had figured that out) but Haiku still wants to do it, and not just in a compatibility library, but repeat the whole mistake.

    "Linux is Slow on the Desktop"

    Here's a really bad error, based on repeating without thought what others have told you. Network transparency makes no difference to local X clients at all. The low-latency patches have been making their way into Linux over time. Some of the changes are pretty drastic (they go a long way beyond anything Haiku is trying) and are still held out of tree, and maybe they'll remain there indefinitely. Should spinlocks be interruptible? If you don't know what a spinlock is, try asking Axel, when's he going to add this feature to Haiku's kernel...

    Single-threaded programs? What you seem to be really upset about is poor interactivity due to not pumping the message queue. Sure, a programmer can make a poor judgement here as easily on any operating system, although BeOS / Haiku encourages him to deadlock when busy instead of just not updating the UI... If you have a specific program in mind that annoys you, file a bug asking that it tries harder. That doesn't have to mean multiple threads (although in BeOS / Haiku that's basically your only option)

    Shutting down and booting up fast are really great - if that's what you do with your time. For today's Haiku developers, it's nice, (although sometimes Haiku was shutting down fast because it wasn't writing any changes to disk, I think I'll wait the extra few seconds if you don't mind). But most users don't want to shutdown at all, and they don't want to boot up more than necessary either.

    "Final Thoughts"

    The desktop is truly hard, as JLG found out by losing so many millions of dollars of other people's money. Haiku doesn't have much money, but it does seem a shame to work so hard on fragmentation, to re-invent every possible wheel. After six years Haiku's kernel is a ragged, unfinished thing, with poor driver support and few people who have any idea how it works (this is nothing new, the old Be newsletters used to refer to the Linux kernel documentation because they had none of their own to offer driver developers in many places).

    The funniest thing is that Haiku / OpenBeOS had no choice. Propaganda like that contained in DarkWyrm's blog post had been circulating for so long even then that BeOS people didn't want Linux even if it was the right choice technically. Still, every cloud has a silver lining. Writing your own kernel and finding out that it's hard is a good exercise for a beginner, some of these people may yet become useful LKML contributors.

  2. the GPL is very commercial very big companies who make money from support. It is not friendly at all to small developers who want to make money by selling their apps.

    But the GPL is not the problem for linux as the OS doesn't force the GPL on apps. The problem is the lack of a roadmap and a single unified platform. You can't just download an app from any website and expect to install it easily like you can with any other OS. You have to go through a package manager. You have to test for multiple distros and decide whether to bet on kde or gnome.
    Haiku is the first open source OS that is unified and allows easy installation.

    Linux had its chance on the desktop for many years; it failed to get commercial app support and it is time to give someone else a chance.

  3. The operating systems are now a religion, including the fanaticos.
    I fully agree with the post, Linux server, desktop haiku.

  4. I use Haiku, BeOS, Ubuntu 8.04, WinXP as OS's. I just upgraded to Ubuntu 8.04. I was just editing fstab, issuing sudo chown commands, sudo umount / mount commands, etc. trying to fix a drive mounting issue (still unresolved). This is not a friendly situation that a typical home user will resolve. I agree with DarkWrym, Haiku / BeOS is where it's at. But of course, this is just my choice, feel free to plot your own course.

    Quote from marvin's post...

    "Still, every cloud has a silver lining. Writing your own kernel and finding out that it's hard is a good exercise for a beginner, some of these people may yet become useful LKML contributors."

    Yes, and some of these people will get tired of editing config files over and over just to fix basic usage issues and discover Haiku and enjoy the fresh air. ;)

    Scott Puopolo

  5. This comment has been removed by the author.

  6. Give it a rest! It is so depressing to think about the amount of time wasted on various alternative operating systems. If you are fascinated by kernels and interrupts, take a course on operating systems. Then, move on with your life.

    Every hacker I've met wants to tear down someone else's work in favor of their own vaunted alternative. Sometimes it is justified, but 99% of the time, it is not. Haiku will never be more than a cute project for nostalgic hackers. The sooner you accept that, the better off you'll be. Haiku will never achieve the critical mass required for success, especially without basic applications (you don't even have mozilla yet?!?). Please, check your egos at the door and help the open source community get some real work done. Work on user space applications for as-yet unfilled market niches will have a bigger impact than your silly pet projects. For example, a musician friend of mine MUST use windows because there is as yet no usable VST host or musical composition tool. He has tried the various alternatives and found them horrendous. Please, give up this futile crusade and go work on a clone of Logic or Reason. You do that, and you'll bring in a whole subculture of dedicated users into the fold.

    "Everyone" in the open source community is using Linux in some fashion. You are repeating an age-old mistake by assuming that purely technical solutions will solve social problems. Linux provides a poor desktop experience because the open source development model is fundamentally incompatible with the best practices for user-centered design. It's a great model for producing flexible utilties and powerful libraries. To develop end-user applications, you have to actually talk to users, do experiments to find out what works and what doesn't, carefully choose which features to include and exclude. The more successful linux applications do this with corporate funding (e.g. Eclipse), or by closely copying a successful commercial application (e.g. Rhythmbox). I'll say it again: what the world needs are more of end-user applications, NOT obscure operating systems.

    User-centered distributions like Ubuntu and fedora represent the best hope for the future. Users need a system they can easily install from CD that "just works", that gives them access to quality tools which make their lives easier. There's no reason this can't be done with Linux, and there's no reason Haiku will work any better.

    Open Source software is charity. Linux is the Red Cross, providing the life blood, the kernel. Gnome and KDE are like the salvation army, providing the wardrobe of a desktop environment. Haiku is like an evangelical missionary organization traveling to some impoverished African country, delivering a shipment of Nike sneakers to starving villagers, while proselytizing Christianity. You pat yourselves on the back for a job well done, and return home leaving the villagers well-shod, but diseased, starving, and sorely offended by your cultural insensitivity.

  7. there are a lot of people getting tired to edit config file and consult google for any advice everytime they had problems on linux...

    getting tired for package management and central repository, application dependencies, its conflicts, the update processes, and even the package management between distro's are varies...

    too many heads... too many variations... lack of unification, KDE, Gnome, Xfce, WindowMaker,... ubuntu, fedora, debian,... ext3, XFS, ReiserFS,..., .deb, .pkg, .tar.gz, .rpm... even too many layering:, Desktop Env., Window Decorator, GTK/QT/X, compositor,...

    there are too many problems with linux... why its wrong, just to try to fix it with a new fresh O/S... atleast give them chance!

    if you love it stick to it, if you hate it leave it...

  8. Calm people. :)

    I was the one who made the original post in my report of LugRadio, and I want to emphasize that, for the most part, a lot of the Linux folks that I have met at many conferences in the last year or so just love the ideas behind Haiku and think it is neat.

    It was only this one person who asked the obnoxious question in an obnoxious way, but he was the exception, not the rule.

    So don't let a few individuals antagonize us against other projects, as in the big picture, we are all part of the same big open source community and nurture each other as well as the technological diversity that makes open source so interesting.