MooTools went further by copying “all methods from Array” onto another MooTools object, “Elements.” THAT broke, because the standard Array.flatten would be non-enumerable, and so it wouldn’t get copied to Elements, and so Elements.flatten would fail.
> Why don’t we just keep the existing name and break the Web?
> In 1996, before CSS became widespread, and long before “HTML5” became a thing, the Space Jam website went live. Today, the website still works the same way it did 22 years ago.
> How did that happen? Did someone maintain that website for all these years, updating it every time browser vendors shipped a new feature?
> As it turns out, “don’t break the Web” is the number one design principle for HTML, CSS, JavaScript, and any other standard that’s widely used on the Web. If shipping a new browser feature causes existing websites to stop working, that’s bad for everyone:
> - visitors of the affected websites suddenly get a broken user experience;
> - the website owners went from having a perfectly-working website to a non-functional one without them changing anything;
> - browser vendors shipping the new feature lose market share, due to users switching browsers after noticing “it works in browser X”;
> - once the compatibility issue is known, other browser vendors refuse to ship it. The feature specification does not match reality (“nothing but a work of fiction”), which is bad for the standardization process.
> Sure, in retrospect MooTools did the wrong thing — but breaking the web doesn’t punish them, it punishes users. These users do not know what a moo tool is. Alternatively, we can find another solution, and users can continue to use the web. The choice is easy to make."
Who ever thought future progress can be sacrificed just so that some obscure website (obscure because it is no longer supported, people no longer care) can work for 22 years during which the world has changed so much that this website is probably no longer relevant under any objective measure.
I mean yes, maintain SOME backward compatibility but dragging bs like typeof null === 'object' all along is just nuts.
Some people care about books, even books written by people long dead. And some people care about the content on some older websites, even if they are not using the newest flashy framework.
As developers, we hate the demands of legacy code and backward compatibility. We would like to scrap everything and rewrite in the cool new language and framework every few years. But a browser is not only a fun playground for developers. It is a tool for accessing information for people who couldn't care less about what an identifier is called in JavaScript. They just want it to work.
The alternative would to design the web so that only popular and "relevant" sites can expect to be viewable in the future, and to arbitrarily break everything else. But the web isn't (or shouldn't be) structurally biased towards the size or traffic of a few specific sites, and an obscure decades old site no one cares about has just as much of a right to remain functional as any other.