Microsoft not a Dart believer

In a blog post Microsoft says that they don’t agree with Google’s view about how Javascript should be replaced with something new. Microsoft is confident that “with committee participant focus, the standards runtime can be expanded and the syntactic features necessary to support JavaScript at scale can be built upon the existing JavaScript standard.

On the same blog post they write about Office Web Applications. According to Microsoft the Applications consists hundreds of thousands of lines of Javascript code and they are mainly developed with Script#. A tool which is stated to “bring productivity to Ajax and JavaScript development”. Script# allows applications to be written with C# and then compiled to JavaScript so it is pretty close to Google tools like GWT of Closure Tools.

Some feature highlights for the Script# include:

  • Productive development – Intellisense that works, thanks to static typing
  • Intuitive OOP Syntax – Syntax similar to Java and C#
  • Refactoring support
I find these ones interesting, because they are the same things Google is using to promote Dart. So in away MIcrosoft agrees that at least in its current form JavaScript is not suitable for large scale development and something like Script# or Dart is needed to fix this.

Dart discussion on hacker news

Some good points from the discussion on Hacker News:

  • Google has experience on huge applications running on browser, for example GMail and adwords. Adwords is 1+M lines of code and written in GWT. Due to the mismatch between Java and Javascript the GWT has certain rough edges. Think Dart as modern GWT. You write in Dart, but can compile to (efficient) Javascript
  • Dart is very much Java like – expect JVM implementation soon. This would open all existing Java classes to Dart, very interesting option especially for the server side. This might be also pretty easy way for Google to bring Dart to App Engine
  • To put things into context: the original leaked memo was written by somebody trying to recruit people into his team. To make the work more attractive it was maybe offering too much “we solve all the worlds problems”
  • Many commentators see the language as boring, would have expected something more new and exciting. Nathanwdavis points out the core library and especially things that deal with concurrency and asynchronous operations.
  • Some arm wresting about whether Dart is needed at all and if it will ever take off, due to other browser vendors saying now thanks.

Dart announced

Google has officially announced the Dart language. Specifications and examples are available at http://www.dartlang.org/

In addition to the language itself, Google also unveiled corelib class library.

Syntax of Dart language looks pretty clear, at least for a programmer coming from Java. It features classes and interfaces, but you can also just write functions like with Javascript. As promised earlier, types are optional in Dart.

All in all, the language itself looks very promising. I certainly see it might get traction especially among people coming from Java world. I think Dart will also provide some very, very interesting possibilities for node.js – or should I say node.dart. There could be huge benefits for productivity, if we could really use the same language on both server and client. Javascript and node.js kind of had this promise, but Javascript syntax and the limitatins of Javascript sure were a turn off for certain people.

More details leak about “DART”

Summary: A year old internal email from Google tells that they are working on a new programming language called Dart (previously Dash) to replace Javascript, because they believe Javascript holds too much baggage. With the new language they specifically aim to solve problems related to performance and large scale development projects. The new language will be rolling out with Chrome, but the aim is obviously to get other browser vendors on board as well. Browsers with Javascript only support can be targeted with cross-compiler.

Apparently an old email, one that was probably supposed to internal for Google has been uncovered from Internets. This writing, that is little less than year old, is very interesting description of Google’s strategy with Javascript and Dart (back then it was called dash) .

The strategy Google proposes in the email is two-pronged:

  1. Continue working with Javascript, trying to make it better through the standardization process. This includes for example working with the EcmaScript standardization body on the Project Harmony (which is future evolution of Javascript)
  2. A new language that would maintain the dynamic nature of Javascript but would have better performance characteristics and allow better tooling for large scale projects.

As for the reasons why we need change they state that good web software is too difficult with Javascript and current tools. This becomes especially evident on large scale projects. Also the performance characteristics of Javascript are less than optimal. The writers also bring up the point that if writing good quality software on web is too hard, that will probably drive the developers to closed platforms like Apple iOS. This is probably very good way to sell this idea inside Google since “open web” is good for their business. Closed platforms controlled by other vendors are not.

The email states that simply evolving Javascript won’t solve the problems due to historical baggage. I could also question the capabilities of big standardization bodies to define good programming languages. For me it seems to be that these are usually defined by benevolent dictators rather that committees. And as we can read from Wikipedia, the standardization process of ECMAscript has not been without its hurdles.

Introducing a completely new programming language and trying to replace Javascript is no easy task as the writer agree. On the other hand Google has one huge advantage on its side. Google Chrome’s marketshare is already around 13%. This is far from being used by the majority of the users but it sure gives Google the possibility to try out things without convincing other browser makers. This could be the same strategy Google used to beef up the Javascript engines. A few year back nobody really cared about Javascript performance. Then came Chrome, with its V8 engine and lovely results in the benchmarks. Suddenly everybody was interested in how well their browsers javascript engine stacks on the charts.

In addition to the support in Chrome, developers can use Dart by utilizing cross compiler that will be compiling Dart to Javascript. This will probably help to get people writing software with Dart.

According to the email quite many Google projects involving Javascript will be eventually converging to Dart. These include Closure and Google Web Toolkit (GWT). Closure was a set of tools compling Javascript to Javascript, in order to increase performance and provide number of other benefits. It probably never took off outside Google, but apparently quite many Google applications are based on it. GWT had a little bit similar idea, but on GWT programmers were using a subset (but quite extensive subset) of the Java programming language and its standard libraries to write code, which was then compiled to Javascript.

The email also mentiones Google Cloud IDE, called Brightly but does not go into any details on that.

One major thing that is not covered in the post are the libraries. A new language may be nice, but good set of libraries is even more important. One thing where Javascript falls short is that we are missing a “standard” way of building UI applications (backed with cloud services).

Summasummarum: This is very interesting development. For Google the browser truly is the new operating system. For very long time Google has been betting on the browser becoming the defacto runtime environment for “desktop apps”, almost ignoring technologies like Java applets and Adobe Flash. Now this strategy seems to be paying of and with Dart they are taking this much further. It is also interesting to see how they are now against Microsoft on multiple fronts. Application development tools and developer support has traditionally been the strong point for Microsoft and it has probably helped them in keeping Windows marketshare high. Now Microsoft is struggling to create a strategy for applications running on browser and Google is challenging them with its own  cloud platform and development tools.

Dart will be unveiled at GOTO conference

Speculations on the discussion sites and blogs started immediately after the GOTO Conference organizers announced that Google would be holding the keynote speech with title “Dart, a new programming language for structured web programming”. The conference web pages don’t tell too much about Dart. Except that it has something to do with the web.

The keynote will be delivered by Gilad Bracha and Lars Bak, both working for Google. Bracha has a strong background with programming languages, he is the creator of Newspeak, co-author of the Java Language Specification and researcher in the area of object oriented languages. Bak on the other hand is described as “veteran virtual machinist”. He has been working with several software systems. On Google his responsibility has been the design and implementation of V8 (the Javascript engine powering Chrome and node.js, well known for its speed).

Since Google already has unveiled Go, which is more of a server side language, it is quite safe to bet that Dart will be something for the client side. Google is already working on multiple fronts to “fix” the client side. The products they built on top of browser are getting more and more complicated (think GMail, Google Docs, Wave). Managing the development with a language like Javascript which is not really designed for projects this large is challenging. Most of the approaches involve compiling something into Javascript. While this approach seems to be work, it is hardly the optimal solution.

The conference will be starting 11th of October.