Why Cross-Platform Matters (and Doesn’t)

It shouldn’t be much of a surprise to anybody that knows me, but I do use Linux quite frequently, although one of my main machines is an XP laptop.  However, said laptop uses Free/Open Source Software exclusively for every single task I can think of.

Recently, I’ve been reading a lot about “the problem with Linux is…” and somebody chiming in with their own two cents on the matter.  And every time the possible problem is something different: no coherent standards, too much choice, too difficult for the average user to install and utilize.

The one thing that does intrigue me though is that there are some gaps in the application stack for Linux and other F/OSS operating systems out there.  Sure, you’ve got the GIMP for graphics work, OpenOffice does a great job of word processing and spreadsheets.  But there’s still some gaps to be had.

All of the F/OSS software I use also happens to run on Windows, Linux, and OS X.  Achieving that kind of portability across these three disparate platforms is absolutely amazing.  And I think it’s also something that other companies should not ignore.

MoviePartners managed to save itself a few thousand dollars a month by switching to a F/OSS software stack.  It literally saved the company.  With further automation, we were able to cut our overhead by over 40%.  I’m sure in the future we’ll be able to bring that percentage up even higher.

If you’ve got a good product and you lock yourself into Windows, you’re still losing a significant market share, especially if your software is server-side.  I will give Linux the keys to the server kingdom; the 2.6 kernel takes server performance and puts Microsoft to shame in that category.

So why bother?  I’ve heard every humdrum excuse in the book for not making software available for other platforms.  What they say 99% of the time to me is that there’s just not enough users there to warrant the extra time.  I gotta call hog snot on this.

If you plan your design properly, pick the right tools, and implement properly (and not against a marketing-directed drop date) you can release on multiple platforms, most likely even simultaneously.  And if followed all the way through, the bulk of the work is done by a core team of programmers, with only a few needed on the fringes for each platforms OS-specific gotchas.

It gets even easier with Python.  All you really need to build and test at that point, provided you planned and coded properly, is your test setups of each operating system and run the installs through their paces.  If your core software is to be desktop-oriented, then you may want to consider this as an option.

Of course, then you run into things like this blog post concerning a port of Braid to Linux and you start to wonder whether or not it’s a “drinking the Kool-Aid” thing or if Linux has some rather vociferous, arrogant, and frankly ungrateful people in its community.  The post itself is really short and rather benign, but the comments are what totally stand out.

I really feel bad for the Braid developer in this case;  he is a veteran game programmer with experience on both Windows and *NIX systems, and he still got berated and told he didn’t know what he was talking about.  Of course, he is using C++ and most likely had some pretty heavy ties into DirectX or through the XNA libraries, which means he had tied his game to Windows or XBox without really even thinking about it.  However, I have not seen his code, so I simply do not know for sure if he planned and coded for multiple platforms from the get-go.

Granted, Python is only one such language, it’s not for everybody to use, and C/C++ are the reigning champs when it comes to overall portability and power.  If I had to choose only 2 platforms I would target initially, it would be Windows and Mac.  Macs give you a *NIX operating system that is (somewhat) sane and stable so you’re not trying to hit a moving target all of the time.

I think if Linux really did want to grow up and be a big boy with more than 0.93% market share, then it should consider first fixing all of the bloated, buggy, and missing features at the core up (X11/XOrg, I’m looking at you), then come up with some sane and reasonable architecture for programmers, both games and otherwise, to hook into without jumping through hoops or wasting their time writing thousands of lines of workaround code that should not be needed in the first place.

If you made it this far, then you’ll notice that there’s a little bit of blame to be had on all sides on this.  Linux wants to be useful and wanted and have cool games and hang out with the other kids but can’t get past tripping over its own feet because it tied its own shoelaces together and refuses to untie them.

Businesses see it for a powerful and free alternative for their servers and here I will agree that it is indeed a powerhouse.  On desktops, not so much.  Desktop software has an almost entirely different set of requirements than a server, including sound and video hardware that should Just Work.  With stable APIs like DirectX and Win32 (a mess in itself but hasn’t changed much at all in years) it is extremely attractive to software houses to make things for a platform that Just Works.  Let’s just forget Vista for right now;  even Microsoft has all but acknowledged it was a failure.

It’s almost a null-starter here with Linux though, since the community isn’t as willing to accept proprietary anything in there contaminating their holy free source.  Get used to it.  If it can’t be done one way, people who want things to Just Work will accept the easiest way to get to that point.

%d bloggers like this: