We asked Mathieu about his experience working with Dart, and he shares some of his thoughts:
Q: How did you hear about Dart?
First time ? The famous leaked memo ;). As a user interface developer I am pretty interested by all technologies running in the browser. And I like a lot the Dart model (run in a dedicated VM or compile it to JS). I believe it's a good strategy to evolve. The browser is the "new" runtime, but good runtimes support several languages and I do not understand why the browser should only accept one. Moreover, the compilation step for web apps is relevant for a lot of reasons (optimizations, resources concatenation...).
Q: Was this the first Dart code that you wrote?
I played with the samples provided with the SDK, but making this TodoMVC sample was also the opportunity to make a "real thing" with Dart. I wasn't initially sure to submit the sample to the official project.
Q: How did you like porting TodoMVC?
It was very pleasant. Once the main concepts of Dart understood, the language is easy to use. For a Java/JS developer, a lot of things come naturally. And I think the final implementation stays very clear and simple. I personally find it simpler to read than the Vanilla JS one.
Q: What parts of Dart did you find useful or interesting?
One of the first issue I had was about templating. The multi-line concatenation and variable interpolation made a simple and elegant solution. Combined with the query() method, creating and adding behaviour to a HTML element is pretty easy. The "on" keyword for event handlers is pleasant too. For the rest, if you are a C-syntax languages / object oriented developer, you can not get lost.
Q: What was challenging about this experience?
I wanted to take advantage of Dart features to make a component design which stays simple, and minimize DOM operations. TodoMVC is initially a project to compare MVC frameworks, this Dart sample is a Vanilla Dart example ; I tried not to think as a Vanilla JS developer, nor as a GWT one.
Q: What would you like to see Dart do in the future?
The code would have been even simpler if I could extend Element, and use "native" custom events. As a GWT developer, I missed a component model. But I understand the language part, not the "framework" part, is the priority ; I am impatient because of Dart's potential. By the way, I am going to try Hipster MVC as soon as possible!
You can start using Dart by getting Dart Editor, visiting dartlang.org, and we encourage you to ask questions at Stack Overflow.