{"id":1974,"date":"2015-04-03T00:21:01","date_gmt":"2015-04-03T05:21:01","guid":{"rendered":"http:\/\/redmonk.com\/dberkholz\/?p=1974"},"modified":"2015-04-03T13:03:08","modified_gmt":"2015-04-03T18:03:08","slug":"react-and-polymer-arising-among-javascript-mv-frameworks","status":"publish","type":"post","link":"https:\/\/redmonk.com\/dberkholz\/2015\/04\/03\/react-and-polymer-arising-among-javascript-mv-frameworks\/","title":{"rendered":"React and Polymer arising among JavaScript MV* frameworks"},"content":{"rendered":"<p>A <a href=\"https:\/\/twitter.com\/dberkholz\/status\/515699569905397760\">while back<\/a>, I started looking into JavaScript MV* frameworks. My colleague James often says we could have full-time work only making recommendations for the correct JS framework for a given week.<\/p>\n<p>While I don&#8217;t have the time remaining at RedMonk to do a truly in-depth analysis, I did want to post a quick hit with some stats and conclusions.<\/p>\n<p>This analysis began by pulling a list of frameworks from the excellent <a href=\"http:\/\/todomvc.com\/\">TodoMVC<\/a>, because as we all know, if it doesn&#8217;t work well for a todo list, it clearly can&#8217;t handle a larger app &lt;\/sarcasm&gt;. But I had to start somewhere, so start I did.<\/p>\n<p>I first took a look at Stack Overflow and plotted tags referencing any of these frameworks over time (click to embiggen\/focus):<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1982\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/03\/react-and-polymer-arising-among-javascript-mv-frameworks\/stack_overflow_mvc-2\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc1.png\" data-orig-size=\"971,499\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"stack_overflow_mvc\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc1-300x154.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc1.png\" class=\"aligncenter wp-image-1982\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc1.png\" alt=\"stack_overflow_mvc\" width=\"450\" height=\"231\" \/><\/a><\/p>\n<p>I was frankly shocked by the overwhelming dominance of Angular.js. Although it&#8217;s well-known that Angular is quite popular, this is nearly absurd. It&#8217;s so popular that it&#8217;s impossible to even see trends in the other frameworks.<\/p>\n<p>So I next removed Angular from the comparison and plotted everything again (click to embiggen\/focus):<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc_no_angular1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1983\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/03\/react-and-polymer-arising-among-javascript-mv-frameworks\/stack_overflow_mvc_no_angular-2\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc_no_angular1.png\" data-orig-size=\"970,498\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"stack_overflow_mvc_no_angular\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc_no_angular1-300x154.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc_no_angular1.png\" class=\"aligncenter wp-image-1983\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/stack_overflow_mvc_no_angular1.png\" alt=\"stack_overflow_mvc_no_angular\" width=\"450\" height=\"231\" \/><\/a><\/p>\n<p>This produced some more broadly useful results. Frameworks tended to segment into a couple of main tiers, with few exceptions.<\/p>\n<p><strong>Tier 0<\/strong><\/p>\n<ul>\n<li>Angular.js<\/li>\n<\/ul>\n<p><strong>Tier 1<\/strong><\/p>\n<ul>\n<li>Ember.js (note more recent and continued growth; this is top-ranked outside of Angular)<\/li>\n<li>Knockout (trending downward)<\/li>\n<li>Backbone.js (trending downward)<\/li>\n<li>Kendo UI<\/li>\n<li>Ext JS<\/li>\n<li>Dojo (barely)<\/li>\n<\/ul>\n<p><strong>Tier 2<\/strong><\/p>\n<ul>\n<li>YUI<\/li>\n<li>PureMVC<\/li>\n<li>Sammy.js<\/li>\n<li>Enyo<\/li>\n<li>Agility.js<\/li>\n<li>CanJS<\/li>\n<li>Stapes.js<\/li>\n<li>SAPUI5 (OpenUI5) \u2014There are strong hints that this may be rising out of the pack as well, see graph below<\/li>\n<li>vue.js<\/li>\n<li>SproutCore<\/li>\n<li>Durandal<\/li>\n<\/ul>\n<p><strong>Rogues<\/strong><\/p>\n<ul>\n<li>React<\/li>\n<li>Polymer<\/li>\n<\/ul>\n<p>Being RedMonk, we&#8217;re typically on the lookout for new, emerging technologies, so the rogue behavior of React and Polymer is of particular interest. They&#8217;re separately plotted here, in addition to SAPUI5\/OpenUI5 (click to embiggen\/focus):<\/p>\n<p><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/Screen-Shot-2015-04-03-at-11.48.18-AM.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1981\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2015\/04\/03\/react-and-polymer-arising-among-javascript-mv-frameworks\/screen-shot-2015-04-03-at-11-48-18-am\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/Screen-Shot-2015-04-03-at-11.48.18-AM.png\" data-orig-size=\"972,505\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Stack Overflow: React, Polymer, SAPUI5\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/Screen-Shot-2015-04-03-at-11.48.18-AM-300x156.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2015\/04\/Screen-Shot-2015-04-03-at-11.48.18-AM.png\" class=\"aligncenter wp-image-1981\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2015\/04\/Screen-Shot-2015-04-03-at-11.48.18-AM.png\" alt=\"Stack Overflow: React, Polymer, SAPUI5\" width=\"450\" height=\"234\" \/><\/a><\/p>\n<p>Looking at up-to-the-minute information suggests that Polymer may have stalled out for the time being, while React continues to grow. This is in keeping with anecdata from the (far too many) conferences I attend, where I hear increasingly often about React but very little Polymer. Another surprise is SAPUI5\/OpenUI5, which is one worth tracking in the future.<\/p>\n<p>Regardless \u2014 in terms of new and emerging JS frameworks, those are ones to watch out for.<\/p>\n<p><span style=\"color: #ff0000;\"><em>Update (2015\/04\/03): Added notes on SAPUI5\/OpenUI5.<\/em><\/span><\/p>\n<p><span style=\"color: #999999;\"><em><strong>Disclosures<\/strong>: SAP is a client. Google (Angular, Polymer) and Facebook (React) are not.<\/em><\/span><\/p>\n<div class=\"acc_license\"><a href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\"><img decoding=\"async\" src=\"http:\/\/i.creativecommons.org\/l\/by-sa\/3.0\/88x31.png\" alt=\"by-sa\" \/><\/a><\/div><!--<rdf:RDF xmlns=\"http:\/\/creativecommons.org\/ns#\" xmlns:dc=\"http:\/\/purl.org\/dc\/elements\/1.1\/\" xmlns:rdf=\"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#\"><Work rdf:about=\"\"><license rdf:resource=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\" \/><\/Work><License rdf:about=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\"><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#Attribution\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#Reproduction\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#Distribution\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#DerivativeWorks\" \/><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#ShareAlike\" \/><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#Notice\" \/><\/License><\/rdf:RDF>-->","protected":false},"excerpt":{"rendered":"<p>A while back, I started looking into JavaScript MV* frameworks. My colleague James often says we could have full-time work only making recommendations for the correct JS framework for a given week. While I don&#8217;t have the time remaining at RedMonk to do a truly in-depth analysis, I did want to post a quick hit<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[43],"tags":[],"class_list":["post-1974","post","type-post","status-publish","format-standard","hentry","category-javascript"],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p23Tsn-vQ","_links":{"self":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts\/1974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/comments?post=1974"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts\/1974\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/media?parent=1974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/categories?post=1974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/tags?post=1974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}