Marco's Blog

All content personal opinions or work.
en eo

PIcking Your Javascript Mobile Framework: Part 7 - Activity

2014-11-17 7 min read Comparisons marco

One of the big problems with technology is the rapid pace of change. It’s good for users, of course, but it can be a real challenge for developers. That’s not because it’s hard to learn new technology, but because you may end up creating something in a framework that becomes a dead-end. Then, as the Internet moves on, you have to switch your app to a different framework if you want to make use of new technology.

On the other hand, you never know what the next big technology is going to be. Sometimes a concerted effort by major companies that seems to carry momentum ends up nowhere; other times, a one-man project explodes out in the wild; and sometimes the predictable occurs, and the major project becomes a major success and the one-man project withers and dies.

But we have to make an educated guess. And we have a few ingredients for that guess:

  • The number of hits on Google for the framework
  • The number of questions tagged on StackOverflow
  • The presence, length, and number of references in a WIkipedia article
  • The number of projects using that framework

In addition to that, the age of the project is of fundamental importance. An old project has had more time to accumulate references, but it is also more likely to have been superseded by more recent ones. Young projects, on the other hand, may not have a lot of backing behind them or references, but they may be targeting deficiencies of older frameworks.

As a result, the table will group projects of similar age together.

Part 1: The Granddaddies (pre-2012)

If you are a fan of evolution, you’ll know there have been several “explosion” events during which an enormous number of new species evolved in a very short time. For Javascript MVC frameworks, that time was 2012. Everybody and their dog published a framework, and ever since the market has been polluted with them.

Before 2012, though, you had slim pickins. In fact, of our list only six frameworks hail from that time:

Name URL Wikipedia Page Google Hits StackOverflow Qs Projects Using Started Latest
angularjs_require https://angularjs.org/ AngularJS 1130000 63842 119 2009 1.3.2 (current)
backbone_marionette_require http://backbonejs.org/ Backbone.js 1110000 16712 86 10/2010 1.1.2 (2/2014)
jquery http://jquery.com/ jQuery 6410000 551352 >1000 8/2006 2.1.1 (4/2014)
knockback http://kmalakoff.github.io/knockback/ 10600 26 2/2011 0.20.5 (current)
knockoutjs_require http://knockoutjs.com/ KnockoutJS 450000 12255 >17 7/2010 3.2.0 (8/2014)
sammyjs http://sammyjs.org/ 18000 222 6/2009 0.7.6 (8/2014)
spine http://spinejs.com/ 210000 181 9/2011 1.3.2 (6/2014)

(Confession: I left out knockback as an option by simple oversight. It belongs into this table, and the text I originally wrote didn’t include it. Since it really didn’t gain any traction in 3 years, as opposed to lots of competitors that came after, I think we can safely ignore it.)

As you can see, the granddaddies have lots of accumulated investment, on Google and StackOverflow. The one exception is SammyJS, which is otherwise a very remarkable JavaScript framework. It barely compares to the other frameworks in this group when it comes to Google hits. It is an outlier in one more respect: while still under active development, it has managed not to cross the 1.0 version in the 5 years it’s been around. It’s no surprise, then, that the commonly asked question about SammyJS is: why isn’t this framework more popular? (The author offers a “beats me” as reply.)

As we have seen,** the age of the framework is not an indicator of how well it performs**. Our best performer overall (in first time load time) is Backbone with Marionette and Require, whose infrastructure was started in 2010. At the same time,** jQuery, which is one of our poorest performers, was started in 2006**. It has focused on completely different things, of course, and performance seems not to have been a deciding factor.

Also note how only two of the frameworks (SammyJS and Spine) manage not to have their own Wikipedia page.

Part 2: The Cambrian Explosion (2012)

I wasn’t there when it happened, but if feels like 2012 was a seminal year for Web MVC frameworks. I am not sure how I wasn’t there, but I can confirm I didn’t notice anything out of the ordinary. But out of the ordinary it was.

