Choose your (JavaScript) Framework wisely!

In my world (generally SharePoint, Office 365 & Azure) as well as the rest of the world, there have been dramatic changes in web development in the past 7 or 8 years; a great number of front-end JavaScript frameworks have come and gone, and some appear to be here to stay.

Choosing the wrong framework or toolset can have obvious detrimental effects:

  • Dependency on obsolete or legacy code
  • Expensive re-write in the future or “technical debt”
  • Difficulty in attracting talent (yes, good developers will shun a company still using Cobol etc. ;-))
  • Wasted time learning short-lived frameworks

This post is intended to shed some light on the reasons some of these frameworks have stood the test of time (relatively speaking!) and how to compare them from a popularity point of view. No warranty is implied etc 🙂

Mootools vs Scriptaculous vs jQuery

It seems only yesterday we were using Mootools.js and Scriptaculous.js (RIP both) to provide a much-needed boost to front-end JavaScript development, however Google Trends (love it!) quickly shows me that it was probably about 7 or 8 years ago…


It seems like an earthquake hit the mootools and scriptaculous developers sometime around 2008.

Its name was jQuery, and it consigned them to history:


The above chart demonstrates how insignificant both mootools and scriptaculous became when jQuery arrived.

Syntax was comparable in many ways, so why the shift? One possible (possibly controversial) reason is that Microsoft adopted jQuery in 2008, as part of the ASP.NET MVC framework under an MIT license. Scott Guthrie mentions “jQuery is a lightweight open source JavaScript library (only 15kb in size) that in a relatively short span of time has become one of the most popular libraries on the web.”

Note “one of the most popular libraries” not “the most popular”, at the time. This was a revelation at the time, Microsoft actually using open source software. Things have moved on of course, with a lot of Microsoft code and frameworks being open source now.

So lesson number one in selecting a framework if you are concerned about its longevity – if one of the big guns (Microsoft, Google, Facebook, Twitter etc.) have adopted a framework, it’s likely to stick around for a while.

Knockout.js vs Backbone.js vs Ember.js vs Angular.js

Another area of web development where it’s great to see progress is in the MVC space – separation of concerns is a noble ambition and long been an issue on the web; each of these frameworks apply a Model-View-Controller type pattern which makes it easier to develop more complex user interfaces including single page applications, which are also easier to maintain.

Another glance at Google Trends (told you I liked it!) shows the following, looking for knockout.js, ember.js and backbone.js:


Backbone.js is clearly the most popular search term, however it is in serious decline, I wonder why? 🙂

Add Angular.js into the mix and you get a clue:


Angular.js is the green trend upward – almost surpassing Backbone.js, but not quite.

It’s even more telling comparing Knockout and Angular (which were two options for a recent project):


So why Angular.js? I’ll give you a clue: it’s written by Google… so lesson number one re-inforced!

Node.js vs PHP vs C# vs Ruby on Rails

Finally, just a fun little comparison – it’s clear that Node.js is on its way up – (node.js is a highly scalable event-driven framework):


When you compare with traditional alternatives (ok, maybe over-simplifying here..) such as PHP and C# you can see a few things:


  • PHP is in serious decline (I don’t hear any complaints!)
  • C# is fairly stable
  • Both are currently significantly more popular (I expect node.js to step up in the next 2 years though!)

I was unable to get any meaningful comparison with Ruby on Rails, because guess what – a Ruby is a thing! So other people (not just geeks) will be searching for Ruby (person, gem, etc).

So lesson number 2 – only choose a framework which has a unique name! (only joking!! but only COMPARE frameworks in this way if they DO have a unique enough name!)


Preferably use jQuery, Angular.js if they meet your needs.

I won’t say what not to use, you can draw your own conclusions.

Happy coding – hope that helps!

4 thoughts on “Choose your (JavaScript) Framework wisely!

  1. Gus:

    Great analysis. I went to fiddle with Google Trends a little. I think things are going to be skewed a bit based on your searches. For example, KnockoutJS is the real name versus knockout.js. Ideally, we’d want to combine several terms into one for each framework/library/plugin. (The debate about what each of those terms mean may be another post!)

    That said, I don’t disagree with any of your conclusions. But I love KnockoutJS!


    1. Thanks Marc – I agree it’s not absolute science, and I did toy with the idea of using Google Trend’s new beta feature which actually categorises the search terms – try searching for Ruby and you can select Ruby (Programming Language) or Ruby (Web Framework) or just Ruby.

      “Beta: Measuring search interest in topics is a beta feature which quickly provides accurate measurements of overall search interest. To measure search interest for a specific query, select the “search term” option”

      I think even though KnockoutJS is the real name you do get similar results; I like Knockout too – they are not directly comparable; AC does a good job of summarising

  2. I seriously question your choice of metrics / one data point for some of the above.

    Google Search Results (just count the zeroes!)

    PHP: 2,340,000,000
    C#: 38,200,000

    Also, I would argue that the popularity of jQuery was driven by a vibrant open source community (not any sort of backing by a single company) and especially great documentation. The same was true in the early rise of PHP. Google have been fostering this and trying to focus on documentation for AngularJS, which has helped a lot too.

    But I agree with your overall point of being careful of fad frameworks!

Leave a Reply

Your email address will not be published. Required fields are marked *