{"id":174,"date":"2008-12-03T08:24:08","date_gmt":"2008-12-03T13:24:08","guid":{"rendered":"http:\/\/alarmingdevelopment.org\/?p=174"},"modified":"2008-12-03T08:24:42","modified_gmt":"2008-12-03T13:24:42","slug":"why-chrome-is-shiny","status":"publish","type":"post","link":"https:\/\/alarmingdevelopment.org\/?p=174","title":{"rendered":"Why Chrome is Shiny"},"content":{"rendered":"<p>Looking at the Google Web Toolkit, I have realized that Internet browsers are a dead end, much like MS-DOS was. GWT attempts to extract you from the tar pit of browser Javascript by papering over the incompatibilities and limitations. Some examples of these problems:<br \/>\n<!--more--><\/p>\n<ol>\n<li>No multithreading<\/li>\n<li>Reference counting GC, causing memory leaks<\/li>\n<li>Only 2 outgoing TCP sockets, and only to same site as URL<\/li>\n<li>Whole-page rendering, making dynamic layout changes unpleasant<\/li>\n<li>DOM incompatibilities<\/li>\n<li>Event firing and handling incompatibilities<\/li>\n<li>Limited standard libraries, and poor support for large-scale programming<\/li>\n<\/ol>\n<p \/>\nAll of this reminds me very much of MS-DOS. Like the browser, it was essentially a toy that was not originally intended to be used for anything serious or intense. Hackers came in and discovered they could do all sorts of things beyond those original intentions, and that they could get rich in the process. In the resulting gold rush there was no time to worry about fixing the platform. MS-DOS willfully ignored the existing body of knowledge about how to design an operating system. They wanted something quick and dirty (it was truthfully called QDOS at first), so they didn&#8217;t bother to include multiple users, multitasking, reentrancy, networking, hierarchical file systems, command shells, etc. The result was a decade of horrible cluges and hacks to work around or fix these mistakes. Novell made a fortune adding in the missing networked file system. <\/p>\n<p \/>\nIt wasn&#8217;t until Windows NT that MS built a reasonable OS. But by that time they were so burdened by compatibility with the mistakes of the past that many of the benefits were dissipated. Windows remains a platform crippled by its past. Apple escaped their own dead end by abandoning compatibility and importing the older but mature technology of Unix into OS X. The result today is that Apple has a better platform, but an inferior market position. Compatibility really is the right business decision.<\/p>\n<p \/>\nGoogle Chrome is like Windows NT. It is an attempt to fix the browser, by building it the way it should have been done if it was known that it would become a universal application platform. The big question is whether Chrome can force the major browsers to improve. All Google can do is make GWT and all the Google Apps run so much better on Chrome that the other browsers will be forced to catch up.<\/p>\n<p \/>\nExtending the analogy, Silverlight is like OS X. It reaches back to the previous generation platform &#8211; that for desktop apps &#8211; and imports a highly mature technology into the browser. Silverlight is a real VM, with everything we have come to expect: industrial strength libraries, languages, and development tools. The Javascript world is really a bunch of children&#8217;s toys in comparison. Ironically, Silverlight allows Microsoft to finally jettison the legacy of MS-DOS. Flash and JavaFX are also contenders for replacing the broken browser platform, but they don&#8217;t fit so neatly into my historical analogy, so I won&#8217;t discuss them. What do you expect?<\/p>\n<p \/>\nIf we are doomed to repeat history, then reengineered browsers ala Chrome will continue to be the dominant web platform, like Windows dominates desktops, with Silverlight\/Flash\/JavaFX taking a small minority share like OS X.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Looking at the Google Web Toolkit, I have realized that Internet browsers are a dead end, much like MS-DOS was. GWT attempts to extract you from the tar pit of browser Javascript by papering over the incompatibilities and limitations. Some examples of these problems:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-174","post","type-post","status-publish","format-standard","hentry","category-general"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pfEnU-2O","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/174","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=174"}],"version-history":[{"count":2,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/174\/revisions"}],"predecessor-version":[{"id":176,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/174\/revisions\/176"}],"wp:attachment":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=174"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=174"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=174"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}