Name URL Wikipedia Page Google Hits StackOverflow Qs Projects Using Started Latest
agilityjs http://agilityjs.com 6820 8 3/2012 0.1.3 (2012)
canjs_require http://canjs.com/ JavaScriptMVC 29700 142 3/2012 2.1.3 (current)
durandal http://durandaljs.com/ 36100 1105 12 2012 2.1.0 (6/2014)
epitome https://github.com/epitome-mvc/Epitome 606000 0 6/2012 0.6.1 (current)
firebase-angular https://www.firebase.com/ Firebase 66300 2052 4/2012 acquired by Google
maria http://peter.michaux.ca/maria/ 864000 0 1/2012 (7/2014)
rappidjs http://blog.rappidjs.com/ 3520 0 6/2012 0.9.0 (9/2014)
serenadejs http://serenadejs.org/ 48700 0 6/2012 0.5.0 (7/2013)
somajs_require http://somajs.github.io/somajs/ 2520 0 3/2012 2.1.0 (5/2014)
stapes_require http://hay.github.io/stapes/ 19100 2 3/2012 0.8.1 (1/2014)
thorax_lumbar http://thoraxjs.org/ 211000 6 8/2012 3.0.0 (current)
troopjs_require http://troopjs.com/ 1820 0 6/2012 3.0.0 (current)
typescript-angular http://www.typescriptlang.org/ TypeScript 336000 3055 2012 1.3 (current)

Both number of Google hits and StackOverflow questions are a good indicator of a project’s health. The two exceptions are Epitome and Maria. Both garner a lot of Google hits but not a single StackOverflow question. This could be due to the fact Epitome and Maria are perfect, or more likely to the fact the names are in common usage and may have fooled Google. I asked for “<insert name of project> javascript framework” and it mostly worked perfectly – but in the case of Epitome and Maria I have my doubts.

While Firebase was no surprise, mostly because the framework belongs to the larger database company, Durandal came out of nowhere. I confirmed that the StackOverflow tag is about the Javascript framework, so it seems to be in common usage – or at least confuse a lot of people that then have to ask questions.

CanJS, a solid performer in our roundup, is probably the most convincing of the entries in this group. Firebase was recently acquired by Google, a company with an amazing track record for shutting down projects it buys, so falls out of the race. (Incidentally, as I was researching I found that Batman, another interesting contender, has been discontinued.)

Typescript, by the way, is a Microsoft product. Not sure what to make of that – in the old days, it would have meant you were going to buy into a proprietary product that works only in Internet Explorer, but the New Microsoft (post Ballmer) seems to have changed its ways.

Part 3: The Babies (post-2012)

After the big event, entries started slowing down. The new frameworks focus a lot on fixing the major issues they perceive in the older ones. The one exception is React, which was born inside Facebook and is simply Facebook’s way of doing things. While I applaud the company for opening up their code, React is really not the strongest performer in this roundup. It is slow and offers no advantages I can see.

Name URL Wikipedia Page Google Hits StackOverflow Qs Projects Using Started Latest
ampersand http://ampersandjs.com/ 136000 4 4 6/2014 4.3.15 (current)
exoskeleton http://exosjs.com/ 289000 0 10/2013 0.7.0 (8/2014)
mithril http://lhorie.github.io/mithril/ 12500 17 4/2014 0.1.24 (current)
ractive http://www.ractivejs.org/ 20400 111 8/2013 0.6.1 (current)
react http://facebook.github.io/react/ 505000 804 5/2013 0.9.0 (2/2014)
vue http://vuejs.org/ 455000 17 3/2014 0.11 (current)

The same logic that makes Maria and Epitome Google hits inflated seems to have worked its magic with Exoskeleton and Ampersand. The latter, though, is a really fresh product that can’t be penalized for not having left a mark in the landscape yet. It has the bizarrly inflated version number 4.3.15 where the other frameworks would have lowballed in the sub-1s, but that’s just a quirk.

All of these projects, with the exception of Exoskeleton, seem to have active users. StackOverflow question count is certainly indicative of that, with these new projects having more average questions than those of two years past already.

Summary

I removed the projects from the list that were too anemic to give me confidence in a future with them. I learned from my past that betting on the best technology can lead nowhere, as all those endless months of learning Gem for Atari ST still remind me.

It’s a real shame that some of the best technology gets beaten to a pulp by strange market forces, but it’s something I cannot control. On the other hand, we have plenty frameworks to choose from – so even if we don’t get the best, we will get something pretty darn good.

The remaining contenders are, in alphabetical order:

1. ampersand
2. angularjs_require
3. backbone_marionette_require
4. canjs_require
5. durandal
6. jquery
7. knockoutjs_require
8. mithril
9. ractive
10. react
11. stapes_require
12. thorax_lumbar
13. vue