Clay Shirky didn't fret when Microsoft announced last week that it would no longer include the Java Virtual Machine in its upcoming Windows XP operating system. The Hunter College professor and Net pundit understood that the move could hurt competition and diversity on the desktop. He also knew that the company's abandonment of the JVM, which lets computers run applications written in the Java computer language, threatened to make it harder for Java programs to proliferate. How many users would bother with Java programs if they had to download the JVM to use them? How many programmers, given the additional hurdle, would write Java programs when they couldn't be sure of who would access them?
Would Microsoft successfully cut off Java's air supply as it had done to so many other competitors?
While others pondered the fate of Java, Shirky saw an opportunity: He figured that PC manufacturers could trump the software giant. In an open letter on the Web, Shirky asked Dell, Compaq, IBM and other manufacturers to install the most recent version of the JVM "on every personal computer you manufacture."
"Your support for Java will immediately provide impetus to, and an outlet for, the talents of the world's programmers, as well as increase the value of your hardware to the user and encourage the diversity of the software ecosystem," Shirky wrote. "More importantly, your action will secure for your customers ongoing access to a vast and growing body of important and innovative software."
Will the PC manufacturers agree? Shirky isn't sure. But he remains confident about Java's chances and he's determined to keep fighting for diversity in what he calls the "computer ecosystem." In an interview with Salon, Shirky explained the genesis of his open letter, why PCs need Java and how Microsoft is waging its battle against open-source software.
Why did you write the letter? What are you hoping to achieve?
Well, when I saw the decision last week to allow the OEMs [original equipment manufacturers] -- the Compaqs, the Dells -- a greater flexibility in configuring the desktop, there was this general gnashing of teeth: "Oh, this is too late! This is not really a big deal anymore because there's no more competition in the browser space."
But it seemed to me that was being too defeatist and that the people who were making that case didn't really understand the potential significance of this change. The thing that Microsoft has always had on its side is low coordination cost. If Microsoft decides it's going to do something and put it in Windows, it can instantly coordinate across many hundreds of thousands and ultimately millions of desktops by simply putting it in the new release of the operating system. No one else, except very recently AOL, has that kind of reach. But that's because the OEMs have been locked out of the conversation. Once you've got Dell, IBM and Compaq, or Compaq, Gateway and Toshiba -- some small group -- to agree to coordination costs, then the others would probably join. So you're now coordinating among half a dozen players, not several dozen players.
So I thought, Where could this influence or improve competition? Everyone is focusing on formats -- on RealPlayer, for example. But it occurred to me that it could create competition at the level of the API [application program interface]. There's not any competition for the desktop operating system, but if there were more than one way to write a program that talks to the desktop operating system -- which is to say a program that talks either to Windows directly or to the Java Virtual Machine -- then you'd be back to competition on the desktop. So it seemed to me that Java was a natural target for this small group of computer manufacturers to be able to offer.
The second half of this relates to the fact that the PC is slowly becoming a server. Napster has shown us places where content can be served outwards from the PC across the Internet, rather than having to be stored on big expensive Web servers like Yahoo. And Java is the server-class programming language of choice. So much code for the server has been written in Java. So if the PC manufacturers adopted Java, they would immediately enable their users to use code that has been built and debugged over the years. And as we start to see things like peer-to-peer networks and Web services, where the distinction between client and server is somewhat blurred, this could be a huge win for everybody.
Did you write this letter to gain publicity for the cause of competition or out of a fear that the computer manufacturers wouldn't bother to keep Java alive? And do you think the computer companies will respond?
The letter was written out of fear that they would not [install the JVM on their own]. It's curious to me. As I was talking to my friends in the software industry, people who have been around a long time and know a lot of people, I realized that none of us knew anyone at the computer manufacturers. We've never had to talk to them before. There's never been anything to coordinate between the Internet people and the computer people. I don't know what they're thinking. Maybe they're all sitting around their boardrooms making plans to provide Java, but the letter was in part an attempt to reach across this divide and say: "We've got a lot of software you can use and you've got a lot of hardware we can use. There's a really simple way to make things happen right now."
So you see Microsoft's choice to abandon Java as an opportunity rather than a defeat. But what if that opportunity is never realized? What is the significance of Microsoft's decision?
Given that Microsoft's commitment to Java evaporated when it was told it couldn't embrace and extend it, the negative in the current announcement is a marketing negative, not a software announcement. If it furthers the perception, as Microsoft is eager to do, that there's no point in writing Java code to run on the PC, then it's a negative. But in terms of the loss of Microsoft's version of JVM, that's essentially an evolutionary niche that's just opened up.
How do you think this new development will affect the Java resurgence that you noted in the article you wrote last month about LimeWire and other Java programs?
This is the thing that originally put it in my mind. I was analyzing Gnutella clients for another project that had nothing to do with Java. I downloaded several of these and liked LimeWire the best. Then and only then did I realize it was written in Java. And I said, "My God, I thought Java was dead on the PC." I've never seen anyone write anything to run either fast enough or have a good enough interface.
That's when I realized that a lot of the work that's been done on [Java] hasn't shown up on the PC. In addition, of course, PC hardware is now made of gigahertz chips and 60-gigabyte drives for $1,000. So it's just one of those things that when it launched in 1995 was too slow, took up too much space and so on. But now the hardware has gotten inexorably better, to the point where it now makes sense to write software for the PC in Java.
So is this a turning point for Java? Will Java die if the OEMs don't adopt it?
I don't think the OEMs not picking it up kills Java. I think what that says is, this is a language for everything but the PC. And I think it's too bad to treat the PC as a special class of device. Java right now runs on PDAs and cellphones and servers. It would be great if it could run on PCs as well because what we're seeing is an increasing integration of the fabric of the Internet at the level of architecture. Web services and peer-to-peer are ideas about architecture that say, "We're treating all devices as peers." It would be great to have a language that reflected that.
Where does Microsoft's .Net campaign fit into all of this? Is Microsoft simply trying to push Java to the fringe, so that .Net will be adopted more quickly?
I would put the causal arrow in the other direction. Microsoft's .Net is in part a result of the thinking it did when Java came along and actually rattled its cage. If you look at the work it's doing on C# [pronounced C sharp] and the CLI and CLR -- the common language infrastructure and common language runtime -- it's plainly Microsoft's answer to Java. And in many cases, it's a good answer; it might even be a better answer. But it's not a competitive answer if you can't also use Java, because the thing Java has is millions of programmers, hundreds of millions of lines of code, thousands of debugged programs. And what Microsoft is trying to do -- if you look at the languages that the CLI handles, despite its anti-open-source stuff -- it's going to support Perl, it's going to support C++. Conspicuously absent from that list is Java. Instead, what it's trying to do is write something that ports Java source code to C# source code. What Microsoft wants people to stop doing is writing code in Java, and much of what's going on around C# and CLI and CLR is an attempt to make that happen.
Will it work?
Well, one of the things that Microsoft has succeeded brilliantly in doing is suggesting that Java is open source, which it is not. People who are disinclined to like open source are also disinclined to like Java, which is essentially a piece of marketing that Sun has never been able to counter. Do I think that Microsoft will be successful in getting people not to write in Java? No, because Microsoft will never own the server in the way that it owns the client. Java is too useful in running on different kinds of devices -- and it's simply too good a language. I do, however, think that without some countervailing effort, Microsoft can certainly stop any consumer client software from being written in Java. And that would be a terrible shame.
You mentioned open source. What do you make of Microsoft's well-publicized anti-open-source campaign?
I'm actually on a panel with [Microsoft's] Craig Mundie next week at the open-source convention in San Diego. But that stuff is very confusing because there are people within Microsoft who get it about open source and who are interested in it. And clearly Microsoft has learned a lot from the open-source movement because it's pursuing this shared source strategy. So, again, it's a little bit like trying to make Java open source -- it goes around talking about its dislike of open source and then when you press Microsoft on it, it says, "Oh, did we say open source? We mean the GPL" [the General Public License, a popular open-source license that prohibits additions that aren't also open source]. And the minute it gets in front of the popular press, it says "open source" again.
What Microsoft is trying to do is talk about some of the commercial restrictions of the GPL and create, with this vague kind of hand waving, the impression that these restrictions apply to all open-source software -- which they plainly don't, and Microsoft knows they don't. Whatever else you can say about Microsoft, it doesn't hire dumb people.
So the open-source thing is largely a smoke screen. It's exactly what Microsoft is doing with Java. You simultaneously repudiate your competitor and adopt what you think is useful. It's not exactly bait and switch but, rather, unbait and switch. It simultaneously wants you to think that Java is bad and that the things that Java does is good -- because if you like the things that Java does, you'll like C#, provided that it can convince you not to associate those good things with Java.
In terms of open source, what everyone who's read "The Cathedral and the Bazaar" knows is the "many eyes make bugs shallow" bit. That three-paragraph chunk of the paper alone would have revolutionized the software industry. And seeing that, Microsoft has said, "There, that's what we want from the open-source movement. We want all the rest of this crap to go away because it threatens us, but we want to be able to use many eyes to debug our software."
Shared source and the open-access notion with the Microsoft development network are attempts to simultaneously discredit open source and take the good aspects of it into Microsoft.
I wonder if the P.R. campaign is working, if people are being turned off to open source.
The people who came up through the Internet don't have a problem with open source. To them, the open-source arguments make sense. But there are certainly plenty of people who don't feel that way. Actually, a CEO I heard recently called it communist. Even though it's plainly libertarian, his understanding of it was so general. He had a negative view of it as a social movement, therefore he thought it must be communist. I am sure there are plenty of people like that out there.
The open-source thing is tough to fight because you can point to lots and lots of incredibly valuable tools. If you use Google, then you should be grateful for open source. There are simply too many counterexamples for [Microsoft's anti-open-source campaign] to be widely effective. However, even being incrementally effective is to Microsoft's advantage because, again, Microsoft tries to create fights in which whoever has the lowest coordination costs wins. What open source does so beautifully is offload the coordination cost of software development onto thousands and thousands of developers. Microsoft can't win against that and it knows it.
But a battle where coordination costs help Microsoft is a P.R. battle, because if you have one message and say that message over and over again -- even if it's not true -- it seeps in. And the open-source movement, precisely because it's uncoordinated, has very high coordination costs for things like P.R.
I've talked to a few open-source advocates who believe that Microsoft is in decline, that it's a paper tiger. What do you think? Is the company on the wane?
I don't think Microsoft is a paper tiger, but I do think there are structural weaknesses that show up in any older company. In particular, the strategy tax for being Microsoft -- around tying software to operating systems -- is really starting to show up. For some reason it's in part Bill Gates' life's mission to make [Oracle CEO] Larry Ellison a very rich man. He could wreck Ellison's day by porting SQL Server to either BSD or Solaris or both. SQL Server is a fantastic piece of software; it may in fact be the best piece of software that Microsoft has ever released. But there are a lot of people who won't build Web sites on anything but a Unix platform. Those people really have to go with Oracle, even though they would have gone with SQL Server in a heartbeat.
In a world in which you can convince yourself that eventually Microsoft will control all the operating systems of all devices, that strategy tax is worth paying. But Microsoft had the "Windows everywhere" strategy in the mid-'90s and it has completely failed. It hasn't transferred its monopoly to a single other class of hardware. It doesn't own cellphones, it doesn't own PDAs, it doesn't even own the servers. So the strategy tax of not releasing your good software on other platforms starts to look really high. And HailStorm is a really interesting attempt to both allow and disallow software to run on Microsoft platforms. Whether or not Microsoft succeeds at splitting the difference, which a lot of .Net and HailStorm [makes it] look like it's going to do, I don't know.
How would you like to see it turn out?
Microsoft hires fantastically smart people; they make some good products. My dream is that all of those things stay true but that it doesn't have a monopoly, at which point it's a competitor again. Then we can get back to the business of duking it out in the market.