The Source for Java Technology Collaboration
User: Password:



Philip Brittan

Philip Brittan's Blog

.NET on Linux, part 2 - "It's the API, stupid"

Posted by pbrittan on September 04, 2003 at 07:56 AM | Comments (6)

Speculation on a strategy for Microsoft to co-opt Linux

Pardon the title. I'm not actually calling anyone stupid. Just couldn't resist co-opting President Clinton's '92 campaign theme.

While writing my previous blog entry on .NET on Linux, I started thinking about what makes up an operating system. Certainly there is the kernel, there are system services, and there is the developer API. If one company is going to control the flow of money related to an OS, it may not need to control the whole OS. And if it set out to control just one part of the OS, the developer APIs would be that part. Controlling the developer API means controlling how software is built on that platform. It means being in the best position to provide tools for that API. It means being the one to arbitrate interoperability.

I believe that Microsoft has a shot, if they so choose, at making .NET a cross-platform developer API that would give them almost as much money-making ability and control over open-source OSes, such as Linux and FreeBSD, as they have over Windows itself.

A good description of the value of controlling the developer API is found in Jerry Kaplan’s book, Startup:

Creating an API is like trying to start a city on a tract of land that you own. First you try to persuade applications programmers to come and build their businesses on it. This attracts users, who want to live there because of all the wonderful services and shops the programmers have built. This in turn causes more programmers to want to rent space for their businesses, to be near the customers. When this process gathers momentum, it's impossible to stop.

Once your city is established, owning the API is like being the king of the city. The king gets to make the rules: collecting tolls for entering the city, setting the taxes that the programmers and users have to pay, and taking first dibs on any prime locations (by keeping some APIs confidential for personal use).

This is the great secret of the computer industry. While the newspapers chronicle the daily skirmishes of computer companies and their products, the real wars are over control of APIs, a subject too arcane to attract the attention of the press. But once an API is established, the owner has a natural monopoly of unprecedented proportions. API wars are brutal, winner-take-all conflicts in which the losers become mere shadows, eking out a marginal existence in specialty markets.
Sun and Microsoft realized this long ago. At a strategic level, Java was an attempt to by Sun to wrestle the developer API away from Microsoft by providing a cross-platform abstraction for developers to code to rather than coding to the native APIs. And it might have succeeded. Sun was able to drum up enough industry support -- and enough players were wary enough of Microsoft’s growing hegemony -- that many vendors jumped on the Java bandwagon. Several capable companies tried to create pure Java suites to compete with Microsoft Office, for instance. Sun also ingeniously targeted the green-field "platform" of the browser as a way to differentiate Java from the cross-platform GUI toolkits of the past. Microsoft was forced by the industry to support Java, at least for a while. If Sun’s plan had worked, all the software we use today might be written in Java and Microsoft might be scrambling to catch up.

But it didn't work. Every pure Java office project, for instance, failed. Developers on those projects have told me that it was Java’s lack of focus on usability and performance that killed them. Those types of apps have to be pixel-perfect and Java was not pixel perfect. So Microsoft retained app supremacy and also retained control of the developer APIs on Windows, which has become essentially the only business desktop platform that matters at this point. Microsoft also performed an "embrace, extend, extinguish" on Java, almost immediately adding proprietary features to their version of the JVM, the result of which has been lawsuits, C#, and banishment of the JVM from Windows XP.

However, Java did go on to find big success on the server, where cross-platform does still matter (because there are still several vendors selling servers; if Microsoft sews up the server market too, then cross-platform won’t seem important on the back-end either). Plus, on the server, Java’s usability issues are far less of a problem.

To reconnect with my original point, I fear that Microsoft is maneuvering into a position to turn the tables on Java and provide what Java set out to provide in the first place: an abstraction layer that will allow developers to write to build high usability apps for many platforms at once. And it has a much stronger starting foundation: firm control of the most prevalent desktop platform, a reputation for getting things "pixel-perfect", and the world’s most popular desktop software, Office.

