(Note, I'm speaking from my personal perspective in this post.)
A reasonable question
|Beastie Boys, So What Cha Want? (C) 2009 Capitol Records, LLC|
Choice is good
We believe developer choice is good, and options are good. We believe Dart, which can provide a compelling option for modern web app development, ultimately brings more developers to the web. As long as those web apps run on the majority (aka modern and progressively improving and updating) browsers, we're happy and the web is happy.
The developers interested in Dart are developers with a different set of expectations. They expect a programming environment that helps them craft larger and more complex apps. They expect refactoring from their tools. They expect static analysis. They expect a bundled and cohesive set of libraries. They expect a bundled package manager. They expect significantly improved performance. They expect a better concurrency model. We aim to meet and exceed those expectations.
Web development is improving every day, but it can sometimes be a chaotic mixed bag of roll-your-own solutions. Even if you have a set of frameworks and tools for creating your non-trivial app, finding your way around the code, and working with a large team, can be a challenge without static analysis tools. Dart really helps here because it is a toolable language, with three major editors (Dart Editor, Eclipse, and IntelliJ/WebStorm) supporting features such as refactoring, jump to definition, quick fixes, outline view, show callers, code completion, integrated debugging, and more. When apps and teams cross the non-trivial threshold, it's tools and features like these that really make a big difference.
Dart wants developers to stay productive. The debugging support in Dart Editor works closely with Dartium, a custom build of Chromium with the Dart VM. Set breakpoints, examine state, see exceptions, and more without ever waiting for a compile step. It's important to Dart to maintain a tight iteration loop, striving for a fast edit/reload cycle that current web developers demand.
Dart also wants apps to start up faster. Much, much faster. It's silly that today's modern web apps are still parsed from source. Initial research has shown that Dart's snapshots, or serialized binary heaps, can help apps startup 10X faster. Especially on mobile devices, every millisecond counts.
Work with the web
Build bigger apps
Dart wants to see more awesome apps running in modern browsers, and wants to help a broad range of developers (not just endemic to the web) meet and exceed the rising user demands for beautiful, easy to use, fun, powerful apps running in the browser. Dart wants to see more developers demand better workflows, tools, frameworks, and performance for whatever language or runtime they are using. Dart wants to be a great choice to help more developers build for the most ubiquitous platform out there.
I was very happy to debunk some myths for Addy, and that he now understood what we're thinking and striving for.
The Dart project
So what is the Dart project doing about it?
- Building a familiar, interesting, and simple language with clear semantics.
- Building tools and libraries for better developer productivity.
- Building a new VM for running Dart code, providing speed boosts, debugging, and modern concurrency.
- Building a Dart + Web Components library, because we think Web Components will be the foundation for the next evolution of web development.
- Making changes based on feedback from the community, and accepting pull requests.
- Building in the open as an open source project.
Dart is, at the time of this writing, still evolving rapidly and is a technology preview. The first milestone is coming soon. The M1 launch will provide a fairly stable language base with which to build upon. If your first introduction to Dart was the public launch in October 2011, you're in for a treat with lots of changes to the language, runtimes, and tools (many of which were in response to community feedback).