Wednesday, April 22, 2009

Ubuntu is the Universal Donor

You need an operating system to use a computer. The operating system serves as the bridge between the electronic hardware and the programs and, ultimately, the user. An OS can be as simple as your VCR menu, or as complex as Windows or Ubuntu. When you install Windows on a computer, it examines all the particulars about your processor, systemboard, and other specifications about your computer and builds a bridge between the electronics and the user. Part of this bridge is called the HAL - the Hardware Abstraction Layer. The HAL, basically, allows components of Windows to operate correctly with parts of your computer. The HAL is very important. Without the HAL, Windows has no way to communicate to the computer.

Most of the time, the HAL works fine and doesn't give any problems. But I'm going to give a scenario. Lets imagine a user who has a laptop running Windows. He's in his office and he's typing up a documentl. It's early in the morning and he's got a hard time staying awake, so he gets up, goes to the break room and gets a hot cup of java. He brings his cup back, sets it on his desk, and returns to his e-mail. A few minutes (and a spellcheck) later the document is finished. The user clicks on Print and then gets up and goes to the printer to see how it turned out. Once he gets back, he sets down at his desk, turns, and his cup of coffee is tipped over and now spilling hot caffeinated fluid into the depths of his laptop. Fortunately the user reacts quickly and powers off the laptop, unplugs it, and removes the battery. A visit from the IT guy later and he's got a hard drive that's perfectly safe, and a laptop that needs to get sent to Dell for repairs.

At this point, the IT guy can do a few things. He may have a spare laptop available, but he'll have to copy all of the users files off the hard drive on to the spare laptop, and then make sure all the programs work correctly - a long an arduous process. If he's lucky, he'll have an identical model laptop as a spare. He can put that hard drive in the replacement laptop, power it on, and everything works as normal. This works because both laptops are the same electronics, so the HAL that Windows made on the one laptop will work seamlessly on the replacement laptop. But why won't this work if the laptop is a different model from the one that took a shot of hot coffee? Because the HAL that Windows made - this bridge between the computer and the user - doesn't line up with the electronics of a different laptop. Windows will try to load but will get a nice blue screen with geeky stuff on it, basically telling you Windows is broken and can't work. So having all laptops be identical is beneficial, because if anything goes wrong, you just swap the hard drives and work doesn't get interrupted long. But unless you're a big company with a lot of money, it can be hard to have all your computers be exactly the same. Some department has some money they need to spend before the end of the year, and they want a laptop. Six months later and some other department wants a laptop. When you have singular purchases like this, it's virtually impossible to keep all your computers identical (especially if you want the latest and greatest...or even just a better computer). It's an unfortunate scenario, but there are some ways to work around it.

Without going into great detail, technologies like thin clients, virtual machines and roaming profiles can help with this problem. But even these technologies are hard for a small business to deal with, even though they're inexpensive, and sometimes free. Wouldn't it be great if Windows could re-create the HAL each time it ran? Then it wouldn't matter (for the most part) what computer you stuck that hard drive in.

Linux can do this. Ubuntu can do this.

Again, without going into great detail, there are so many ways to install Ubuntu on to a computer. You can install it like normal, you can dual-boot it with Windows (both Windows and Ubuntu live on the same computer, and you can choose which you want to use when you turn the computer on), you can install it as a program in Windows and dual boot using Wubi, you can install Ubuntu as an application using Portable Ubuntu, you can install it to an external hard drive or flash drive, or even run it off a LiveCD. But the interesting thing is that Ubuntu builds a HAL each time it boots up a computer. Ubuntu builds a bridge between you and the computer each time it turns on. Windows just builds it one time and leaves it at that. You know what this means...

Lets take the coffe spill scenario and change one small detail. The user isn't using Windows. He's using Ubuntu. Fast forward to the end where he's got a hard drive that's safe, and a drippy caffeinated laptop that is in need of a trip to Dell. The IT guy has a spare laptop, but it's not the same as the one that got soaked. Not a problem. Stick the hard drive in the spare laptop, turn it on, and voila. Everything feels like it used to. All the files and programs are still there. Aside from physical differences between the laptops, like the keyboard, screen size, etc., the user barely notices any difference. He can get right back to work, and neither he nor the IT guy have to worry about copying files and making sure all the programs work. Whether you're the user, or the IT guy, this is a big relief.

Naturally, there are some caveats. Depending on what kind of processor you have (32-bit, 64-bit, AMD), you might run into limitations switching between computers with different processors. But those limitations are rare and can often be worked around.

But there's one other nice thing that Ubuntu does. Lots of components of a computer, like scanners, printers, monitors, graphics and sound card, aren't touched by the HAL. Windows uses things called drivers to build bridges between the HAL, the user, and the components. This is because there are so many different optional pieces of hardware, that it's easy for Windows to let the manufacturers release the computer code that lets their component work. You've probably seen this before. You attach a new printer to your Windows computer. Windows says, "Hey, you've attached a printer." Sometimes Windows will churn a bit, then say "Ah, your printer is ready to use." But more often than not, it'll bring up a screen saying "I see you've attached this printer, but I don't know how to use it. Please give me some drivers." At this point, you have to find the CD that came with your printer, or visit the manufacturer's webpage to see if the drivers are there. This can be a pain in the butt. Especially if you have something like 5 or more components that all need drivers. Even if Windows could be swapped between different computers, more than likely you would need to install several drivers to get all your components working right. Again, this takes time, can be a lot of effort, and can be completely avoided if you were using Ubuntu.

Granted, Ubuntu doesn't know how to use every piece of hardware out there. But for the most part, Ubuntu can figure out your hardware and get it working without the user having to download drivers. Ubuntu either already knows how to use it, or it offers to download the drivers for you from the Ubuntu repositories. So it's perfectly feasible to continually change out the computer you're using just by sticking the hard drive in another computer. Not only can this help in the coffee scenario, but it could also be helpful when a business phases out it's old computers and gets new ones. Normally the IT department/guy would have to set up each new computer, get the applications installed, and then copy the users' files over and make sure everything works (there are tools that can make this easier, but they can be hard to use, and more trouble to set up if you don't have all that many computers you're upgrading). It's perfectly plausible to perform the same upgrade with Ubuntu, but instead of all the work, you just take the hard drives out of the old computers, put them in the new computers, and virtually nothing changes, except now you have the benefits of the new computers. Now I'm not saying that this kind of migration is not without issues, but some planning could make such a transition very painless.

In fact, remember that big list I gave of all the ways Ubuntu can be installed in a computer? I mentioned using an external hard drive, USB flash drive, or LiveCD. With these technologies, the computer comes with you. You don't have to worry so much about having your computer with your programs and your files on it. The files and the programs are on the external drive/USB stick/LiveCD. I have installed Ubuntu onto a USB flash drive. I added some extra programs I like, and I have some personal files on it. But I can take this to any computer (that supports booting from a USB drive), stick this in, turn it on, and voila! There's my computer! Any changes I make, like new files, new programs, customized settings, all get saved back to the USB drive. So when I stick it in a different computer, all those changes come with me and work on the different computer. It's not without possible issues (the processor issue I talked about earlier, the rare piece of hardware that doesn't work correctly), but for the most part, it really is as simple as that. Ubuntu really doesn't care what computer it's running on. It doesn't care if you're using a different computer today than you were yesterday.

Ubuntu is like Type O negative blood - a universal OS type.

No comments:

Post a Comment