« Cracking the Enterprise Market with Firefox | Main | Work makes CNET »

March 20, 2006

Microsoft Atlas and Mozilla Compat

Microsoft's DHTML (ne AJAX) toolkit, Atlas, uses a interesting way to gain Mozilla compatability.

The main Atlas files are all written for IE, with all the non-standard stuff like attachEvent. But before it is included, they include a compat layer, which adds all the IE-isms to Mozilla. Safari gets the same treatment - I believe Opera is already a total IE API whore these days.

They use all the advanced JS features like the __defineGetter__/__proto__ magic we have to achieve this.

Cause writing to standards is, like, so 2005.

Posted by doron at March 20, 2006 6:40 PM

Comments

This may also be what makes it so slow. Had to block all their atlas crap in adblock just to get one of their sites ( it was a blarg at spaces.msn.com ) to come up at a halfway decent speed.

Posted by: RC at March 20, 2006 8:01 PM

Opera is? Interesting.

Posted by: Anne van Kesteren at March 21, 2006 1:00 AM

It's also causing a memory leak in Mozilla somewhere:
https://bugzilla.mozilla.org/show_bug.cgi?id=328311
I haven't been able to minimise this crap just yet. (and lately I haven't been trying to)

Posted by: Martijn at March 21, 2006 1:29 AM

RC has a good point. Writing to standards and using IE shims makes IE slower to download and run than us. Writing proprietary and using standards shims makes us the same as or slower than them.

Posted by: Gerv at March 21, 2006 2:40 AM

Shouldn't that be AJAX (ne DHTML)?

Posted by: Stuart at March 21, 2006 7:45 AM

It's actually DOM Scripting (ne DHTML), but MS still calls it DHTML and AJAX is reserved for the non-technicals.

Posted by: Karl at March 23, 2006 8:27 AM

The point is, you can make Mozilla IE compatible, you can't make IE standards compliant. Mozilla is extensible, not IE.

Posted by: BLR at May 8, 2006 4:26 PM

"The point is, you can make Mozilla IE compatible, you can't make IE standards compliant. Mozilla is extensible, not IE."

The point is, you can abstract the differences out rather than forcing browsers to be compatible. I haven't seen much of a performance loss doing abstraction, and it helps if you want to change a call in the future due to new browser features.

Posted by: doron [TypeKey Profile Page] at May 12, 2006 12:12 PM