Linux is like an addiction for me;  at times it feels a bit unhealthy, but I can’t resist it.

Back in the early 2000′s, I experimented with various distributions while going to school. Since then, I’ve used Red Hat and Suse Linux at work (for computer graphics and animation work) and experimented heavily with Ubuntu at home.

In the past, I tried desperately to make Ubuntu my primary desktop system, but I always came crawling back to Windows when the mountain of incompatibilities forced me to admit that it ‘just wasn’t ready yet’. In those early days, I think I liked the idea of Linux, more than Linux itself.

Boy have things changed in just two short years.  My recent experience porting BEEP to Ubuntu linux has been a very pleasant one.  Linux has really come into it’s own as a viable desktop platform. And I’m very happy to report that my videogame, BEEP, is running great in the newest version of Ubuntu.

Past Experiences With Linux

In previous attempts at making linux my primary operating system, I inevitably ran up against a mountain of issues. Namely:

  • Getting video drivers downloaded installed and working. (Having to resort to arcane shell commands is far more friction than I care to encounter when doing something as fundamental as making my video card work).
  • Setting monitor resolution and enabling multi-monitors. I wish I didn’t even know what xorg.conf was. Editing this thing is about as much fun as chewing a ball of salt.
  • Getting sound to work. Ugh.
  • Getting wifi card to work. This is a real pain because without Internet, you have to go to another system and download the drivers onto a USB drive. Then upon bringing it back to your linux system you inevitably realize that the OS mysteriously refuses to recognize your USB stick. (FFFUUU!!!)

Apart from just getting the components and peripherals working, there’s the added benefit of learning all the ‘linux’ versions of all the applications you need (email, image editing, chat etc). But admittedly, most of these are actually better than their PC counterparts so learning them isn’t so much of a detriment to linux itself, just a hassle.

Why Do I Hate Linux?

Now, if it sounds like I hate linux, that’s only half true. I love linux for it’s potential, but I hate it for the snobbish, elitism extolled by some of it’s main proponents. I should qualify that. What I mean is, there is this pervasive attitude amongst the elite linux crowd that their OS is infallible. These uber-geeks maintain that any supposed ‘usability issues’ are in fact due to user error and ignorance. More specifically, they are unable to admit that serious flaws in linux’s usability are in fact, design flaws.

I subscribe to a very different philosophy. If I encounter friction in the process of utilizing a designed system, I immediately and without apology blame the designer. People routinely blame themselves for being unable to do something as simple as recording a TV show. I take the opposite route. I blame the VCR manufacturer.

I’ve designed so many systems in the course of my career, I can spot a poorly designed one in an instant.  I experience a creeping sensation that the task at hand could be done easier, faster and with less friction. Bad design infuriates me; whether it’s in a coffee machine or an operating system.

So I Think Linux Is a Bad Design?

NO! Linux is actually quite beautiful. At times, it can be downright elegant. The multi-desktop feature and window management are huge productivity gains. As is the speedy execution courtesy of the rock-solid Linux kernel.

Elegant though the foundation may be, Linux is often crippled by an inability to reduce the friction involved in everyday desktop computing tasks. Things as simple as configuring multiple-monitors, listening to an .mp3 (proprietary codecs) or installing graphics drivers can turn into time-sucking bouts of trial/error problem solving.

Granted, this is a bit of a chicken/egg problem. Without widespread support from hardware and software vendor’s Linux will remain replete with compatibility issues. But in order for vendors to dedicate precious development resources to Linux, they need to be assured of a sufficiently large consumer base on that platform. Which is something that will never exist until Linux is more widely compatible. Ugh.

Sometimes I fantasize about a world where the majority of software development effort was directed at linux instead of Windows starting way back in the 90s. We could have avoided Windows ME, Windows Vista and countless virus and security issues all while enjoying a faster, sleaker operating system. Imagine the cumulative savings our society would enjoy without the added operating costs associated with problems directly related to MS Windows security and performance issues.

Linux is a faster, more stable and secure platform. What it lacks is polish and a serious concerted effort on the part of the world’s commercial software houses to support it (with the exception of Google which reportedly uses Ubuntu in their offices and creates Linux versions of their major software products).

Apart from support, Linux also suffers from a willingness on the part of it’s userbase to look past it’s serious usability issues. I almost lost faith in Linux entirely until I heard about Ubuntu some years ago. Mark Shuttleworth (the benevolent dictator in charge of Ubuntu) is the rare Linux guru who fully admits that Linux is playing catch-up in the areas of compatibility and ease-of-use. Without at least a willingness to admit that there is a problem, Linux will wallow in obscurity for eternity.

I tested the early versions of Ubuntu and gained a hint of what Linux could be. But it always ended up failing me in some spectacular way (usually relating to graphic card compatibility issues). I could see the light, but the tunnel was really, really long.

Well, I’m happy to say that the new version of Ubuntu 10.04 is the first version of Linux I have used that did not require me to resort to command line hacks in the course of installation and setup. This is a historical moment of sorts. From start to finish, I was able to do my work completely and without sacrifice using only the GUI tools and applications.

In fact, upon starting up for the first time, Ubuntu 10.04 was able to:

  • setup my monitor resolution perfectly
  • get sound working
  • connect through HDMI out to my HDTV. (with audio of course)
  • setup/connect to wifi internet
  • detect my windows network drive so I could stream my collection of movies/music/photos
  • configure my second monitor. It magically popped up with correct resolution. I didn’t even have to configure it through a driver utility like you do in Windows.
  • installed gcc compiler and Code::Blocks IDE from application installer UI

Needless to say, I was impressed. To be honest, I was expecting to spend a full day wading through online forums to find solutions to all of the above mentioned tasks. But I didn’t have to. IT JUST WORKED.

What About Porting BEEP?

Ok, enough of my opining on Linux. What about BEEP’s port? Well I’m happy to say that it’s fully compiled, linked and ready for distribution (just as soon as the content is complete!). The build process took fully two days of wrangling. There are always issues related to porting software systems between OSs. But mostly it was just a matter of squashing compiler errors (the open source C++ compiler, gcc, seems to be a lot more strict about enforcing the ANSI/ISO C++ standards).

In addition to compilation issues, there was the task of tracking down (and in some cases compiling) the Linux versions of the libraries that my game engine uses. At times it felt like I was going down a rabbit hole. But I emerged victorious! Seeing the game running in it’s full glory in Linux is a great reward.

Fresh off the compiler, it's BEEP in Ubuntu Linux!

Does Anyone Even Game in Linux?

Now after going through all this effort, you might be wondering if anyone is even going to care about a Linux build. To be honest, I have my doubts. But if other games are any indication, you can expect to gain between 5-20% sales by providing a Linux version.

How can this be given that most estimates peg Linux adoption at less than 3% of the total PC user-base? My guess is that those 3% of PC users are:

  1. starving for content
  2. much more likely to fit the gaming demographic
  3. much more likely to want to support commercial software on Linux (Linux usesr tend to be a bit ideological)

So there you have it. My experience with porting BEEP to Linux was completely unlike past experiences. Linux development really has improved dramatically since the days of manual driver installations and hacking text files to set monitor resolutions.

I predicted 2 years ago that Linux would be ‘mainstream’ in 5 years. That was probably an aggressive estimate given the sluggish nature of software adoption. But if the newest version of Ubuntu is any indication, the future of this beloved Open Source OS is bright indeed.