{"id":24,"date":"2010-12-09T15:36:00","date_gmt":"2010-12-09T23:36:00","guid":{"rendered":"http:\/\/www.wirfs-brock.com\/allen\/?p=24"},"modified":"2022-04-14T16:48:49","modified_gmt":"2022-04-14T23:48:49","slug":"please-no-browser-monoculture","status":"publish","type":"post","link":"https:\/\/wirfs-brock.com\/allen\/posts\/24","title":{"rendered":"Please, No Browser Monoculture"},"content":{"rendered":"<p>Dave Mandelin has a nice <a title=\"post\" href=\"http:\/\/blog.mozilla.com\/dmandelin\/2010\/12\/08\/crankshaft\/\" target=\"_blank\" rel=\"noopener\">post<\/a> responding to the Google V8 team&#8217;s new <a title=\"Crankshaft\" href=\"http:\/\/blog.chromium.org\/2010\/12\/new-crankshaft-for-v8.html\" target=\"_blank\" rel=\"noopener\">Crankshaft<\/a> additions to their JavaScript engine.\u00a0 Good reading, but all pretty much what you would expect in the currently highly competitive world of JavaScript implementations.\u00a0 What really caught my attention was a comment by\u00a0 <a title=\"RH Ryan\" href=\"http:\/\/rustyryan.net\/\">RH Ryan<\/a> that, in part,\u00a0 said:<\/p>\n<p style=\"padding-left: 30px;\">Call me naive, but why can\u2019t you guys all get together and work on 1 common ECMAScript engine. It seems like a huge waste of human intelligence for there to be 3 major open-source Javascript VMs. The Chrome Team have gone ahead and said \u201cOK Fair Enough, we don\u2019t actually want to re-invent the wheel with another DOM renderer, let\u2019s use WebKit\u201d. It won\u2019t affect Firefox\u2019s popularity in the slightest, and you can spend time working on making either V8 faster, or making Firefox itself better!<\/p>\n<p style=\"padding-left: 30px;\">I admire your work and am not trying to diminish its impact. It would take time but I think both projects (and Safari if they were amenable to the idea) and their combined millions of users would benefit from getting your collective compiler\/VM\/JIT-expert heads together.<\/p>\n<p>So, sorry Rusty, but I am going to have to call you naive. Competition is good.\u00a0 It\u2019s what drives innovation whether you are talking about commercial or open source software development.\u00a0 Software monocultures stifle innovation, even when they are open source based.<\/p>\n<p>Even with the best of intentions such a combination couldn\u2019t innovate as fast as what we have been seeing going on with JavaScript implementations for the last few years.\u00a0 There are always competing technical approaches for solving hard problems like building a fast JavaScript engine.\u00a0 It seldom is clear which approach is best (if best even exists).\u00a0 But to actually ship software you have to make a choice and stick with it.\u00a0\u00a0 Sometimes you make the wrong choice and just have to live with it for a while.\u00a0 Often you won\u2019t even know if you made the wrong choice unless somebody demonstrates that an alternative would have been better. \u00a0Multiple independent teams working on competing JavaScript engines allow technical alternatives to be experimented with in parallel.\u00a0 We all get to see which approaches work best and when the code is open source we can all benefit from the most successful efforts.<\/p>\n<p>So no, we shouldn\u2019t wish for a single universal JavaScript engine.\u00a0 Along the same vein, we should wish for more competition to Webkit as a core browser building block.\u00a0 \u00a0The last thing we need is a browser monoculture.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dave Mandelin has a nice post responding to the Google V8 team&#8217;s new Crankshaft additions to their JavaScript engine.\u00a0 Good reading, but all pretty much what you would expect in the currently highly competitive world of JavaScript implementations.\u00a0 What really caught my attention was a comment by\u00a0 RH Ryan that, in part,\u00a0 said: Call me [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/posts\/24"}],"collection":[{"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/comments?post=24"}],"version-history":[{"count":7,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/posts\/24\/revisions"}],"predecessor-version":[{"id":29,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/posts\/24\/revisions\/29"}],"wp:attachment":[{"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/media?parent=24"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/categories?post=24"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/tags?post=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}