{"id":234,"date":"2016-09-16T17:14:45","date_gmt":"2016-09-16T17:14:45","guid":{"rendered":"http:\/\/redmonk.com\/fryan\/?p=234"},"modified":"2017-07-14T15:31:45","modified_gmt":"2017-07-14T15:31:45","slug":"language-framework-popularity-a-look-at-javascript","status":"publish","type":"post","link":"https:\/\/redmonk.com\/fryan\/2016\/09\/16\/language-framework-popularity-a-look-at-javascript\/","title":{"rendered":"Language Framework Popularity: A Look at JavaScript"},"content":{"rendered":"<p><strong>TL; DR<\/strong> \u2013 Express is the biggest game in town by orders of magnitude. Early adopters are increasingly looking to Koa. Sails continues to grow in popularity.<\/p>\n<p style=\"text-align: center;\"><em>Framework: \u2018a basic structure underlying a system, concept, or text.\u2019<\/em><\/p>\n<p>We have recently\u00a0looked at <a href=\"http:\/\/redmonk.com\/fryan\/2016\/09\/08\/language-framework-popularity-a-look-java\/\">frameworks used with Java<\/a>, and as we noted one of the factors which drives the popularity of a language is the availability of frameworks and tools which enhance developer productivity, something which <a href=\"http:\/\/twitter.com\/sogrady\">Stephen O\u2019Grady<\/a>\u00a0<a href=\"http:\/\/redmonk.com\/sogrady\/2011\/04\/27\/frameworks-lead-adoption\/\">has covered in the past<\/a><\/p>\n<p>In the bi-annual <a href=\"http:\/\/redmonk.com\/sogrady\/2016\/07\/20\/language-rankings-6-16\/\">RedMonk Programming Language Rankings<\/a> produced by my colleague Stephen O\u2019Grady we consistently see JavaScript as one of the top three most popular languages. There are a number of factors that people point to, but the majority of growth in the usage of JavaScript in the language rankings is directly attributable to the growth in the usage in Node.js.<\/p>\n<p>While many developers can, and still do, argue that \u2018real programmers\u2019 don\u2019t use JavaScript, this is a demonstrably untrue statement in 2016. Companies such as Uber, Walmart, Disney and Paypal are running large parts of their mission critical, server side, infrastructure on JavaScript.<\/p>\n<p>Looking to the future we continuously hear of developers choosing JavaScript as their preferred language with respect to the<a href=\"http:\/\/redmonk.com\/fryan\/2016\/04\/28\/serverless-volume-compute-for-a-new-generation\/\"> emerging serverless paradigm<\/a>. The improvements, and gradual removal of some of the \u2018quirks\u2019 of the language, which are being driven by the <a href=\"https:\/\/en.wikipedia.org\/wiki\/ECMAScript\">ECMA process<\/a> all point towards an even stronger future for the language in multiple settings.<\/p>\n<p>For the purposes of this analysis we looked at the frameworks we hear mentioned most frequently in our conversations around JavaScript. These frameworks are primarily focused on the server side, with the criteria that we hear the framework mentioned in conjunction with creating REST APIs. This is by no means a fully exhaustive list, but it does capture the most popular frameworks that we hear about being used with JavaScript (some frameworks are layered together, with frameworks such as SailsJS, KrakenJS and FeathersJS all built on Express).<\/p>\n<p>There are a number of other incredibly popular JavaScript frameworks focused on other problem spaces that we have not included here, such as Socket.io, Derby and Meteor. Front end frameworks such as Angular and React are also outside the scope of this particular piece of research.<\/p>\n<p>If there is a framework you feel we should be looking at, either in this context, or in the wider JavaScript ecosystem, please do add a comment below or let me know on <a href=\"http:\/\/twitter.com\/fintanr\">twitter<\/a>.<\/p>\n<h2>Framework Popularity<\/h2>\n<p>We began our analysis by looking at the popularity of various frameworks on Github. Express emerged as the clear winner here.<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-stars-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-241\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-stars-20160912-300x300.png\" alt=\"final-javascript-fw-stars-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-stars-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-stars-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-stars-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-stars-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-issues-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-240\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-issues-20160912-300x300.png\" alt=\"final-javascript-fw-issues-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-issues-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-issues-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-issues-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-issues-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-commits-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-239\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-commits-20160912-300x300.png\" alt=\"final-javascript-fw-commits-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-commits-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-commits-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-commits-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-Javascript-fw-commits-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Next we looked at download stats from npmjs.org.<a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-wexpress-20160916.png\"><br \/>\n<\/a><\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-wexpress-20160916.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-252\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-wexpress-20160916-300x180.png\" alt=\"final-npm-wexpress-20160916\" width=\"300\" height=\"180\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-wexpress-20160916-300x180.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-wexpress-20160916-768x460.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-wexpress-20160916-1024x613.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>It is here that the dominance of Express is really shown. At over 100 million cumulative downloads it is by far the most popular framework for use with JavaScript. The next closest competitor is HAPI, which has 3.3 million cumulative downloads. To put this in perspective Express got twice as many downloads in the month of August as HAPI has gotten in its entire lifetime. Now there are many factors that you should take into account, including upgrades, version iterations, dependencies, automated build systems and so forth. However, even taking all of these factors into account it is clear that, no matter what way you slice and dice the information, Express is the clear leader.<\/p>\n<p>Among the remaining frameworks we see the following breakdown of downloads.<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-woexpress-20160916.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-253\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-woexpress-20160916-300x180.png\" alt=\"final-npm-woexpress-20160916\" width=\"300\" height=\"180\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-woexpress-20160916-300x180.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-woexpress-20160916-768x460.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-npm-woexpress-20160916-1024x613.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Only a subset of the frameworks were represented on Twitter.<\/p>\n<h2><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-avascript-fw-twitter-2016-09-16.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-254\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-avascript-fw-twitter-2016-09-16-300x180.png\" alt=\"final-avascript-fw-twitter-2016-09-16\" width=\"300\" height=\"180\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-avascript-fw-twitter-2016-09-16-300x180.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-avascript-fw-twitter-2016-09-16-768x460.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-avascript-fw-twitter-2016-09-16-1024x613.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/h2>\n<h2>Commerical and Community Contributions to\u00a0Individual Frameworks<\/h2>\n<p>Before we delve into the frameworks, we do have to note the outsized influence of <a href=\"https:\/\/github.com\/tj\">TJ Holowaychuk<\/a> on both <a href=\"https:\/\/expressjs.com\/\">Express<\/a> and <a href=\"http:\/\/koajs.com\/\">Koa<\/a>. He accounts for 75% and 44% of the code changes in the respective projects. It is fair to say that Node.js adoption would be nowhere near the level it is without his contributions. For this analysis all of TJ\u2019s contributions are marked as community.<\/p>\n<h2>Express<\/h2>\n<p>Now while it is outside the scope of this analysis, it is impossible to talk about <a href=\"https:\/\/expressjs.com\/\">Express<\/a> and not acknowledge the frustrations which emerged in the community in recent times, from the sale of the Express name to <a href=\"http:\/\/strongloop.io\">Strongloop<\/a>, ultimately ending up in IBM, and a key maintainer leaving the project. There has been a defined drop off in commit activity over the last few years.<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-cci-20160912-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-256\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-cci-20160912-1-300x300.png\" alt=\"final-javascript-express-cci-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-cci-20160912-1-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-cci-20160912-1-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-cci-20160912-1-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-cci-20160912-1-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-ccc-20160912-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-255\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-ccc-20160912-1-300x300.png\" alt=\"final-javascript-express-ccc-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-ccc-20160912-1-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-ccc-20160912-1-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-ccc-20160912-1-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Express-ccc-20160912-1-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Ownership of Express moved from <a href=\"https:\/\/nodejs.org\/en\/blog\/announcements\/foundation-express-news\/\">IBM to the Node Foundation in February of this year<\/a>. As of now there has not been a noticeable\u00a0uptick in activity.<\/p>\n<h2>Koa<\/h2>\n<p>The original team behind Express are now focused on the <a href=\"http:\/\/koajs.com\/\">Koa<\/a> framework. One of the key aspects of Koa is the decision to ditch callbacks in favour of <a href=\"http:\/\/jlongster.com\/A-Study-on-Solving-Callbacks-with-JavaScript-Generators\">generators<\/a>. Now this impacts adoption in some unusual ways. For many developers coming to Node, callbacks were and are one of the more difficult concepts to understand, and people often end up in \u2018callback hell\u2019. The trade-off is once the investment has been made to learn an approach, e.g. callbacks, people are sometimes reluctant to move on.<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-cci-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-247\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-cci-20160912-300x300.png\" alt=\"final-javascript-koa-cci-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-cci-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-cci-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-cci-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-cci-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-246\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-ccc-20160912-300x300.png\" alt=\"final-javascript-koa-ccc-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-ccc-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-ccc-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-ccc-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Koa-ccc-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Developers we speak to that are using Koa are very much in the early adopter area, but we do expect to see significant further growth in the usage of Koa.<\/p>\n<h2>Sails<\/h2>\n<p>Given our bias towards server side frameworks in this research, we debated including <a href=\"http:\/\/sailsjs.org\">Sails<\/a> as it is primarily discussed as a front end technology. However, Sails is reasonably widely used for creating REST APIs, hence its inclusion.<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-cci-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-251\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-cci-20160912-300x300.png\" alt=\"final-javascript-sailsjs-cci-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-cci-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-cci-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-cci-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-cci-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-ccc-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-250\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-ccc-20160912-300x300.png\" alt=\"final-javascript-sailsjs-ccc-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-ccc-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-ccc-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-ccc-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-SailsJS-ccc-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2><\/h2>\n<h2>Loopback<\/h2>\n<p><a href=\"http:\/\/loopback.io\">Loopback<\/a> is the opensource basis for IBM\u2019s API Connect product, and as you might expect IBM dominate the overall contributions to Loopback. Loopbacks focuses on making REST APIs easy to create and manage.<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-cci-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-249\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-cci-20160912-300x300.png\" alt=\"final-javascript-loopback-cci-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-cci-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-cci-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-cci-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-cci-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-ccc-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-248\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-ccc-20160912-300x300.png\" alt=\"final-javascript-loopback-ccc-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-ccc-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-ccc-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-ccc-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Loopback-ccc-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>HAPI<\/h2>\n<p><a href=\"http:\/\/hapijs.com\/\">HAPI<\/a> was originally created at Walmart, and is used in a number of large enterprises. There is still some growth in interest, and the community remains reasonably active.<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-cci-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-243\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-cci-20160912-300x300.png\" alt=\"final-javascript-hapi-cci-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-cci-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-cci-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-cci-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-cci-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-ccc-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-242\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-ccc-20160912-300x300.png\" alt=\"final-javascript-hapi-ccc-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-ccc-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-ccc-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-ccc-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-HAPI-ccc-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>During 2015 a number of the main project leads, who collectively account for almost 88% of the code contributions to HAPI, moved onto other roles from Walmart, and we have taken this into account in our analysis. The project leads have stated they will continue to remain involved in HAPI.<\/p>\n<h2>Kraken<\/h2>\n<p>The <a href=\"http:\/\/krakenjs.com\/\">Kraken<\/a> framework was created at Paypal, and they remain by far the biggest contributor to the framework. The overall growth in interest appears to have tapered off at this point, as has them level of contributions from Paypal<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-cci-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-245\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-cci-20160912-300x300.png\" alt=\"final-javascript-karkenjs-cci-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-cci-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-cci-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-cci-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-cci-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-ccc-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-244\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-ccc-20160912-300x300.png\" alt=\"final-javascript-karkenjs-ccc-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-ccc-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-ccc-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-ccc-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-KarkenJS-ccc-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2>Feathers<\/h2>\n<p><a href=\"http:\/\/feathersjs.com\">Feathers<\/a> is included here due to the spike in interest we noted in early 2016. We have heard of some usage for the generation of \u201creal-time\u201d REST APIs using the framework.<\/p>\n<p><a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-cci-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-238\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-cci-20160912-300x300.png\" alt=\"final-javascript-feathers-cci-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-cci-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-cci-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-cci-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-cci-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-ccc-20160912.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-237\" src=\"http:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-ccc-20160912-300x300.png\" alt=\"final-javascript-feathers-ccc-20160912\" width=\"300\" height=\"300\" srcset=\"https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-ccc-20160912-300x300.png 300w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-ccc-20160912-150x150.png 150w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-ccc-20160912-768x768.png 768w, https:\/\/redmonk.com\/fryan\/files\/2016\/09\/final-javascript-Feathers-ccc-20160912-1024x1024.png 1024w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2>Commercial Support &amp; Licensing Information<\/h2>\n<p>When we move to large scale enterprise deployments, commercial support can become a significant factor for software, although this appears to be far less of a concern among the JavaScript community. \u00a0The MIT License is used by all of the top tier frameworks analysed bar Kraken.<\/p>\n<table border=\"1\">\n<tbody>\n<tr>\n<td><strong>Framework<\/strong><\/td>\n<td><strong>Commercial Support<\/strong><\/td>\n<td><strong>License<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Express<\/td>\n<td><a href=\"http:\/\/ibm.com\">IBM<\/a><\/td>\n<td>MIT License<\/td>\n<\/tr>\n<tr>\n<td>Sails<\/td>\n<td>None<\/td>\n<td>MIT License<\/td>\n<\/tr>\n<tr>\n<td>Koa<\/td>\n<td>None<\/td>\n<td>MIT License<\/td>\n<\/tr>\n<tr>\n<td>Loopback<\/td>\n<td>IBM<\/td>\n<td>MIT License<\/td>\n<\/tr>\n<tr>\n<td>HAPI<\/td>\n<td>None<\/td>\n<td>Modified MIT (not clearly stated)<\/td>\n<\/tr>\n<tr>\n<td>Kraken<\/td>\n<td>None<\/td>\n<td>Apache 2.0<\/td>\n<\/tr>\n<tr>\n<td>Feathers<\/td>\n<td>None<\/td>\n<td>MIT License<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Notes on the analysis<\/strong><\/p>\n<ul>\n<li>Data was pulled to\u00a0the end of August<\/li>\n<li>Where possible we have identified commercial contributions to a project, but there will be some minor gaps and inaccuracies in this mapping.<\/li>\n<\/ul>\n<p><strong>Disclaimers:<\/strong> Meteor and IBM (owners of StrongLoop) are RedMonk customers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>TL; DR \u2013 Express is the biggest game in town by orders of magnitude. Early adopters are increasingly looking to Koa. Sails continues to grow in popularity. Framework: \u2018a basic structure underlying a system, concept, or text.\u2019 We have recently\u00a0looked at frameworks used with Java, and as we noted one of the factors which drives<\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19,15,32,34,24],"tags":[],"class_list":["post-234","post","type-post","status-publish","format-standard","hentry","category-community","category-developers","category-frameworks","category-javascript","category-research"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/posts\/234","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/comments?post=234"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/posts\/234\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/media?parent=234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/categories?post=234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/fryan\/wp-json\/wp\/v2\/tags?post=234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}