- New post 2011-10-10: “Google Dart – overview and comments” (with all the information from the official Dart launch at the GOTO conference)
- 2011-09-14: Rewrote of the section “What does it all mean?” and added new material on universal virtual machines. Added Crockford quote under “Other voices on Dart”. Added a conclusion.
- 2011-09-13: More on Eich’s comments at Hacker News.
The following keynote will be held at the GOTO Aarhus 2011 Conference
on Monday, Oct. 10, 2011:
“Dart, a new programming language for structured web programming”
Unless another source is mentioned, all of the following quotes come from a Google email
that was written in November 2010. It summarized a Google-internal discussion:
The agreed-upon “common vision” was to develop a new programming language called “Dash” (which was later renamed to “Dart”).
lingua franca of web development on the open web platform.
In order to minimize the risk of failure, Google will hedge its bets:
- Dash (high risk/high reward): Develop a new language (called Dash) [...]
Dart (originally Dash)
Dart’s goals are (quoting verbatim from the email):
- Performance – Dash is designed with performance characteristics in mind, so that it is possible to create VMs that do not have the performance problems that all EcmaScript VMs must have.
- Ability to be Tooled – Dash is designed to be more easily tooled (e.g. with optional types) for large-scale projects that require code-comprehension features such as refactoring and finding callsites. Dash, however, does not require tooling to be effective--small-scale developers may still be satisfied with a text editor.
There will be several ways of running Dart:
- Server: with the goal to enable “Google-scale” web applications where front end and back end are written in the same programming language.
- Cross-compiler: that compiles Dart to ECMAScript 3 on the fly, for compatibility with non-Dart browsers. Compare to Google Traceur  which compiles ECMAScript.next  to ECMAScript 3, in a similar manner.
The Dash Cross Compiler should be capable of taking typed Closure code (with some restrictions) and converting to Dash. Although the migration process won’t be fully automatic, it should make moving over to a Dash codebase somewhat easier.
Hidden in the FAQ: Google is working on a “cloud IDE (Brightly)”.
Brightly will enable building any web application in V1 using today’s
will support Dash as well. We expect that the more prescriptive development
aspects of Brightly that will come on line in the future will be more Dash
We expect Brightly itself to be the first application written in Dash.
What does it all mean?
Consequences for ECMAScript.next .
- Create an IDE that is as good at ECMAScript.next as it is at Dart.
Mainly the latter does not seem likely. I also hope that Google does not put the main focus of its ECMAScript work on features that help with compiling Dart to it. The email sounds like it, Alex Russell does not. Contrast that with Microsoft’s approach of writing several core Windows 8 apps in standard HTML5 .
Who authored this document [the email introducing Dart/Dash]?
Brad Abrams, Erik Arvidsson, Lars Bak, Darin Fisher, Dimitri Glazkov, Dan Grove, Peter Hallam, Bruce Johnson, Alex Komoroske, John Lenz, Kasper Lund, Mark Miller, Ivan Posva, Alex Russell, and Joel Webber, who collectively represent TC39 (the EcmaScript standards body), WebKit, Parkour, Brightly, JSPrime, JS++, Closure, JSCompiler, V8, Dash, Joy, and GWT, among others.
For example: Gilad Bracha has great taste in language design, his work on Newspeak
and pluggable type systems [PDF
] is exemplary. Newspeak is currently the best guess for what Dart will look like
– given that both of the presenters at the GOTO conference have worked on Strongtalk
. Strongtalk is a language that added an optional static type system to Smalltalk, a dynamically typed language. This approach would go together well with the Dart goal of “developer usability”. Newspeak is in many ways an evolution of the Strongtalk ideas. Furthermore, an IDE has always been at the core of Newspeak’s design which jibes with the “ability to be tooled” of Dart.
reminds us that Google is not always as innocent about openness as they sound. Quoting it verbatim:
- Do not develop in the open. Instead, make source code available after innovation is complete
- Lead device concept: Give early access to the software to partners who build and distribute devices to our specification (ie, Motorola and Verizon). They get a non-contractual time to market advantage and in return they align to our standard.
Will other browser vendors adopt it? If you are a competing browser vendor, your prospects for adopting Dart are as follows:
- It is difficult to integrate into your existing infrastructure (as you couldn’t give early feedback).
- Its development is mainly controlled by Google.
- You give Google a head start of over two years.
That’s not very appealing. With that background, Google’s plan for involving other browser vendors sounds naive:
What if other browsers don’t follow us with Dash?
Lars has promised to “sweet talk” the other browser vendors and, while we are all eager to see this, we recognize this is a very difficult road. Our approach is to make an absolutely fantastic VM/Language and development environment and build great apps that fully leverage it in order to help other browsers see the wisdom in following. Once Dash has had a chance to prove its stability and feasibility, we are committed to making Dash an open standard with involvement from the broader web community.
It is not a good sign that Brendan Eich, a guy who really works his behind off to involve the community in the design of ECMAScript.next has not been approached
, yet. He should be the first person for Google to target with their “sweet-talking”. Oh, and how is that for sweet-talking [emphasis is mine]:
Why are you circumventing the standards process?
Other voices on Dart
Here is something that the Google leak about Dart (née Dash) telegraphs: many Googlers, especially V8 principals, do not like JS and don’t believe it can evolve “in time” (whatever that might mean — and Google of course influences JS’s evolution directly, so they can put a finger on the scale here).
They’re wrong, and I’m glad that at least some of the folks at Google working in TC39 actually believe in JS — specifically its ability to evolve soon enough and well enough to enable both more predictable performance and programming in the large.
There’s a better-is-better bias among Googlers, but the Web is a brutal, shortest-path, Worse-is-Better evolving system.
I’ve spent the last 16 years betting on the Web. Evolving systems can face collapses, die-offs, exigent circumstances. I don’t see JS under imminent threat of death due to such factors, though. Ironic that Google would put a death mark on it.
Gilad Bracha [one of the people behind Dart]:
Lots of speculation about Dart; few facts. All will be revealed at GOTO Aarhus.
More from Eich
on Hacker News (part 1/3):
On Dart: Google as a single entity does not know what could be done in Ecma TC39, since the Dart/V8 principals never participated, and V8 needed a fresh-thinking second team finally to get going on Harmony prototyping.
More from Eich
Innovating in the open and proposing early and often to standards bodies are fine. Delayed-open-washing and increasing piles of proprietary (open-source doesn't matter) single-vendor code, which implements features that are not ever proposed for standardization, are not.
on Hacker News (part 2/3):
For the record, I'm not worried about JS being replaced by a better language. I am working to do that within Ecma TC39, by evolving JS aggressively.
More from Eich
The leaked Google doc's assertion that this is impossible and that a "clean break" is required to make significant improvements is nonsense, a thin rationale for going it alone rather than cooperating fully.
Dart is GBScript to NaCl/Pepper's ActiveG.
on Hacker News (part 3/3):
Look, Netscape had a monopoly and put JS "on first" and just about everywhere. I'm done apologizing for that, I've made up for it in spades on standards work, and it's a fact I cannot recall and rewrite.
The precise point now, here on planet earth and not wherever you are, is that Google is not that new monopoly. Not yet, not likely for years even in their wildest dreams.
If Google were the monopoly Netscape was, sure: Dart would be the new JS. The two would co-exist for a long while but "replacement" would be conceivable so long as market power held up.
Since Google does not have monopoly power, and with the non-standardizing tactics of that leaked memo, Dart is unlikely to be adopted by other browsers. It's fragmenting. It's an invitation to others to inject their own would-be replacements and build a Tower of Babel.
Douglas Crockford in an interview
DZone: Finally, what did you think about the news of Google's new "Dart" language to replace JS?
Crockford: Google has not shared any information with me. Of the little bits they have leaked, some of it looks good. Some of it looks very, very bad. It is too early to draw any conclusions.
My main question for Google is: What can Dart do that ECMAScript.next and Traceur can’t? We’ll have to wait until Oct. 10 to get an answer. It will be an interesting event.
- A brief history of ECMAScript versions (including Harmony and ES.next)
- CoffeeScript – overrated?