Dart is Dead
The Jury is In
With the latest programming language rankings coming in, it’s clear that Google’s Dart is going nowhere. Dart has fallen out of the top 20 at TIOBE (now sitting at 34th position). Langpop.corger.nl still show Dart behind Scala, Haskell, Groovy, Go, Clojure, Lua, and Erlang…languages that are far, far down the list at the pathological TIOBE index. Even a newly introduced ranking report from Gartner shows Dart in 22nd place, behind Scala, Haskell, Clojure, Lua, D, and Groovy.
IT World also take issue with Dart. A growing consensus is telling us that Dart is a dead end, both for client-side web development and on the server (where it has to compete with Go and Node).
To make things worse, Google have shown no intention to stand behind any one of their numerous software offerings, such as Dart, AngularDart, AngularJS, AtScript (AngularJS 2.0), and GWT (Java). It could get worse if Google also come out with client-side Go (there are already several Go-to-JS compilers). With all of this confusion, why should any developer take a chance on Dart?
Stick a fork in it; it’s done.
Choice is generally a good thing, but the client-side web community is horribly, terribly, frighteningly fragmented. In addition to all the “compile-to-JS” products [1], there are also numerous JS products, such as AngularJS, Ember.js, Backbone.js, Meteor.js, etc., etc., etc. This is utterly insane!
No matter what are Dart’s features, or how easy Dart makes web development, the fact is, there are a lot of other options out there and they all make the same claims. They all compile to JavaScript. They’re all easy to learn. Just about any one of them is easier than programming directly in JavaScript. Moreover, JavaScript itself is undergoing continuing evolution, becoming better and better. Dart doesn’t seem all that relevant anymore.
Rather defensively, I’ve been told by Dartisans that Dart is “a bet on the future.” That’s why Dart’s limited browser support and slow adoption by developers are not a major concern. Dart is playing the “long game.” Over time, people will give up their older browsers. Over time, the size of the Dart community will reach critical mass. Eventually, the world will recognize the value of Dart and a tsunami of Dart-enabled websites will sweep the planet. Their naive confidence is so cute!
However, Dart isn’t the only one betting on the future. So are AtScript and AngularJS 2.0. Years ago, Google Web Toolkit (or GWT) was also a bet on the future. Today, CoffeeScript and TypeScript are betting on the future. Amber Smalltalk is also betting on the future. Betting on the future is all fine and good. That, and a buck seventy five, will get you a coffee and muffin at McDonald’s.
The problem with betting on the future is that developers want to write web applications today. They want to be sure that their investment of time and energy will not be wasted should their chosen language/framework/platform lose momentum and fall into niche status. So it behooves them to choose carefully and wisely.
The applications you write today must run on all browser versions in use today. And they must run well. You also want to write them promptly and with minimal effort.
I don’t know what the answer is. Perhaps the best advice is this: Wait a few years or ten for the client-side web market to settle and in the meantime, stick with what you know. If you know Java, use Java. If you know JavaScript, use JavaScript. If you know Smalltalk, use Smalltalk. Don’t waste your precious time and energy. Save them for what truly counts — writing your actual applications!
Admittedly, with this article I’m having some fun at the expense of Dartisans.
(This is a follow-up to an earlier article: The Future of Dart is Dim.)
[1] Here is a mind-boggling list: http://goo.gl/1zhSq8