Yesterday, reports surfaced that Internet Explorer had suffered a dramatic drop in “market” share against Firefox, Safari, and Opera. Reports of IE’s demise, however, were quickly shown to be exaggerated. True, certain sites reported double-digit drops in the percent of their visitors using IE—but they were sites with highly technical audiences, the kind you would expect to be atypical early adopters. According to this article, IE’s drop among more mainstream users is much more modest: down from 95.5% to 93.7% (not quite three percentage points) since June.
But wait: there’s more to it than that. Sure, Firefox isn’t dominant, and has a long way to go before it is. It’s quite likely that it will never completely overtake IE. But that’s not really the point. The point is that, all of a sudden, modern browsers (especially Firefox, but also Safari and Opera) can no longer be ignored by organizations developing web apps.
Let’s look at the events that have brought us this far.
Firefox overtook IE in the feature department a number of months ago, but it was still a little rough around the edges, and the version numbers (below 0.8) reflected that. But then, just under three months ago (following a rash of new security bugs in IE and some worms that took advantage of those bugs) the U.S. Department of Homeland Security issued a recommendation that Windows users consider switching. It was a gentle recommendation that lacked teeth or urgency, but Firefox downloads went up immediately, and have continued at a higher rate than before.
93.7% still seems like a really daunting market share for IE. But turn it around: that’s more than one out of every 20 web users (also known as “potential customers” to commercial websites). Just three months ago it was slightly less than one in 20; today it’s trending toward 1 in 10. That’s significant.
Many companies write web applications that support only IE. Although I’ve never agreed with that strategy, I can see how some are convinced that it’s a reasonable one. But I suspect the problems with an IE-only approach will quickly become clearer.
The extent of IE’s dominance today is not the point. The point is how quickly other browsers can become too significant to ignore. It’s fairly easy for some to justify ignoring 5% of users. But can you afford to ignore 10%? If current trends continue, modern, non-IE browsers will have a 10% share by the end of the year. Their share will have doubled in six months.
And there are good reasons to think the trends will continue. Firefox’ lead in features continues to grow, and it’s becoming quite polished. The 1.0 release will appear soon, and that’s bound to bring increased publicity, interest, and acceptance. IE’s security woes have calmed a bit, but I don’t know anyone who believes they’re over for good. Meanwhile, Firefox has very few security flaws, and they tend to be fixed very quickly.
These thoughts began swirling in my head this morning, but that’s not the end of it. A little while ago I decided to download the Firefox 1.0PR release for my wife (she’s been using Firefox, and before that Mozilla, for a long time—and no, not because I told her to). When I saw the front page of mozilla.org it felt like the first rumbling of an avalanche. Today, in his column in the Wall Street Journal, Walt Mossberg wrote this:
I suggest dumping Microsoft’s Internet Explorer Web browser, which has a history of security breaches. I recommend instead Mozilla Firefox, which is free at www.mozilla.org. It’s not only more secure but also more modern and advanced, with tabbed browsing, which allows multiple pages to be open on one screen, and a better pop-up ad blocker than the belated one Microsoft recently added to IE.
That’s big. I repeat: what matters isn’t IE’s share today; it’s how quickly things can change. When Walt Mossberg, Homeland Security,Fortune magazine, and the German government (among many others) are all saying “dump IE”—and the signs are that many people are switching to Firefox even prior to the 1.0 release—do you really doubt that IE could suffer major losses over the next year or so? Yes, they might be able to hold off this threat, but if you’re writing web apps today, do you want to bet on that? Do you want to risk having to explain why you’re turning away 15% of your potential user base?
(Oh, and one more thing. “Dump IE” is actually the sixth recommendation in Mossberg’s column, one of several things he suggests doing if for some reason you can’t follow his first recommendation. That first recommendation, which makes all the others unnecessary, is “chuck Windows altogether and buy an Apple Macintosh.” But that’s another blog.)
Not that anyone will really be surprised by this … but it’s nice to have ironclad proof. At Foo Camp, I finally learned for certain that James Duncan Davidson sleeps with his PowerBook under his pillow.
I had the incredible privilege of spending the past weekend at the second Foo Camp, O’Reilly and Associates’ brilliant, informal weekend gathering of assorted smart and interesting people (plus me, I guess :-). We all met, talked, brainstormed, thought big thoughts, played pingpong and poker, and … well, anything else that geeks think of to do when put together for a weekend. We geeks spend our lives interacting mostly with people who don’t think quite the same way we do, so during a geekfest like Foo Camp there’s an explosion of communication, a real joy in having so many people to talk to who all seem to be speaking the same language for a change.
Last year I had several friends who went to Foo Camp, and I kept hearing the same thing from them: “I’ve never felt like the stupidest person in a group of people before, but that’s what I felt this weekend—and it was great!” That really is what it felt like. I spent the weekend soaking in what I was hearing from the very smart people who were there, and scrambling to keep up. But it was fun and exhilarating.
Here’s a quick blizzard of impressions:
There were sessions about 3D printing, hardware hacking, biology, novel approaches to science education, web design patterns, the technical book industry, VMs for dynamic languages, applying information design principles to API design, realtime 3D sound processing, and more. Trevor Blackwell brought his homemade Segway-equivalent (and the unicycle version). JDD and Mike Clark brought temporary Foo Camp tattoos that seemed to appear on everyone there. Andy Hunt and Tom Anderson had a lengthy jam session Saturday, all piped through Patrick Leahy’s killer spatial sound system. Jeff Bezos, Steward Brand, Kevin Kelley, and Ray Ozzie were there. (Danny Hillis, John Seely Brown, Larry Page, Esther Dyson, and Mitch Kapor were supposed to be there too, but if they were I missed them). Peter Drayton brought an Ambient Orb and a hardware development kit for it, so he could get together with Mike Clark and start hacking on the next generation extreme feedback device. Ten (that’s right, 10!) of the No Fluff, Just Stuff symposium speakers were there. And it was fun to catch up with old friends—Andy Hunt, Daniel Steinberg, Dave Thomas, Erik Hatcher, James Duncan Davidson, Jason Hunter, Mike Clark, Mike Loukides, Rich Kilmer, Scott Davis, and Ted Neward—showing off the project I’m working on, looking at their latest work, etc.
I’ll try to find time over the next couple of days to blog about some of the things I learned, and post some photos.
Thanks to Tim O’Reilly for having us all there, Sara Winge for expertly organizing the weekend, and the folks at O’Reilly who put my name in the hat.
Chad Fowler (via del.icio.us) pointed me to a delightful post on the ll1-discuss mailing list. The discussion had turned to closures and objects, and which could be considered “richer” or “more powerful” or “more fundamental.”” Anton van Straaten chimed in with a post that I think summarizes the issue perfectly. It’s worthwhile to go read the whole thing, but the core of it is this:
Given this tension between opposites, I maintain that the question of closures vs. objects should really be a koan. […] Here goes:
The venerable master Qc Na was walking with his student, Anton. Hoping to prompt the master into a discussion, Anton said “Master, I have heard that objects are a very good thing—is this true?” Qc Na looked pityingly at his student and replied, “Foolish pupil—objects are merely a poor man’s closures.”
Chastised, Anton took his leave from his master and returned to his cell, intent on studying closures. He carefully read the entire “Lambda: The Ultimate …” series of papers and its cousins, and implemented a small Scheme interpreter with a closure-based object system. He learned much, and looked forward to informing his master of his progress.
On his next walk with Qc Na, Anton attempted to impress his master by saying “Master, I have diligently studied the matter, and now understand that objects are truly a poor man’s closures.” Qc Na responded by hitting Anton with his stick, saying “When will you learn? Closures are a poor man’s object.” At that moment, Anton became enlightened.
Why did I enjoy that so much? If you read this blog, you know that I’m fond of dynamically typed languages. I frequently encounter blogs, articles, or mailing list postings from people who believe dynamic typing is “the one true way” (I’ve been guilty of such things myself, in fact). And then I turn around and see people claiming that strong static typing has undeniable benefits, and it’s just too hard to build reliable software in dynamically typed languages (ignoring the numerous counterexamples), etc., etc. And the thing is … I don’t think either side is entirely right or entirely wrong.
There are, I believe, many things in our field that exhibit that same kind of duality—what Anton called “tension between opposites.” Here are just a few:
- Functional vs. OO (Anton’s koan is just one example of this).
- Compiled vs. interpreted languages.
- File-based source code vs. live images.
- Relational vs. OO databases.
- Tests as design tools vs. tests as quality tools.
- Browser-based apps vs. rich clients.
- Code as data vs. rich syntax.
You could write a koan about each of those.
(I’ll note in passing that although the Zen koan is a delightful form for capturing and expressing such tensions, Zen doesn’t have a monopoly on such ideas. For just one example, compare Galatians and James. They seem at first glance to be in contradiction, and yet the core of each can be found in the other.)
I titled this blog entry “Six of One, a Half-Dozen of the Other.” For most of these things, I don’t think it’s really an even split … but the alternatives are weighted differently, and how you value them depends on your preferences, needs, fears, and experiences. To a great degree, I think it comes down to our predisposition toward another set of opposed concepts: directing vs. enabling.
As much as I enjoy arguing my side of these things with all the force I can muster, studying the history of our field has led me to conclude that there are inherent trade-offs in every one of the choices listed above. Neither side solves every problem; rather, each side has some strengths and some weaknesses relative to the other. While it may be fun to take sides (and I’m sure I’ll continue to do so), at some point the most productive course is to try to really understand the relative merits.
Once we do that, it will become clear that the choice boils down to what we value most … and thinking about those values would be much more fruitful.
(If you have other examples of such dualities in software development, I’d love to hear about them. Please let me know.)