Google went ahead and released their new proposed language for the web, Dart. It’s a well-meaning gesture to upgrade the state of client-side web dev, but has had a lukewarm reception.
Not surprising, when it looks like Java, and the current crop of web devs are used to the free-flowing forms of Ruby, Python, and even plain ol’ Javascript. Google’s tools are designed for massive scalability, so more often than not they trade away developer efficiencies1 for code cohesion and maintainability. Scaling is just what Google does.
The technical overview gives a better understanding of the technical underpinnings of the language and the philosophy behind its features. Much like its predecessors Google Closure (the library) and Google Web Toolkit, Dart looks a lot like Java. The class and interface structure, the core library and included data structures, the generics-style typing are ample reminder.
For the web code that Google writes, however, Java-inspired syntax and features make sense. They are in the business of writing webapps, with hundreds of engineers, running on thousands of servers and millions of browsers. Verbosity, rigid class hierarchies and strict typing2 are battle-tested code management tools that work across large teams and massive codebases.
The downside is that the rest of the world don’t need Google-scale coding requirements, especially at the expense of developer time. It’s actually worse for external Google library/framework users; there are internal tools and systems that help manage some issues around these projects that never get open-sourced, and getting help from the authors in-house beats reading sparse online documentation.
As many have pointed out already, Google introduces another web standard using Chrome as their Trojan Horse, but it’s unlikely to catch on with other browsers. Technical superiority – if Dart is truly that – isn’t a motivating factor for Mozilla and Apple (and certainly not Microsoft), so its best chance may be either on the server or in Chrome-only environments like the Chrome Web store3.
And having been in that world, I would say that sometimes, they trade away developer happiness too.↩
Well, one of the features of Dart is the ability to go from untyped to typed. You can see how the language designers really wanted type enforcement but didn’t want to alienate the web crowd.↩
Dart can compile back down to Javascript, but man the results aren’t pretty. Sure, you can make the argument that the compiled code is largely framework boilerplate, but you’ll be the one reading through every line in Firebug trying to pinpoint a browser bug.↩