November 29, 2004

OS Libraries and Development

Posted at November 29, 2004 04:57 PM in BitWise , Personal , Technology .

One of the questions I get asked when others find out that I work on Windows, Linux and OS X is "Which platform is your favorite to develop for?" I haven't really had a good answer until today. The criteria for my choice: the amount of time spent fighting the compiler, the OS, or standard system libraries. From this perspective, my favorite platform for development is OS X.

Back story: regardless of how you feel about Microsoft, you have to give them credit for having such a high degree of backwards compatibility (though there are downsides to this, of course). With a few exceptions, the same program can run on Windows 98, Me, NT, 2000, XP, 2003 and possibly 95. The same libraries are generally present (even if they are different versions) and even if there is an occasional quirk, the program at least works.

Moving on to Linux: here we have an almost unmanagable mess of libraries and library versions. Windows may have "dll hell," but Linux has dependency nightmares. Sometimes one program needs a certain library, but that library conflicts with one already installed; it's not a fun time sorting these out. Even worse, there are often many major versions of a given library being used "in the wild" among the plethora of distributions in use. Link against a library that's too new and the program may not work, but if you link against an old library, people with the new one don't benefit from the features in the new library. You can install multiple library versions simultaneously, but then that's just another layer of management. Bottom line: Linux is pretty spiffy but it's completely unstandardized beyond the kernel, making some things endlessly complex (ironically, of course, this is also part of what gives Linux its power).

Now we come to Mac OS X. Here we have the best of both worlds. If I know the system is OS X 10.3, I know that there are a standard set of system libraries available, whether Apple or Unix libraries (unless someone has really bastardized their OS, in which case they get what they deserve). Even better, anyone can download and install standard Unix/Linux software, including complete toolkits like GTK. The standard set of libraries likely means fewer dependency problems, but still give you the power to build Apple or Unix-like programs quickly and easily.

Have I ever fought a really annoying problem on OS X? Absolutely. But that time pales in comparison to Linux. Even Windows, which is standardized, has a lot of propietary components. The standard BSD and Apple libraries in OS X, the excellent documentation from Apple, complete support from the open source community, and a plethora of available tools (open source or otherwise) make Mac OS X a very nice platform for development.

Comments

Okay, sure, but we already knew that OS X is the best OS ever, right? :)

Maybe this would make a good thread for the Controversial forum if there are enough die-hards from each camp..

Posted by Tom at November 29, 2004 09:12 PM

I wouldn't espouse any OS as the overall best--every OS has its pros and cons and has things it is good at doing.

As such, I personally find the "which OS is best" discussions to be boring, closed-minded, repetitious and ultimately pointless, because the people involved usually have their mind made up before they even read it. OTOH, maybe you meant to actually have an intelligent discussion about various OSes and their strengths and weaknesses. That I could deal with. :) And that would be G rated... there's no sex or politics or anything the "youngins'" shouldn't be discussing. :)

Posted by Kevin at November 30, 2004 12:05 AM

In response to your portion about linux'es dependency hell, may I ask which distro you use? does it happen to use RPM as it's package management system? That's where most of the dep. hell comes from, and isn't really linux, per se. Also, most of the time, this dependency hell only comes when you are dealing with binary packages, and not source.


From the standpoint you have taken, I must agree with you...Standarized HW+SW=far fewer compatibility problems.

For me, though, it boils down to money and standardness as far as hardware compatibility

I have spent a total of about $350 on my current system for the whole setup(Which includes speakers, mouse, monitor, and the "box"), by jumping on rebate deals, building myself, and reusing parts from older boxes. Specs are 512mb ram, AXP 2000+ OC'd to 2100+, 17-inch Viewsonic crt monitor, logitech MX510 mouse, radeon 9000, 40gb HD, 300w antec PS. All inside a large case which used to house a 350mhz K6-2. Let's not forget the fact that when some great new part gets some unbelieveable price(EX, 256mb pc2100 ram for $10), I can jump on it, and use it. Such is [usually] not the case with the mac...

If I could find a mac of simillar speed(as in, loads apps about the same speed, can run such things as chess engines at about the same speed, renders pages in firefox at about the same speed, etc - I don't mean clockspeed) for a simillar price, OSX included, I'd probably be one of the first to jump on it. What you are paying for is the standard HW+SW idea, I believe. If I actually had the $$$ to burn on such an endeavour, a mac would probably get quite a bit of use...

----DISCLAIMER START---
I hope this doesn't come across as flame-bait, it's not intended to be so.

All of it is IMHO, and, realise my opinion of one OS or another is very volatile, and may have changed between this comment and any other comment.

If any of it sounds like one part of this is conflicting with another part, it probably is.
---DISCLAIMER END---

Just out of curiosity, may I ask which OS you[Kevin] actually do most of the heavy dev work on, if any in particular?

Posted by Yelo at December 1, 2004 03:59 PM

I use several distributions, but the main one I use is Gentoo. You are right that dealing with source does not generally create these problems, but even still, a given program still will need certain libraries to link, which you may or may not have. You're constantly out fetching new things (which is fun for a while until it becomes tedious).

It is true that Mac hardware is more expensive, I guess that's the price you have to pay for all the wonderfulness. :)

I spend most of my time in Windows 2000, but still spend a considerable amount of time on OS X and Linux programming, testing and debugging on those platforms as needed. I obviously need OS X to develop for OS X, so if there's a problem I'm having with OS X, I might spend most of the day in OS X. Ditto for Linux.

Posted by Kevin at December 1, 2004 08:16 PM
Posting of new comments has been disabled for this post.