I’m getting old.

When I was young, I was fascinated with hardware and programming low-level stuff to do something nice as an experiment.

I got into programming DOS programs in assembly language (8086). In school, I was fascinated with 6502 assembly language (which wasn’t really that far from 8086, the concepts were mainly the same). As an Electronics Engineer student, my hardware thesis involved creating a hardware interface that detects acidity (pH) in soil with the added twist that it was plugged into the printer port (yes, PCs had parallel ports back in the day) and a program interprets the values that was in the printer port and records them. And yes, the program was in Visual Basic (shocker, right? An unusual use of the Evil Empire’s program environment).

Even friends from the Computer Engineering class asked my help in developing their computer interface projects (which included a voice recognition project for security and a vending machine – which detects what money was inserted into the machine).

One may ask… OK, you’re talking about the past, what has this got to do with Linux?

Let me give you an opinion that will be a shocker to you… Linux might never make it big into the desktop.

Let me start by telling you my experience with Linux. Don’t you get picky with me saying that Linux is the kernel. I am familiar with that.

I started delving into Linux when I was a sales agent of an isp. During that time, all of us sales agents have 8 hours of free internet (dial-up). I started into connecting my 33.6kbps modem through trumpet winsock and downloaded my first linux distribution: Monkey Linux. From that time on, I was hooked. Tried other hobby linux distributions (trilinux, looplinux, etc, settled for a few years with peanutlinux and gained quite a number of friends in the forums), and for a number of years, I was happy. I became an open source advocate. I remember downloading the 100Mb peanutlinux distribution for almost a day (dialup, whoooopeee). I brought linux into a company I worked for as an instructor (before that, I taught short courses for people like MS Office, and Basic computer instruction – I remember teaching a group of PLDT operators, yes operators, the ones that answer the line when you call 109 or 108 for long distance dialing). As I developed instruction modules for Visual Basic, I developed instruction modules for Linux (made even a mod of Peanutlinux, with Jay’s help in giving instructions, called Berkeley Linux, for internal use and passing on to students of the courses) – complete with Gnome environment (1.x at that point), and with WINE, to run some windows programs like winamp on Linux. As usual, I included Xitami and php in the mix of that mod, as standard.

I even got to create instruction modules for OpenOffice (then 1.x); but before that I used StarOffice 5 (when the license was not GPL, but rather free for non-commercial use).

Then reality set in. At first I didn’t mind it. Sound issues. Graphics issues. Wifi and network issues. I simply moved from one distribution to the next (PCLinux, Ubuntu, Mint, Fedora, and currently my laptop distribution, Meego).

And you know what? Even until today, these are still issues!

So, what’s keeping Linux from ever conquering the desktop? A big issue are drivers.

I love linux, don’t get me wrong. Don’t ever accuse me of being an troll – as you’ve seen on my blog, I dig linux.

However, one thing I’ve noticed is that the API for drivers is virtually non-existent. At least with OSX, they have a framework for extending or creating drivers (usually in userspace). Windows has also a framework for driver development (take your pick, WDM, vxD for older version of windows, etc)

When you update kernel versions, you have to recompile your drivers. Yes, I know, there is dkms. I’m not talking about that.

Linux simply has no formal frameworks for drivers. There was an attempt by Intel before (1998 to be exact), to create a framework named UDI, but was dissed upon by Richard Stallman and open source advocates. An excellent point for UDI was given by a former developer in this forum post.

I am a pragmatic person. I use whatever tools are necessary to get the job done. And that means using windows if that gets the job done – I would’ve preferred using open source, but if there is no software equivalent in linux (which is usually the case, unfortunately), I use windows or osx. Looking back, that decision in my opinion would fit in the category of boneheaded decisions of the open source community.

Linux advocates have a NIH syndrome. Instead of using stuff that works, they create a new one, usually REALLY buggy.

Case in point: pulseaudio. A big heaping piece of dog poo. Well, it has gotten better, but the latency issues are soooo annoying.

Yes, useability has gotten better, but when suspend/hibernate issues still exist even today, and wifi issues still exist, there is something definitely wrong. A friend of mine bought a laptop and installed Ubuntu, or Mint on it, and found out it didn’t work. Tried other distributions, didn’t work too. He almost gave up, but was lucky enough to get some instructions from friends who instructed him to get some firmware code through his driver cd and some command line stuff. I was even surprised by this even today, broadcom drivers are an issue (despite having broadcom-wl drivers and bcm driver stuff already).

Even my meego laptop, the lcd brightness control doesn’t work. And I had to compile OpenVPN for it myself (which reminds me, I’ll have to compile the newest OpenVPN and upload to the repository, when I get the time).

The list goes on and on. Enough of my rant. I’m an old guy. My experimentation and tweaking with the OS days are getting to an end (real life has come in – need money to pay my bills). I just need something that works.

Just to end (almost), I’ll give you some pseudo-code for a harmless virus I made as an experiment to learn how DOS works (this simple non-overwriting .com program became my thesis for a fifth-year paper on computer viruses – I created this experiment during my summer vacation in second year college).

Ordinary pseudo-code for a typical .com program:

jmp code

My assembly code:
jmp [viral code]
[original data]

[original code]

viral code:
check if it is already resident (calls a modified int 22h hook with subfunction to see if it is installed)
if(not installed)
move viral code above DOS program memory
call int21h function to modify interrupt table to chain int 21h to viral code
edit 3 bytes at the beginning of the program to the original code
jmp [beginning of code]
[int 21 viral code]

Sounds unconventional, right? But this experiment I made in college helped me a lot in how OSes and computers work. DOS was excellent during that time because they provided a unified API – if I used purely assembly code and manipulated IO/Disk hardware registers directly, my code would have gone way over 1000 bytes (and wouldn’t have worked on all computers at that time) – even using an int13h bios code function would be more complicated to do. After all, it was all about developers. I would like to thank Ralph Brown for his excellent DOS Internals book (duh)! With this knowledge incidentally, I was able to make an anti-virus program in Turbo Pascal for the Tadpole virus (created by some students in another university) during my third year college.

If only linux had a unified driver interface, plus a unified media interface, and graphics interface with frameworks, then it would have leaped above windows and osx. Unfortunately, with the state linux is in, and the bickering and infighting of different groups in them (and misguided open source fanaticism), I really doubt linux will ever reach mainstream status (maybe android and chrome os).

Enough of my rant. What do you guys think? Am I a grumpy old man? Or do I talk sense?

6 thoughts on “A Lament on the State Of Linux”
  1. You make a lot of sense clintcan!

    No matter how many new distros have been released. With each trying to improve on the desktop environment. I’m afraid this will never go beyond the popularity of that legacy OS. Mainly because most if not all software developers have to keep in mind that their products should run smoothly on WIndows since 90% of the world market uses it. Then the rest for Mac OSX. Perhaps linux desktop users comprises some 1 % or even lesser.

    Just my 2 cents.

  2. @junkyou: adding new features to the desktop environment although nice, is not as important as fixing annoyances to the linux desktop – it’s those little gotchas that add up and get you. I don’t see OSX letting you going into a command line just to get a wifi card working. Yes, I get the reason it’s because of the hardware manufacturers. But if you meet them halfway (allow them to create their own drivers for your system, without opensourcing them through an API or driver framework), it would help out a lot in desktop linux adoption. And there’s the problem of patents and licensing that don’t allow hardware manufacturers to release the code.

  3. Hi ClintCan,
    Driver support is (surprisingly) good these days, and I find non-computer-saavy family members and friends moving to Linux (Ubuntu) with no trouble… in stark contrast to only a couple of years ago.

    However, the most important thing will be OEMs including linux on their devices, and including really good drivers (to the kernel). Many users won’t install an OS… ever! If the product is user-friendly and “just works” then why shouldn’t Linux see similar success to Android and ChromeOS?

    It’s an interesting question about a UDI… has a decision been made not to create one? If not, why is it difficult to construct one similar to Windows? I would have thought, if it were preferable for manufacturers, there would be an implementation (which would have caught on)?

  4. Hi haydoni,

    I do agree with you, driver support on linux these days is pretty good. However, it’s the little annoyances that get me – yes, there’s driver support for this graphics card, but no 3d support for the open drivers.

    Also, OEMs are notorious for installing linux without proper optimization to their system. I have an A110 clone netbook (via chipset, via cpu) with a customized linpus linux (and proprietary drivers), and wow, installing another distro on it was difficult…

    Acer is by my experience, also notorious for not customizing their installed linux os (also running linpus, but this time, just a console linux prompt!)

    Anyways, UDI was actually a very good concept, but according to a developer who answered in the forum links I posted (Caldera):

    “Unfortunately, though we did complete a great and innovative piece of technology–which is still usable and appropriate today–we couldn’t get it to go any further, because the effort was primarily driven by a group of engineers and architects, and we couldn’t get enough momentum on the business side. If there had been one shrewd business person truly committed to it, it probably would be commonplace today.”

    forum link here

    Again, it is on the business side that gets it stuck up. And interestingly enough, UDI is still active

Leave a Reply

Your email address will not be published. Required fields are marked *

* Copy This Password *

* Type Or Paste Password Here *

This site uses Akismet to reduce spam. Learn how your comment data is processed.