If Microsoft chooses to go down this route, it can jump-start the process and start making money from Linux and other OSS platforms by making its vast catalog of applications available for purchase on those platforms. Those apps will pull the .NET framework onto desktops that don’t already have it.

A world in which every computer is running Windows is probably impossible, because users get to choose, and there are users who don’t want Windows, for one reason or another. But only developers choose the API and write software to it. Users don’t necessarily even know about the API. If Microsoft successfully attracts large numbers of non-Windows developers to .NET as a way to develop Windows-style apps across all platforms, then they don’t have to wait for users to adopt Windows. The essential parts will be baked into everything they could possibly buy.

Of course Microsoft has to want to do this, which is not a given right now (although they are already testing the waters with the Mac and FreeBSD), and the success of this strategy will depend on how strongly Microsoft can establish .NET as the client side technology standard.


Bookmark blog post: del.icio.us del.icio.us Digg Digg DZone DZone Furl Furl Reddit Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment

  • .NET on Linux, part 2 - "It's the API, stupid" Concerning the not pixel-perfect java platform on the client side, won't .net have the same problem if .net is ported to different platforms ? I won't say "are you paid by very-very-soft" ;-) And the alternative office suits are actually gaining ground. The games on the other hand are not, as far as I know. And no, I'm not a Java fanatic, just find it very nice to work with.

    Posted by: einhlad on September 05, 2003 at 03:17 AM

  • Rotor - ouch! Have to agree. Haven't tried rotor in a while, but my first experience was - ouch. I think the best bet is an application engine on the client side (native code would be best) that transforms XUL into a native gui with hooks into server side logic via web services. The best desktop would then become the one that transforms XUL most accurately, efficiently and aesthetically, and provides the best user experience. This would completely remove the API war, except for the engine writers, who may be OS vendors themselves.

    Posted by: d_bleyl on September 05, 2003 at 06:48 AM

  • .NET on Linux, part 2 - "It's the API, stupid" We all find Java very nice to work with -- that's why we're here! Yes, porting .NET to other platforms is not necessarily easy, and they may face many of the same issues that Java has faced. However, unlike Java, Microsoft does not have to support every platform. They are not at all "religious" about this. They have the freedom to pick and choose a couple of the most popular platforms, and just focus relentlessly on them. Microsoft does deliver a very nice version of Office on the Mac. And there are other apps (Photoshop, Quark) that have beautiful versions on both Mac and Windows. So it is possible (at least on the Mac!). Note: everyone does realize that OpenOffice/StarOffice is written in C++ to native APIs on different platforms, not in Java, right? Again, this is speculation on my part. Microsoft may well decide to keep .NET tied strictly to Windows for the long term, and projects like Rotor may well be purposefully crippled. Thanks.

    Posted by: pbrittan on September 05, 2003 at 07:03 AM

  • mono could be samba redux This is of no help to Sun or to the Java community, but I don't know that the article has the analysis right. If Microsoft tried to take over Linux by way of .NET, it would find that embrace, extend, extinguish is a two way street. In particular, SAMBA is a major thorn in Microsoft's side because it makes linux a better platform for serving Windows clients than Windows Servers. In fact, it coopts the entire infrastructure of Windows and practically begs users to migrate to Linux. I'm not sure that .NET wouldn't have the same effect. Linux is a much more flexible and robust OS base on which to build anything than Windows. If all people care about is the API and the API runs on Linux as well as Windows, then Linux will be the winner. But what should Sun and the java community do about it? When a friend who's totally into Java tells me the interface looks kind of cheesy, I'm inclined to think that either someone needs to improve the look and feel of what Java applications produce, or they should be prepared to get run over by .NET and C#. RM

    Posted by: rbmyers on September 07, 2003 at 09:42 AM

  • Gnu .net http://www.gnu.org/projects/dotgnu/

    Posted by: mbhagat on September 16, 2003 at 03:47 PM





Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds