Computing Thoughts

The Cathedral and the Pirate

by Bruce Eckel

July 12, 2009



Summary

The impact of the Google Chrome OS, told through (probably excessive) metaphor.


Windows is an enormous collection of design mistakes that work well enough to get by. Each mistake eventually turns into myth -- after awhile, no one understands the reasoning behind it so everyone begins to believe it was a carefully-considered decision that has deep technical roots and can't be modified for fear of the entire stack falling over. For years the mythology of Windows has grown and evolved into the cathedral described by Eric Raymond -- filled with rococo curlicues and other tributes to the forgotten gods of past technical decisions.

Along comes Google, the pirate. It uses a new kind of ship, swift and agile that can dart among the lumbering Microsoft galleons. The galleons have three and four rows of heavy cannon, but they are too ungainly to turn, and the big guns, so effective when attacking a fixed fortress, can hit nothing (Apple is far over the horizon during all this, in a high-tech racing sailboat. It's just one boat, but it flies).

The pirates have no allegiance to history, and no respect for encrusted, senseless decisions. They take aim at anything that looks interesting, whether or not the monarchy behind the galleons considers it important. They begin chipping off customers and carrying them away. The monarchy harrumphs and dismisses the tiny losses with a wave of the hand. "Mere decoration. Statistical outliers. Not important."

Microsoft becomes accustomed to the petty theft of things it wasn't paying attention to anyway. The initial concern about the pirates is downgraded to annoyance. After all, the monarchy is vast and entrenched -- really, what could challenge it?

So the two settle into a weirdly symbiotic relationship; Google subtly taking over -- and fixing -- things that Microsoft hadn't seized with both hands, and Microsoft spasming a bit at each cut, then settling back down and going back to sleep, a water buffalo bothered by mosquitoes. Google steadily adds fast little ships to its fleet. A few sink without taking anyone else down. A few become more powerful, but without seizing control of nearby ships. They are a loose affiliation, held together only by the web of advertising.

Unfortunately for the monarchy, each interaction with the pirates further convinces it that galleons are the winning solution. After all, they survive each encounter with insignificant losses, chalked up to a need for minor adjustments. The right way to do things is to put everything into one basket and then guard that basket.

Microsoft continues to make variations on the same operating system. Customers pay more and more for virus prevention and removal (despite virus software, my brother -- who provides IT services to small and medium businesses -- says he spends fully half his time cleaning up virus-infected systems).

Google can live with all this, because they are taking over the new, relatively undefended frontier of the internet. Bill Gates saw the importance of the net and his last grand effort before going philanthropic was to try to wake Microsoft up to the fact that the internet was going to be very important. The behemoth arose long enough to make a few attempts at creating internet services that looked and acted like desktop applications, tied to the operating system. But there were too many VPs defending their turf to do anything actually innovative (some of you will remember when there was a temporary rallying cry -- originating from Gates, I believe -- that Microsoft was all about "innovation." This was Gates' attempt at creative visualization, as in "keep telling yourself you are a thin person, and eventually it will happen").

Amidst all this, Internet Explorer (IE) appeared, starting the browser wars.

The fallout was that there were no standards. Standards were invented by a committee somewhere, mostly out of touch with actually need. Then there were implementations, and Microsoft felt they could do whatever they wanted in order to leverage the OS (obviously you don't want to mess with the crown jewels, obviously you continue to manipulate things to promote the OS, as long as you can get away with it). Nobody correctly followed the non-standard, so all browsers are broken, some are useful.

After endless years of this, Google sees that browsers will never be fixed. They will always be messed up and require cross-browser fixes within every web application you create, even the simplest ones.

This is one thing I haven't understood: Google's choice of JavaScript as the client-side programming language. They've had to struggle with cross-browser flaws in every application they've made, so why not use something like Flash to raise the level of abstraction out of the mire of the browsers?

Or ... you could take a bigger risk and redefine the playing field by creating your own browser, and then implement the most advanced technologies, correctly, or at least the way you want them. At some point -- you've got enough clout, after all -- you can start saying "this application will only run properly under Google Chrome." And for that matter, you can start shipping Chrome with all the necessary support for offline storage and connection to the operating system services required to create more sophisticated apps. "Developers, developers, developers!" will soon start creating their own apps that will only run under Chrome, just because it's the easiest path (they already know JavaScript, but now it works without pain and they have access to storage and other OS things, but sandboxed so they don't have to worry about viruses and other corruption).

Hmm. It's almost starting to sound like an operating system. And if we solve all these problems through the browser, why not make the browser the operating system? Heck, as far as the vast majority of people are concerned, "operating system" means "windowing system," because that's what they interact with. More and more, people begin using computers because of the internet, so the browser is the first thing they encounter anyway -- that other stuff is messy and complicated, while the browser makes sense. Why not make the browser the primary contact to the OS?

The timing is perfect. Microsoft still has no clue how big the Vista disaster really is. They won't until Windows 7 comes out and all the people who were burned with Vista decide just to stick with XP or whatever they are currently tolerating. Marketing isn't going to fix this one, no matter how hard the folks in Redmond fling vast sums of money at the problem (the temptation to wade into that river of money will be great).

And of course there's the netbook. The price of these will continue to go down, especially if the OS becomes less intrusive and requires less processing power. Most people are using netbooks the way the name sounds -- to connect to the internet. If Chrome OS has a small footprint and runs on cheap, low-power chips without bogging them down, then the solid-state disk versions of netbooks become more practical and useful.

The timing of the shot across Microsoft's bow is no coincidence. Redmond is just starting to crank up the marketing for Windows 7, and one of the significant improvements is that it actually works on netbooks. Vista doesn't, so Microsoft had to continue to sell XP -- just when they decided to force those darn reluctant customers to upgrade to Vista by terminating XP, along came the disruptive netbooks. With Windows 7, Microsoft will finally be able to kill XP. But two problems remain:

The Microsoft tax adds a lot to the cost of a really cheap netbook, which as I noted, will be getting cheaper. When the computer costs $200 or $150 or $100, people really start to notice the extra $50 to Microsoft. Linux has always been the free alternative, but the typical Linux distro includes a lot of stuff that doesn't fit (and isn't necessary) on solid-state netbooks (the Chrome OS is built on a Linux kernel). Plus, your grandma or uncle doesn't know who Linux is or whether he can be trusted (after all, he has these wild and crazy free love hippie roots). Google, now, I've heard of them, and free sounds pretty good. Unless we've suddenly switched to a parallel reality in the last cycle of Windows, Windows 7 will require the netbook to have a hard disk. Google Chrome won't, and will work just fine on the solid-state disk versions of netbooks. Not only that, the solid-state disk versions will boot much faster in combination with the very lightweight Chrome OS. The combination of cost and dramatic performance difference will make Windows 7 on a netbook look like a terrible choice. Add to this all the people burned by Vista and buyers will run towards netbooks with Chrome and away from netbooks with a hard disk and Windows 7.

What's sad is that there are a lot of really smart people trapped within the Monarchy of Microsoft, doing great work that will never see the light of day (better than not being allowed to do great work at all, which is no doubt what keeps them there. But creating things that won't be used is soul-sucking). The only "innovation" that comes from Redmond happens when a competitor creates something that gains traction.

Take .NET, for example. Java tried to be OS-agnostic, and Microsoft was about the OS, so it created .NET. In many ways, .NET is a significant improvement over Java. But it's not revolutionary as Java was (by introducing the virtual machine, garbage collection and unified error reporting into the programming mainstream). It evolves Java, but with sometimes subtle and sometimes not-subtle ties to Windows. Can I program .NET on my Mac? I don't even know, since I could never take it seriously (every programming conference I attend anymore is almost universally filled with Macs. If it's all about "Developers, developers, developers!" then Microsoft really hasn't begun to see the problems yet, stacking up like the traffic in the Greater Seattle area).

Microsoft could have taken .NET and created a thin layer of glue onto the hardware, and come up with a really good, robust, and revolutionary OS. When I mentioned this in a previous blog, a commenter who apparently worked within Microsoft research said that a project like that had been going on and some pieces of it might eventually appear in Windows. Of course, it could never be put out there as a real OS because it would compete with Windows and someone has too much turf power for that to happen.

Contrast this with Chrome OS. It's been pointed out that Android is also being used as an OS, so gasp! There are two potentially competing OSes from a single company! Google shrugs and says "yeah, there might be some overlap, but they were designed with different goals in mind so we'll just see what happens." Something that would cause major political battles within Microsoft produces indifference within Google.

Another "innovation by reaction" from Microsoft is Silverlight. Adobe has been making inroads with Flash and Flex, which produce applications that are browser and OS independent. Everyone has Flash on their computer -- everyone. Why does Microsoft need to invent a new system? Flash is too cross platform, and doesn't help sell OSes, and is in fact becoming its own OS! This is certainly the first argument that comes to mind, and it's the very one that makes a lot of programmers suspicious that there's a poison pill buried somewhere within Silverlight so that, in the end, the really interesting things only work on Windows.

I think it's good that Microsoft created Silverlight, and Sun created JavaFX. It's really invigorated Flash/Flex development at Adobe, for one thing, and it promotes the idea that we need to stop wasting our time solving cross-browser incompatibility problems in our applications. (Disclosure: I consulted for Adobe on Flex for about a year, but that contract ended over a year ago).

Now, Google could have created its own RIA platform and made it run on the various different browsers, but they chose not to. I think this is because, first of all, Adobe already solved the problem and Google didn't seem to see the value of duplicating the effort (as Sun and Microsoft did). What, really, would it have accomplished? But by creating a new browser and expanding its footprint into an OS, Google is moving diagonally. And note that this "OS" will run just as happily by itself as it does under Windows or MacOS, so it becomes something universal that everyone can learn once and use everywhere -- which makes it viral. And the best thing is that it doesn't matter to Google whether you use Chrome as a browser on your OS, or Chrome as your OS. (One of the great things about free software is that you can always say "sure, whatever works for you. It's all the same to me").

Now take a step back and look at this from the developer's standpoint. If you can start assuming that everyone has Chrome in one form or another, and that it supports the leading-edge JavaScript, HTML and CSS -- well, that means you can write powerful code once and run it everywhere. From a business standpoint the cost savings are compelling. Far more compelling than paying for endless bug fixes due to cross-browser incompatibilities. It means the difference between treading water and moving forward two, three, four times faster than your competitors.

The second reason Google made Chrome instead of another RIA platform is branding for trust. Flash is pretty invisible to most people, which is fine; for what it does I suspect it's actually better that it's invisible -- Java has always had problems becoming ubiquitous because installation and usage were too intrusive for the majority of end users. But if you want to solve all the messy programming problems created by Windows and the browser wars, you need to get everyone's trust and imprint it, so that the salesperson can say to the new netbook buyer "this runs the Google OS" and our novice buyer will think "I've heard of Google and everyone says good things about it." (Which, by and large, everyone does).

Consider the Windows 7 sale: it starts out adding significant cost to a cheap netbook appliance. It takes a long time to boot. And the customer will probably ask about viruses -- they've certainly heard a lot about those. The salesperson will say that you can add software to prevent viruses, but such software will be much more interesting to the salesperson as an add-on purchase. And the customer will also know stories about the escalating virus wars where Microsoft and the virus software manufacturers are constantly trying to plug the leaky dike. Maybe the customer should just go with the free, super-fast, virus-proof thingy from Google instead.

I don't see how Microsoft can change. What you've got is one of those nets in the jungle (think "Lost" here) which springs up and traps people into a hanging ball of bodies. Take one of those nets and fill it with Microsoft VPs. The net is constantly pressing them together as they struggle. No one can see that the net itself is an arbitrary constraint, because it presses everyone into a zero-sum game. Google comes wandering through the jungle, whistling, notices for a moment the ball of VPs fighting among themselves, and wanders on.

Unfortunately, the only way to fix the problem is for someone to come along and cut through the net, while everyone inside is screaming "Don't cut it! We'll fall!" And of course there would be a fair number of bruises, sprains and some broken bones. (Important note to Microsoft: I now do management consulting, although prepare yourself for truly outrageous fees, payable in advance. I can definitely come in and fix your company).

Talk Back!

Have an opinion? Readers have already posted 13 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Bruce Eckel adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Bruce Eckel (www.BruceEckel.com) provides development assistance in Python with user interfaces in Flex. He is the author of Thinking in Java (Prentice-Hall, 1998, 2nd Edition, 2000, 3rd Edition, 2003, 4th Edition, 2005), the Hands-On Java Seminar CD ROM (available on the Web site), Thinking in C++ (PH 1995; 2nd edition 2000, Volume 2 with Chuck Allison, 2003), C++ Inside & Out (Osborne/McGraw-Hill 1993), among others. He's given hundreds of presentations throughout the world, published over 150 articles in numerous magazines, was a founding member of the ANSI/ISO C++ committee and speaks regularly at conferences.

This weblog entry is Copyright © 2009 Bruce Eckel. All rights reserved.