One of the cornerstones of Web 2.0 is the XMLHttpRequest object. It allows JavaScript to call back to a web server without incurring a traditional HTTP postback. It's the heart and soul of AJAX, and it's a completely proprietary feature Microsoft introduced along with IE 5.0 in March 1999. Supposedly it was introduced so the Exchange team could build Outlook Web Access.
The first mention of Mozilla and XMLHttpRequest I could find on Usenet is this post to netscape.public.mozilla.jseng from January 2000. XMLHttpRequest was eventually implemented in Mozilla 1.0, which was released in June 2002. It isn't implemented as an exact copy of the IE version, however. The declaration is a little different. In IE, it's an ActiveX object:
var req = new ActiveXObject("Microsoft.XMLHTTP");
In Firefox and Safari, it's a native object:
var req = new XMLHttpRequest();
And things were quiet on that front until Google Suggest was revealed near the end of 2004. In April 2006, XMLHttpRequest was belatedly submitted to the W3C as a standard.
But how did we get here?
Google's Zeitgeist used to break down Google searchers by browser and operating system. Unforunately, they stopped reporting this after June 2004's Zeitgeist. Here's an enlarged version of the last browser share graph:
It's a stark picture of how monoculture the browser world became between January 2001 and June 2004. Google is the best source of data for browser market share, in my opinion, because nothing is as egalitarian and universal as the number one search engine. I wonder why Google discontinued reporting this data? Was it a competitive advantage?
Google is a good source for this kind of data, but it isn't the only one. there are dozens of different agencies and organizations offering browser market share statistics. Wikipedia has a comprehensive page that tracks browser market share across a multitude of different sources. Although opinions vary on the reliability of browser market share figures, a quick scan through all the data reveals one interesting commonality across all the data sources: IE6 market share peaked at around 95 percent sometime in mid-2004.
Ninety-five percent is an incredible number. Super-saturation for a single version of a browser was historically unheard of in the browser market; the progression of IE (and most other browsers) up to that point was steady and regular:
The next version of IE was never more than a year off. IE 7.0 is slated for release in early 2007; at that point, it will have been almost six years since Microsoft released a new version of Internet Explorer. The super-saturation of IE 6.0 is a direct consequence of Microsoft virtually abandoning development on IE.
If 95% of the world is browsing with IE 6, pursuing browser independence is a waste of time. If you don't have to worry about browser independence, you are suddenly free to exploit advanced browser techniques like XMLHttpRequest. And, even more conveniently, alternative browsers have adopted XMLHttpRequest. Not that it mattered in late 2004, since IE6 still had 90 to 95 percent market share-- depending on which figures you trust.
Surely Microsoft is concerned about the internet as an application platform, and thus, as an alternative to Windows applications. Some pundits think Microsoft was intentionally trying to cripple internet application development by halting all development on IE. Personally, I don't subscribe to this theory. But if that was the plan, it backfired spectacularly. Having everyone on the same browser platform, with a 95 percent market share, didn't create a stagnant development platform. The super-saturation and monoculture of IE6 from 2002 to 2004 created an incredibly rich, vibrant development platform where developers were free to push the capabilities of the browser to its limits. Without worrying about backward compatibility. Without writing thousands of if..else statements to accommodate a half-dozen alternative browsers.
If you subscribe to the "evil Microsoft" theory, Microsoft would have been far better off releasing new, mildly incompatible versions of Internet Explorer every year.
Ironic, isn't it?
Die Netscape die.
Yes, MS did invent the whole AJAX shiznit. That recent Web 2.0 conference even acknowledged that in one of their presentations.
For all the internet rookies that spout BS about how MS killed browser development, if they ever had to use that garbage that was Netscape 4, they'd quickly realize just why IE took off like it did.
foobar on June 8, 2006 10:52 PMI'm not sure I agree that having a stable browser enabled innovation. Back in 1996-98 Netscape was releasing new browsers quite frequently, but there was a lot of innovation. The key is that Netscape remained backward-compatible. So although you couldn't depend on all users having the latest version, you could depend on tables continuing to work, or SSL, or frames.
The real problem with web development began when AOL began supporting IE. At that point IE 3.0 was a piece of crap which didn't support anything, which was incompatible, and buggy. However because AOL's share was growing by leaps and bounds and because many people got their very first browser from AOL, it was necessary to support IE 3.0 in addition to Netscape. That made innovation very difficult.
Later, as MS released IE 4 and 5, which were also incompatible with Netscape, as well as with IE 3, the situation just got worse. And in parallel Netscape stopped developing new browsers when they could have simply adopted new things MS introduced (like iframes).
So my reading is that MS actually screwed things up for a long time between the heyday of Netscape and the time they got bored with IE and stopped introducing new versions. When they stopped, things took off again. Even today we have Firefox and Opera and Safari, and they're taking share from IE, but it isn't slowing down innovation because they are (more or less) compatible with each other on the things that matter.
Final note: today if you're a web developer you have two cases you have to test against, MS IE and everything else. It is still the case that MS IE is incompatible, but because of its share, you have to support it.
Ole Eichhorn on June 8, 2006 11:23 PMIt's interesting to note that the Ajax boom really didn't start until other browsers had also started supporting XMLHttpRequest. I like to think that this is because the kind of really smart developers who drive this kind of new technology exploration are also the kind of people who understand the Web's value as an open platform and are inherently uncomfortable building applications that tie you to one browser. Sure there have been IE-only apps that took advantage of XMLHttpRequest (OddPost is a good example) but this stuff didn't explode in popularity until the other browsers started supporting it.
Simon Willison on June 9, 2006 12:42 AMI disagree with you Ole on your final note. We are developping advenced web 2.0 applications and in my if...else statements to be cross browser compatible, I see more parallels between IE and Safari than between Safari and Firefox.
nfaugout on June 9, 2006 12:53 AMCorrelations is not causation.
"The super-saturation and monoculture of IE6 from 2002 to 2004 created an incredibly rich, vibrant development platform where developers were free to push the capabilities of the browser to its limits."
Maybe. But who tried to push the browser to its limits? Nested tables and spacer gifs, just like in 199x.
Even CSS usage didn't take off till late 2003...
So the big news is that Microsoft actually invented technology that are being used for something else then Microsoft products? :)
I don’t know what have happened between Microsoft and W3, but as I remember they have had their discussions. But what would have happened if Microsoft had showed good leadership and setting good examples for the growth of the Internet and not just Microsoft. They probably could have set themselves in a position, where they could set global standards instead of Microsoft standards. As I see it, they tried to force HttpRequest to the Web on only IE and failed, but others saw the light in the technology and used it. On the other hand, the InnerHTML html tag attribute is Microsoft forced and almost success I believe? If you compare to Java, they created as far as I remember the fastest JVM, but sadly they where a little too creative and made some Microsoft only features.
What is it that Microsoft want, is it World domination? .. well they already have that..
I know it is a clich, but to quote from the movie spiderman. :)
Uncle Ben: “Remember, with great power. comes great responsibility.”
I am actually not pro or against Microsoft, and I have a lot of respect for what they have done, so many talented people. But I am not sure Microsoft is as company that I admire and look up, but more a company that I in some cases have no other choice then but to obey.
But maybe they change… Vista is free for download and in a recently Microsoft presentation I say, they said(admitted) that IE7 had taken a lot of features from Firefox. I am not asking(and I have absolutely no skill to do so) that Microsoft should be saints, when no other company is, but instead they could strive a little harder to set good examples.
And about the Netscape stuff, yes Microsoft used some dirty tricks, but Netscape became a pile of junk. Netscape replaced my favourite browser Mosasic and I loved it, and then Microsoft comes along and Netscape starts to implement all sorts of stuff that make it slow, memory consuming and almost forgets that it is a browser. But again that is another discussion.
Peter Palludan on June 9, 2006 2:47 AM> they said(admitted) that IE7 had taken a lot of features from Firefox.
Firefox took most of their "innovative" features from Opera, and they still haven't implemented most of them as well...
Ben Moxon on June 9, 2006 3:30 AMI think we need both; monocultures to allow for things to grow and mature, and competition to allow for rapid development and innovation.
Too much competition gives you garbage bells & whistles, that competitors use to one-up each other. No one really needs these features, but they look good on marketting literature.
Too much monoculture gives you stagnation; IE was innovating like crazy, and had a fantastic implementation compared to Netscape. Once Netscape was out of the picture though, MS back-burnered the whole thing.
Monoculture's can be GREAT for developers. Think about how much time you've wasted making UNIX apps cross-platform compatible. Think about suppoting all the different GUI's and desktops and browsers. It doesn't help achieve the app's purpose, but it's often the hardest and least testable part of an application.
Conversely, monoculture makes app development very repetative and boring. As creative people, this can get developers down, and last thing you want are creative people getting bored.
Armen on June 9, 2006 5:42 AMI've used Netscape 4, and no question about it... it sucked. Besides it turning into an all singing, all dancing suite, I can think of three things that killed Netscape 4.
1. The layer tag.
2. The inability to change tags other than layers after they had been output. (Oh, you want to change the text of that element? Too bad!)
3. Poor support for CSS.
Ole, I don't know if Microsoft actually introduced iframe or not, but it became part of the HTML 4 standard in 1998. See Section 16.5, or better yet, look in the HTML 4.01 standard which superceded HTML 4 in 1999.
innerHTML, on the other hand, is a Microsoft invention. Given its usefulness, I'm actually surprised it hasn't made it into the DOM standard. It outpeforms the DOM methods in every test on almost every browser that implements it.
See Quirksmode: http://www.quirksmode.org/index.html?/dom/innerhtml.html
The problem I have with IE6 deals with security...
Ross Bemrose on June 9, 2006 9:00 AM> Too much competition gives you garbage bells & whistles
> Too much monoculture gives you stagnation
That's an interesting observation, and probably true. I think the browser market *needed* a long cooldown/stagnation period so developers could concentrate on core features and move web apps forward.
So, as much as we (correctly) criticize MS for dropping the ball with the nearly six year gap between IE6 and IE7, it turned out to be a net positive.
Jeff Atwood on June 9, 2006 9:36 AMDon't you mean a .NET positive?
Armen on June 9, 2006 10:42 AM> Later, as MS released IE 4 and 5, which were also incompatible with Netscape.
What the hell are you talking about? Do you mean incompatible with the non-existent HTML standards back then?
> Final note: today if you're a web developer you have two cases you have to test against, MS IE and everything else.
Whatever. Firefox is just as horrible as IE is in terms of CSS compliance.
foobar on June 9, 2006 11:39 AM> Firefox is just as horrible as IE is in terms of CSS compliance
This deserves some clarification.
At the *time of its release* in Q3 2001, IE6 had groundbreaking support for CSS.
Firefox/Mozilla continued to evolve and enhance their CSS support. As of *today*, Firefox 1.x has much, much better CSS support than IE6 -- particularly the advanced CSS cases we're getting to after 4 years of beating on CSS.
IE7 does finally rectify most of the CSS complaints, and puts itself roughly on par with Firefox 1.5.
Now, I am no CSS expert, but I have done some research on this:
Jeff Atwood on June 9, 2006 12:11 PMInvalid argument.
Rajesh on June 9, 2006 12:27 PMFF has somewhat better CSS support than IE. There are still horribly stupid CSS bugs in FF, but, oh well.
Look, both browsers are so far away from even full CSS 2.0 implementation, it's a battle of the turds as far as I'm concerned.
To me, the FF group implemented just enough extra CSS so that they could boast that they're better than IE, rather than looking out for developers. Whee...
Do a google search for Mozilla CSS problems. It's a pot kettle black situation, IMHO.
foobar on June 9, 2006 2:39 PMI think the main cause behind the appearance of JavaScript rich web-based applications (not all of which actually use AJAX) is the rise of a mature JavaScript API and the subsequent death of Java Applets. Once people realized that you could do everyting in Javascript without dealing with slow, unstable and bloated Applets, we started to see real innovative cases like Google Maps. Of course you could also have done all this stuff back then in Flash, but at the expense of customizability and being stuck with a proprietary API.
And while Navigator 4.0 had its flaws, it was the debacle that was Netscape 6 that really did them in. In one fell swoop they undid everything that was good about Netscape and replaced it with a buggy, unstable, bloated piece of crap. People would have been willing to go back had Netscape released something worthy of competing with IE 5.5 (whose biggest new feature was print preview).
Mozilla on June 9, 2006 3:00 PM> he rise of a mature JavaScript API and the subsequent death of Java Applets
There's also that whole 100:1 performance increase for interpreted languages in the last ten years..
http://www.codinghorror.com/blog/archives/000509.html
Jeff Atwood on June 9, 2006 8:15 PM> Firefox took most of their "innovative" features from Opera, and they still haven't implemented most of them as well...
It's a shame Opera is so painful to use.
[ICR] on June 10, 2006 4:10 AMYes Microsoft deserves credit for XMLHttpRequest all credit for widespreadm AJAX type capabilities have to go to Google and Google MAP which got managers interested in it.
managers and google Maps should get the credit because google maps provided the first real applications that got mangers to ask why thier web sites did not have capabilities like that. This finally caused the developers to start looking into it and adding capabilities to thier web sites.
Thing is this technology has been around since pre-98 using frames or applets to perform the same type of ability. However that was a royal pain to use and no real set of libraries to make it simple.
However in 2000 JSRS libraries came out http://www.ashleyit.com/rs/main.htm it used CSV(or anything you defined) and supports more browsers then AJAX does.
With the capability being old(ancient in computer time) and it only becoming a force after google maps microsoft just does not get the credit.
will dieterich on June 10, 2006 11:52 AMI think your argument makes a lot of sense Jeff. A flip side of the same coin is that investing in Javascript development for important website features has become feasible because it's no longer necessary to support Netscape 4 (nor Netscape 6, nor IE 5 for the Mac). Javascript and the DOM on those platforms was a true nightmare, or at least severely different from IE on Windows and Safari.
Compared to the nightmare of targeting the 2004-era platforms simultaneously, the current platforms (IE 6, Safari and Firefox) are all pretty darn similar to one another and easy enough to target. What differences there are are fairly well defined.
So it's not just the stability of IE 6 that's to thank, but also the collapse of the most divergent platforms. Which might be due to Microsoft's success, and also just to the passing of time.
I'm not sure how popular AJAX will be in the end. In order for it to really work efficiently in complex applications, you must have fast web servers to handle the asynchronous web requests. I created an intranet web application in ASP.NET 2.0 and I tried to integrate Atlas into it...It worked fine running while testing from my local machine, but once I put in on the production server it was unusable.
Google can create their awesome AJAX application because they have the hardware to make it work. Without lightening fast servers, the app better be pretty simple in design (no ASP.NET, no complex viewstate), or else you will wait forever for asynchronous requests to complete, especially when using the Microsoft ASP.NET server controls.
Also, using AJAX is not profitable because most internet sites make their money off of advertising, and the use of AJAX prevents multiple page hits!!! Only subscription websites will be able to use AJAX without losing money.
In 2000-2002 I worked for a company doing financial services. At the beginning the UI was Java/Swing, etc. But quickly we switched to using XMLHTTPRequest to push stuff to the browser, and then remaking it with XSLT and XQuery. The results were good, but it did require a fresh install of IE6 with every client desktop. And at that time, a lot of the potential clients were wary of this additional "dependency". But there were a lot of people working on this stuff around then.
frustrated on February 10, 2007 10:49 AMMicrosoft IE is a pain in the ass.... I am convinced NO ONE at microsoft has a clue what they are doing. Stnadards? INGNORED on ALL levels. Firefox is a superior product in ALL ways. It is my contention that IE6 and IE7 have RUINED web 2.0 not helped it. I design to standards then have to hack it to display correctly in IE 7... only to find i have to hack it again to display in IE 6.. Could Mircosoft make ONE quality product? Just ONE? I'm still waiting.....
andrew on August 2, 2007 6:23 AMinnerHTML, on the other hand, is a Microsoft invention. Given its usefulness, I'm actually surprised it hasn't made it into the DOM standard. It outpeforms the DOM methods in every test on almost every browser that implements it.
See Quirksmode: http://nurmagomedov.blogspot.com
The problem I have with IE6 deals with security...
dagestan on May 15, 2008 7:14 PMlulz, it was the rise of fast enough computers/graphics to make client-side proccessing of data other than simple elements feasable. every javascript manipulation needs to redraw sections of screen, which is computationally expensive. Webpages need to be snappy, in the order of milliseconds, or users will get frustrated. CPUs are so much unbelievably faster than they were, so DHTML can do so much more than simple things now. Try running some of the prettier ajax on a PII and you'll see. Now that said, I haven't seen any decent browsers in a long time. They've become far too bloated with old standards, and quirks mode handling. Frankly, I don't think a page should render at all if it's not a valid w3c page. It'd prevent all of this bull from ever even occuring, and make webpage development just that much better
lulzimakate on July 31, 2008 3:57 AMI disagree with you Ole on your final note. We are developping advenced web 2.0 applications and in my if...else statements to be cross browser compatible, I see more parallels between IE and Safari than between Safari and Firefox.
http://lyaski-masyaski.ru/
| Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |