So close, but yet, so far...

Regular readers of Contrariwise know all too well of my long-term affection for the Macintosh operating system, and especially its more recent incarnation as Mac OS X. I suppose that it is an aesthetic thing with me -- I appreciate good design and Apple has almost always been good at getting the details right.

At the same time I am also an unabashed fan of Linux, or as some would insist, GNU/Linux. Admittedly, though, it is the kernel I find really attractive. Even more correctly, I find Linux attractive for two reasons. My initial attraction was born out of my contrarian nature. I just loved the notion that a bunch of volunteers working together across the Internet could produce a production-quality operating system kernel. My ongoing love of Linux relates to its technical merit and the fact that I have run it as a server system for more than a few years now and it has never given me even an oodle of trouble. System administrators just like that sort of thing for some reason.

We are all insignificant in the grand scheme of things. My own insignificance is evident in the fact that, despite my great affection and promotion of these two platforms, Microsoft Windows still runs on far more machines than either of my favorites. And, to add insult to injury, I find myself routinely troubleshooting Windows-based machines for problems that do not seem to exist elsewhere. Thus, while I find the technical pedigree of Windows to be lacking, I tip my hat to the behemoth of Redmond for their unbelievable ability to market a "good enough" product and make obscene profits in doing so.

Marketing has never been my forte. Heck, I have never shown the least bit of aptitude for it. Nonetheless, I do recall a very important lesson I learned in my first year of business school. Our first marketing assignment was to design a campaign for promoting a new hospital medical service. This was a good assignment for me as my uncle had been a senior hospital manager for years. I called him to get some direction on this and his core advice was central to the project. While my initial reaction, and that of my classmates, was to educate potential patients about the new service, my uncle correctly pointed out that patients do not for the most part make decisions about hospitals. Rather, it is the doctors that decide which hospitals they wish to utilize in their practices. Thus, the decision maker, and the individual to whom a marketing program should be directed, was the doctor and not the patient. While initially counter-intuitive, this was immediately obvious to anyone engaged in the business.

Computing platforms are similarly counter-intuitive, at least at first. One would think that you market a platform, which is simply defined as a collection of software on which other software can be developed, to end users. But the majority of end users do not purchase a "platform" for the simple reason that most end users cannot create their own software. Thus, if one is selling a platform, such as Windows, or Linux, or Mac OS X, or whatever, you do not sell it to the average Joes of the world, but rather, you sell it to developers. Microsoft understood this earlier and more completely than any of its competition. Indeed, one could argue that they continue to "get" this part of the business better than any other company. Platform development is won and lost through battles for the hearts and minds of developers.

The question for the platform producer therefore becomes, "What do application developers wish to have of their platform?" A large potential market is obviously of interest. Tools are very important to developers, sometimes emotionally so, thus, good tool support is critical. Being an inexpensive development platform is also a virtue seeing that many developers are "economical" with regard to their hardware and software spending habits. For many years Microsoft was the hands-down winner in addressing these interests.

Enter Linux. No, make that GNU/Linux. While there is a significant amount of "user space" GNU technology in the various Linux distributions, the real contribution of GNU to the huge success of free and open software is in the area of development tools. Indeed, it is difficult to imagine what not only Linux, but the various BSDs and Unix-like systems in general, would do without the GNU compilers, make tools, autoconf, and dozens of other critical software development components. It is these tools that are at the foundation of the momentum that Linux enjoys today.

But, as I said above, tools are but one part of a three part equation. What about the "big" market and "cheapness"? The latter is simple now, but was not always that way. There was a time when the GNU development tools were available for use, but needed to be hosted on expensive traditional UNIX-based platforms. My first exposure to the gcc compiler was on a Data General AViiON system running their own DG/UX UNIX variant on Motorola's extinct 88000 RISC processor. For the individual developer, this was not an inexpensive proposition. Even on commodity Intel hardware, UNIX was in the late 1980s and early 1990s an expensive proposition. Thus, the first major success of Linux the kernel was in enabling free and open source software to be economically accessible to scores of independent developers. All of a sudden it was cheap and easy to develop for UNIX-like systems.

Which leaves "big". This is the interesting part of the equation. "Big" is a relative term. Many open source developers engage in the activity for the respect of their peers. Thus, "big" in this relatively small community is "small" in the big picture. The small market was big enough and work on the core components of the platform got going in earnest. The stars aligned and the development of Linux the operating system matured just as the growth of the Internet exploded. Of course, the Internet had long run on UNIX-like systems, so Linux got drafted to power a lot of that growth. Throw in the development of the Apache Web server and you have some serious momentum, which Microsoft will tell you is critical for the development of a new platform.

