Friday, October 22, 2010

PC vs Mac Part 2/4 (linux)

I'm going to start off with the underdog of the major operating systems -- linux.  That's right, your friendly neighborhood penguin comes in first.

Where to start, well, let's look at the major attractions of linux; it's free.  Yep, you can download the newest version right off the internet, no charge, and you'll never have to purchase upgrades.  It also has a huge reputation for being computer savvy oriented (for both good and bad reasons).  Being based on the Unix design, people safely assume it is ideal for a multi-user environment, especially over a network.  License fees for hosting services? Nada, nope, nothing.  The included GNU tools and developer environment is outstanding as well that come with basically every distribution.

So, to get started with linux, I mentioned you could download it (or order a cd rom for a couple $USD).  Where do you go?  Well, http://www.linux.org/ is apparently THE place to go, but it might be a little confusing what to do and how to "get linux".

I mentioned all the good things about linux already right?  Well, it only gets more rough from here on out.  You don't really want linux exactly, you will likely want something called a distribution, or "flavor", of linux.  You can also use linux without even installing it on your hard drive with things called "live CDs". 

Confused yet?  Well, it gets worse still.  When you research and figure out what distribution you want, you have to go to their respective website, download what you must, run some sort of install program (probably booting off of a cd in the process), installing packages or other software, configuring your hard drives
with partitions, and a bunch of other things.  Many distributions simplify this process these days and you can usually just click on "next" or "accept" most of the time and it will try to figure everything out for you.  To be completely fair, when you install windows on a computer, it does basically the same thing, but windows has long since "simplified" this process so that the user almost never sees or configures what is happening.  This whole process is flavor dependant, so your mileage may vary.  This is also just for installing the kernel with supporting programs, this doesn't necessarily mean you'll be getting a windows-like system (Xwindows / X11) or window manager (Gnome, KDE, xfce, fluxbox, etc) without going through some nightmare with drivers and configuration first.  Of all the linux systems I've set up, I'd say about 50% of them have given me significant headaches when it came to setting up X and a window manager.

Historically and comparatively speaking, linux (or freeBSD, etc), has had pretty bad driver support from vendors and is usually the main source of problems; compared to an OS like windows.  What is a driver? It's basically software that allows your Operating System to talk to a piece of hardware in a language it understands.  Without an official driver, community members usually have to make their own and then distribute it to the internet as a whole, essentially doing what the vendor failed to do (for whatever reason).

I've personally used mandriva, slackware, ubuntu, and some other obscure distribution that I don't even remember.  These are all "linux", but the difference is simply how much stuff is done for you, ease of install, and the software that gets bundled with it (including drivers).  "Linux" itself is simply the kernel that manages your devices, memory, scheduling, input/output, and other basic mechanisms of how to make your computing hardware work... EVERYTHING else is done by software that you install (and could be mostly done for you based on your distribution).

As I'm sure you can tell by now, this isn't for someone that is computer shy.  My "grandma friendly" scale ranks linux at a 1/10 with 10 being she could start using it today and figure out how to email someone that same day.

Now, this isn't to say that someone a little more technically inclined couldn't set up a linux station for family members and keep everything simplified and give it to grandma "pre-configured".  Lemme tell ya though, if you had to do phone tech support for them though... linux could be a nightmare... thankfully, linux has been "multi-user" friendly for... well, since forever, meaning it is quite easy to configure a system to allow for you to remotely log in and fix things that need to be fixed without anyone else having to know what you're doing or why... all while without loading up a Graphical User Interface (GUI) and using bandwidth incredibly efficiently.  Doing this remote fix with a windows install could be a nightmare in terms of having to use remote desktop or "hacking tools" like back orifice, or some other remote admin tool, and usually for an extra price on top of that.

In terms of programming, linux ranks easily 10/10.  Most development tools are available right out of the box with basically all distributions as well as the most used toolchains to make software.  Things you might be missing can easily be gotten off the internet and for free.  Everything GNU (GNU is not Unix btw) is essentially free for using in whatever way you want and you're basically ready to rock n' roll straight away.  If  programming, scripting, system administering, or network [services] administering isn't your thing... then this doesn't really mean much to you, especially if the idea of downloading a program's source code and compiling it yourself confuses or scares you... yea, stay away.

As a "techie" myself, I'm going to defend this process a bit, by compiling your own software you guarantee maximum compatibility with your hardware and other features that might be unique to your system.  Windows programs you download a pre-compiled binary and everything "just works"... linux compiling can, and does, require some extra effort on the end-users behalf to figure out what flags to use, what conditional compilation could be needed... what dependant libraries am I missing and all sorts of things like this.  Again, a casual user, stay away, for the more technically inclined, this is a feature, not a bad thing (albeit, could be time consuming).  A side benefit of the inconvenience is that you might be able to squeeze out a little more performance from software that you compile yourself for your own system since the compiler can take advantage of it's own optimizations based on your hardware.

Running games on linux... well, who am I kidding, is horrendous.  Wine is a project that attempts to emulate the windows API and directX essentially so as to allow a windows program to run on your linux installation, but that's about as far as it gets.  Loki software tried to make a business out of converting windows games to linux... I believe they went out of business.  There ARE games out there for linux, but large game studios do not have enough motivation to make games for it.  Specifically, the market share for this OS is pitiful at best, leaving games that are compatible for linux as a nice "feature" if the developer and publisher allow for time to do it, just for giggles essentially.

One final note, linux, itself, runs almost on any hardware and with amazing performance.  Have an old system?  Throw linux on it and make it useful on your network.  If you're ok with spending a bit of time messing around with it, linux is an amazing and versatile operating system.  That "freedom" comes at a price though.  Reading through tech documents, install manuals, community forums, and all sorts of craziness could ensue, but the end result is a computer that can do almost anything with a minimal amount of raw hardware power... well, except playing most commercial games.

Not bad for a "PC", right?



An honorable mention goes to OpenBSD, FreeBSD, and NetBSD.  I've used these three as well for a long time.  These are NOT linux, but can essentially be used instead of linux.  You'll have to do your own research and homework to figure out more about these and I highly recommend checking them out if a new OS is what you're looking for to match your needs.

Part 3

No comments:

Post a Comment