|Column Tag:||Inside Info
The Platform Problem
Going cross-platform for the wired generation
By Chris Espinosa, Apple Computer, MacTech Magazine Regular Contributor
Listening to Microsoft pitch their cross-development environment for Macintosh reminds me that Ive been working on solving the platform problem for over three years now.
In case you joined late, the platform problem is the dilemma that an industry faces when theres one dominant standard, and a number of minority players who cant unseat the dominant player because of the huge infrastructure supporting the standard. Having more than one platform makes it look like things are competitive, but the reality is that the minor players really dont have a chance to gain on the dominant standard in the markets it dominates.
Intel vs. everyone else is a good current example; so is Windows vs. OS/2, Mac, UNIX, Novell, NextStep, etc. The dilemma I face is how to help developers continue to make superior products for the Mac OS, even though the customers and the industry infrastructure favor the Windows platform.
And youve seen a lot of attempts by Apple to solve this. Against DOS, it was less of a problem, because there were so many things in the Mac OS that just didnt exist on the DOS side. With Windows, that differentiation is small enough that many customers perceive that the Macs difference is a liability, not an asset. So to bridge the gap between Mac and Windows, weve tried running the Windows OS on Mac hardware; porting the Mac OS to Intel hardware; writing a new cross-platform OS from scratch (Taligent CommonPoint); creating a complete application framework to encourage cross-platform applications (Bedrock); creating a cross-platform component application technology (OpenDoc); doing a cross-platform framework for OpenDoc (OPF); building cross-platform APIs (QuickTime) and media playback platforms (Kaleida Media Player); and the current favorite, licensing the Mac OS to clonemakers to expand the Mac OS market share. Weve done these alone, with partners, and through joint ventures. Some weve shipped; others were killed before they got too expensive. (And a couple just got too expensive without being killed!).
Through all of this, Apples OS market share has remained at pretty much exactly what it was in 1983, after the ascendancy of the IBM PC and the beginning of the IBM clone market. Maybe cloning will change that (after all, so many smart people told us to do it ten years ago that they must be right!). But maybe there is something else that will change the rules and make this API war irrelevant.
Think about what we would like to be able to do. Write something once and deploy it on many platforms. Have a common programmatic interface, but take advantage of the native user interface of each machine. Integrate smoothly with the underlying OS. Be lightweight. Be accepted as a common industry standard, neither monopolized by a single company nor designed by a committee. Support all of the cool new technologies, like multimedia and networking. And be quick about it - we cant wait until 1997 to have it running.
Well, there may be an answer: the World Wide Web.
Ive been cruising the Web recently, and I think its remarkable how platform-neutral it is. By reading the file names in the HTML source code you can see which hosts are on a Windows OS, which are on UNIX, and which Mac; and its clear from the credits on some home pages that a tremendous variety of Sun, HP, IBM, SGI, DEC, Dell, Compaq, Apple, and other equipment is being used as hosts. The Web is an incredibly huge heterogeneous environment running a single application that looks the same to the end user, regardless of the combination of client and host.
This may be the great equalizer that renders the API wars obsolete. Already I can see a large number of applications that I use in my work life that could be implemented as a combination of FTP, Gopher, Archie, and WAIS services, front-ended by a home page. Ive seen Web pages that are very nice forms-based front ends to Oracle, DB/2, and Sybase databases. When I use these pages its clear to me that they are fulfilling my cardinal rule of computing: theyre helping me get my work done without my noticing what technologies are being employed to do it.
It is said that on the Internet, nobody knows youre a dog; well, nobody knows youre a Performa, or an Indy, or a Presario either. This is crucially important. Microsoft made Windows a phenomenon by changing the definition of what constituted compatibility with the industry standard. Before 1992, being a clone of the IBM PC AT defined compatibility; after 1992, running Windows did. If in 1995 the definition of compatibility is can browse the Web, a huge emotional weight will have been lifted from the personal computer industry. The Mac can be industry-standard-compatible without running Windows!
Of course HTML and WAIS and Gopher arent an API. Can they grow to be one? Perhaps. Is the growth process in reasonable, safe hands? I trust the people who built the Internet more than I trust the people who built the Pentium. Can the Web software form a solid layer of abstraction that masks underlying differences in OS and hardware? For many applications, yes. For all? Of course not.
Nothing will ever eliminate the differences in processor opcodes, system calls, and implementation details that make cross-platform programming such a pain. Programmers get paid to bridge those differences elegantly. The point of the Web becoming the next platform is that the popular mind will be saved from having to worry that those differences make a difference. The fear of buying a minority standard will be greatly decreased if all computers are assured a high level of basic functionality and interoperability through the Web. Then we can let Mac be Mac, Windows be Windows, and turn Mac vs. Windows from a worldwide religious feud back into a simple design preference among engineers.