Thursday, November 05, 2009

Living with Linux part 1

As the teeming masses who read this pimple on the ass end of the blogiverse know, I have had an on-again, off-again relationship with the Linux operating system. You know the story, I would decide to get my geek on by installing the open source OS on Allegra and constantly vowing that this would be the one time that I'd finally cut the ties to Redmond and totally embrace life with the Penguin.
And then inevitably, I'd chicken out because my various handheld devices would not work with Linux or something would happen with my system that would piss me off enough to scurry back to the buggy, yet familiar world of Windows.
But now that I have a netbook that runs Windows XP and iTunes and the Blackberry Desktop Manager and all the other Windows software that keeps my various handhelds happy as well as insures that I no longer have to learn and live with Linux without a safety net, I went ahead and installed Mandriva Linux on Allegra and I swear on a stack on "Oh My Goddess" unflopped manga volumes that I will not reinstall Windows on Allegra again.

Really!!
I'm not kidding this time!
I am really, really, really serious!
Trust me!!!

Hey, I'm swearing on a stack of Oh My Goddess unflopped manga volumes, which means that if i renege on this, Belldandy, Urd and Skuld will come down to earth and slap me around like a bastard stepchild. Which may not be a bad way to go, but...
With all that out of the way, I'm writing this piece to expound on my ongoing experiences living, learning and ultimately loving this geek-friendly operating system known as Linux.
First, I can see that some of yinz need a little education as to what Linux is and what the term open-source means. You can get the detailed information about Linux here But for those who don't want to slog through the geek-speak that Wikipedia article contains, suffice it to say that Linux is an operating system much like Microsoft Windows and the Mac OS put out by Apple.
The major difference between Linux and those other two OS's is that Linux is open-source and Windows and Mac OS aren't. Now what pray-tell yea, verily does the term open-source mean? Well grab your propeller beanies and sit down because Uncle Pee is going to expound from his vast knowledge of geekery and break it down to you in a way that even a past Phi Theta Kappa chapter President can understand it.

Open Source 101. The heart of any computer program, whether an operating system, an office suite, or even a Twitter client is its code. Code is the instructions that tell a computer what to do in order to perform a certain function. There are two types of code: object code and source code. Source code are the human-readable instructions that programmers write in a particular language to create a program. Here is an example of source code:
This is a simple BASIC program which asks for two numbers, adds them together, displays the sum and then asks the user if they want to continue. BASIC is an old computer programming language that many programmers learned as a first coding language back in the day.

10 input a
15 input b
20 let c=a+b
25 print c
30 input"Again?", a$
35 if a$="y" then 10
40 end.

This is source code. It can be read by human beings that are familiar with the BASIC language. This simple program can be written in hundreds of other programming languages, but I chose BASIC because even the most ungeeky person can figure out what this program will do. While humans can read this code with ease, a computer can only understand 1 and 0. So this program has to be converted into a form that a computer can understand and carry out. In the case, of this BASIC program, I have to run this program within a BASIC interpreter which will convert each line of the program as it is run into object code that the computer will understand. Other languages like C or C++ use what is called a compiler that take the program as a whole and create a file out it that can run on its own with out needing another program to run it.
Now because I wrote this program, I own it. It is my intellectual property to do with it what I see fit. I can either compile the source code into object code, sell that code, and keep the source code for myself and alter it and expand on it as I wish and issue updates. Or I can choose to give the source and object code away to anyone who wants it, and also give them the ownership rights to that code, so that they can expand on it, add new features and so on. Microsoft and Apple subscribe to the former model. If the code I wrote belonged to Microsoft or Apple, you would not see it on this blog. It would considered a crime for me to possess that source code because they maintain that it is their code and they have not released it in source form. What you get when you buy either a computer with Windows or Mac OS preinstalled, or a DVD with those operating systems burned onto it is the object code. The millions of 1's and 0's that a PC or Mac can understand that make up the operating system. Microsoft and Apple maintain a tight control over the source code or the human readable instructions that make up the OS and their other programs. They make their money by selling the object code and maintaining ownership of the source code.
Linux is the opposite. The various companies that make Linux distributions like Mandriva, Fedora, Ubuntu, Debian and so on, make the source code available to anyone who wants it. You may have to jump through some hoops to get it, and obviously, you have to have knowledge about programming in order to update or improve on it, but it is available to the public. Unlike Microsoft and Apple who own the entirety of their operating systems, Linux has no central owner. The companies I mentioned, all have the same basic underpinnings of Linux as the foundations of their particular distribution, but they are free to add their particular features on top of that foundation to create a distro that is unique to them.
The central foundation of Linux is maintained by an immense community of very talented programmers who give of their time and expertise to update and upgrade the thousands of programs and utilities and such that make up the Linux operating system. It is a programming team that numbers in the millions. And any programmer that has the chops can contribute code to the community.
Now that code has to pass muster, and it is reviewed by the gatekeepers who maintain the various parts of the OS, but this is the concept of free, open source software. The source code is not locked away in a vault in Cupertino or Redmond, but is on the internet available to all. And just because it's open source does not mean that it cannot be sold. The companies I mentioned sell versions of their Linux based operating systems to individuals and businesses, the difference is that ownership of the source code and object code transfers to the person or business buying the code, and if they have the programmers that can upgrade that code to make it work for their particular need, they can do so.
Now this is just the basic premise behind open-source software, more detailed explanations of the various licensing schemes and their rules and limitations are available at sites like www.linux.org, which is the main Linux site. That site contains all the really geeky syuff about Linux.

I've decided to mak this blog post into a multi-part deal, so as not to overwhelm the readers. The discussion of Linux can't be contained in one post. There's just too much content to be covered. And I've barely scratched the surface, so stay tuned for the next installment of "Living with Linux".
Post a Comment