Today that momentum is driving Linux further up the food chain into desktop use. There is no question that Linux is the first platform since the 1980s that looks like it could challenge Microsoft's dominance of the desktop. Only time will tell for sure, but the prospects do look good.

So, what does all this have to do with Mac OS X, which is where this piece started? It has to do with the things that Mac OS X lacks in terms of becoming a more predominant platform. Let us examine the three yardsticks. In terms of "big" market, the Macintosh's three to five percent of the market is unappealing. Apple does ship respectable development tools, but they are clearly not superior to other tools available to developers and, in fact, Apple uses gcc for compiling code. Finally, though inexpensive, Macintoshes fail the "cheap" test. So, perhaps we should join the chorus of pundits who have long declared Apple dead or dying.

Apple is not even close to death, though it may have been once or twice in the 1990s. However, despite the elegance, technically and aesthetically, of Mac OS X, it is far from realizing its true potential. As per the above, it seems likely that Apple will continue to be a marginal, though influential, player in computing. This need not be the case. With its UNIX-like underpinnings, Mac OS X could theoretically host many of the desktop applications that are being developed for Linux.

The work currently taking place to port KOffice and konquerer from the KDE project represent a good case in point. KDE is a graphical desktop environment and development platform for UNIX-like systems that gets richer with each release. It is based on the object-oriented Qt libraries, which are a product of Trolltech and are used to develop applications that can be run on multiple platforms. Application developers write to the Qt libraries, which in turn talk to the underlying system. The developer's program ideally knows nothing about the underlying system, which means that if Trolltech does its job right, the program just runs correctly anywhere it can find the Trolltech libraries. The good news for Mac OS X is that Trolltech provides its libraries for Apple's system, meaning that developers can take the KDE applications and relatively easily adapt them to run on the Macintosh.

In addition to KDE, UNIX-like systems can use GNOME as a desktop environment as well. GNOME, too, is a graphical desktop environment and an application development platform. There is at least one active project afoot to facilitate the porting of GNOME applications to Mac OS X. Again, like in the case of KDE and Qt, Mac OS X's UNIX-like underpinnings make it a good potential target for hosting such applications. The primary issue is that most UNIX variants use XWindows for displaying a windowing and drawing environment while Mac OS X uses the proprietary Quartz and Aqua technologies. If the "GNOME" layer were ported to run on top of Quartz/Aqua, however, then cleanly written GNOME applications could run "natively" on Mac OS X.

NeXT's acquisition of Apple also brought Cocoa, known in a previous life as NeXTStep/OpenStep, to Mac OS. Cocoa is a very mature and elegantly designed application development class library. In fact, in the final days of NeXT, OpenStep ran very nicely on top of NeXT's Mach-based operating system, Sun's Solaris, and even Microsoft Windows. From what I have read, porting between the environments was remarkably simple. At this point, Cocoa is a Mac OS X superset of OpenStep, the latter being an open specification of the library's programming interfaces. If it so chose, Apple could make Cocoa available on Linux and/or Windows, which would increase its attractiveness to developers. Heck, would it not be neat to see an Apple branded product running on GNU/Linux that allowed its own Cocoa applications to run natively on Linux. If it the recent suggestion that only the iPod is making money at Apple, maybe Apple could make its computing profits in selling its excellent iApps on Linux using Cocoa as its porting library. Ditto to Windows? Again, a "big" target market attracts developers and having developers use Cocoa is good for the Macintosh business.

Apple probably does not have the potential to grow to more that ten percent of the computer market regardless of the quality of its offerings. However, it probably has the potential of growing to somewhere approaching ten percent, which would be a doubling of where they are today. The issue is application support. Assuming that the momentum of Linux in the desktop marketplace is real -- many informed observers feel that desktop Linux market share will surpass Apple's during 2004 -- it makes sense for Apple to benefit from its status of a not that distant relative of Linux. In order to do this, however, Apple will have to make it easy to preserve the investment of resources of application developers targeting desktop Linux. A release of Mac OS X supporting Cocoa, GNOME, and KDE applications in addition to the more traditional Macintosh Carbon-based programs would represent a very good proposition for application developers, especially whereas many GNOME and KDE applications are already supported on Windows. In the race for platform sales, it is those who best court software developers that profit the most. Apple has never been that company, but they have the potential at this juncture to dramatically raise their profile. Apple likes surprises, let us see what they may have up their sleeve.