Atlas compatibility layer: why did we extend Firefox to implement IE-isms?
Microsoft does not enjoy the best reputation when it comes to respecting standards. So when seeing that Atlas has a compatibility layer that extends Firefox and Safari APIs to implement IE-isms, some have seen it as an attempt to discard the standard.
The reason why Atlas extends Firefox and Safari to implement the IE APIs and not the other way around is in fact purely technical. Firefox and in a lesser extent Safari allow the extension of HTML element prototypes whereas IE does not. Standards have nothing to do with this decision. There is a need to have a consistent API cross-browser to avoid having the rest of the libraries checking for the existence of an API and branching the code all the time. For example, instead of constantly doing if (obj.attachEvent) {obj.attachEvent(...)} else {obj.addEventListener(...)}, we can just do attachEvent and it works cross-browser. We (and the MSN team before us) just chose the simplest possible way to achieve that. The way people used to do it before was to implement helper methods to encapsulate the branching, which if you think about it is not any more standard than what we're doing, it was just introducing a third way to do it in addition to the standard one and to the IE-ism.
I'd like to hear your constructive thoughts about that but please don't see any malice where there is none. ;)