as for 05.06.2017
still work in progress
main todos at the end
The influential post How it feels to learn JavaScript in 2016 highlighted important feature of JavaScript - a vast amount of JavaScript frameworks avaiable for developers. But feelings are not enough to describe the whole ecosystem and we need some data. Some of them were collected by the State of JavaScript Survey where we can find answers to questions on topics ranging from front-end frameworks and state management, to build tools and testing libraries. For those who are starting with web-development I would recommend to read A Study Plan To Cure JavaScript Fatigue.
My personal goal here is to analyse the most popular frameworks to highlight another troublesome feature of JavaScript. There is not only vast amount of the frameworks, but also the vast amount of versions of each framework. It is hard for the beginner to study particular framework based on the materials and courses avaiable online,
because there are becoming outdated very quickly. Even though that for most of them principles are not changing some features are appearing/disappearing often. But not only frameworks are changing. All existing JavaScript labels can give you a headache. The first encouter of ES5, ES6 and ES2016 can be frightening, and the advice that you can learn babel to resolve the problem is not helping. For those who are not familiar with them - here you have nice blog post about JavaScript versioning.
Based on github repos and npm stats I will check how often new version of each framework is released with emphasis on the major releases. Based on the the State of JavaScript Survey I will focus on the following frameworks:
- Front-End survey
- React ✅
- Angular ✅
- Ember ✅
- Vue ✅
- Backbone ✅
- State Management survey
- Redux ✅
- Mobx
- Relay
- Full- Stack survey
- Meteor ✅
- FeathersJS
- DoneJS
- Build Tools survey
- Webpack ✅
- Grunt
- Gulp
- Browserify
- Node.js ✅
The analysis is done with R and presented using GitHub Pages. All codes are available on GitHub
Some part of my motivation was described in the introduction. However it lacks data. Is it JavaScript really important? How important is it?
Using Google BigQuery httparchive datasets I check the growth rate of bytes count for web content. Starting from 2012年01月01日 till 2017年04月01日 the average size of JS code for 10,000 most popular webpages grew by 200% while HTML content only by ~50%. More importantly since 2014 Html count stabilized while JS and CSS code still rises. Data show how important JS is for the web development right now. Keep in mind that those data do not show e.g. the server-side JS implementations (or other back-end code base).
date | bytesHtml | bytesJS | bytesCSS | bytesPic | growthHtml | growthJS | growthCSS | growthPic |
---|---|---|---|---|---|---|---|---|
2012年01月01日 | 41963 | 179479 | 34961 | 1256949 | 0.00 | 0.00 | 0.00 | 0.00 |
2012年04月01日 | 42590 | 197774 | 37387 | 1302799 | 1.49 | 10.19 | 6.94 | 3.65 |
2012年07月01日 | 43018 | 202495 | 36761 | 1240668 | 2.51 | 12.82 | 5.15 | -1.30 |
2012年10月01日 | 48171 | 205792 | 38407 | 1355806 | 14.79 | 14.66 | 9.86 | 7.86 |
2013年01月01日 | 48673 | 207754 | 35775 | 1433817 | 15.99 | 15.75 | 2.33 | 14.07 |
2013年04月01日 | 52531 | 233017 | 39406 | 1658013 | 25.18 | 29.83 | 12.71 | 31.91 |
2013年07月01日 | 55262 | 238135 | 39385 | 1785808 | 31.69 | 32.68 | 12.65 | 42.07 |
2013年10月01日 | 57919 | 278787 | 46698 | 1873393 | 38.02 | 55.33 | 33.57 | 49.04 |
2014年01月01日 | 57057 | 296016 | 50125 | 1990561 | 35.97 | 64.93 | 43.37 | 58.36 |
2014年04月01日 | 56389 | 303144 | 51734 | 2027095 | 34.38 | 68.90 | 47.98 | 61.27 |
2014年07月01日 | 58914 | 321480 | 55876 | 2247900 | 40.39 | 79.12 | 59.82 | 78.84 |
2014年10月01日 | 59408 | 330501 | 58642 | 2276486 | 41.57 | 84.14 | 67.73 | 81.11 |
2015年01月01日 | 60720 | 340748 | 61452 | 2420417 | 44.70 | 89.85 | 75.77 | 92.56 |
2015年04月01日 | 61672 | 364864 | 66954 | 2396793 | 46.96 | 103.29 | 91.51 | 90.68 |
2015年07月01日 | 56653 | 413541 | 70301 | 2648086 | 35.01 | 130.41 | 101.08 | 110.68 |
2015年10月01日 | 54444 | 381833 | 69619 | 2271052 | 29.74 | 112.74 | 99.13 | 80.68 |
2016年01月01日 | 73143 | 430203 | 74778 | 2793915 | 74.30 | 139.69 | 113.89 | 122.28 |
2016年04月01日 | 71189 | 432455 | 75122 | 2871931 | 69.65 | 140.95 | 114.87 | 128.48 |
2016年07月01日 | 72129 | 489601 | 75518 | 2991113 | 71.89 | 172.79 | 116.01 | 137.97 |
2016年10月01日 | 58765 | 509507 | 72927 | 3070641 | 40.04 | 183.88 | 108.59 | 144.29 |
2017年02月15日 | 57150 | 507092 | 76550 | 3032973 | 36.19 | 182.53 | 118.96 | 141.30 |
2017年04月01日 | 57867 | 535009 | 80242 | 3197328 | 37.90 | 198.09 | 129.52 | 154.37 |
As for now the data about following frameworks was downloaded.
owner | name | date_min | version_first | date_max | version_last |
---|---|---|---|---|---|
angular | angular | 2015年03月14日 | 0.0.1 | 2017年06月01日 | 4.2.0 |
jashkenas | backbone | 2010年10月13日 | 0.1.0 | 2016年04月05日 | 1.3.3 |
webpack | webpack | 2013年12月19日 | 1.0.0 | 2017年06月07日 | 3.0.0 |
nodejs | node | 2009年05月27日 | 0.0.1 | 2017年06月06日 | 8.0.0 |
meteor | meteor | 2011年12月10日 | 0.0.40 | 2017年06月06日 | 1.6 |
emberjs | ember.js | 2011年06月18日 | 0.9 | 2017年05月31日 | 2.14.0 |
react | 2013年07月02日 | 0.3.0 | 2017年05月01日 | 15.5.4 | |
vuejs | vue | 2013年12月07日 | 0.6.0 | 2017年05月09日 | 2.3.3 |
reactjs | redux | 2015年06月02日 | 0.2.0 | 2016年09月04日 | 3.6.0 |
Polymer | polymer | 2013年07月11日 | 0.0.20130711 | 2017年06月15日 | 1.9.2 |
Some frameworks use only numeric versioning, while other use also extended tags (e.g. rc1, rc2, etc. - see versioning).
Some data was downloaded using GitHub GraphQL api, some using webscrapping techniques. For more details see R codes.
Node.js is an open-source, cross-platform JavaScript run-time environment for executing JavaScript code server-side.
Nodejs with its node repo is using number versioning, however they are releasing so often that in description you have details about each release. Maybe in the future I will extend the analysis with those details.
Last 10 releases:
owner | name | date | version | version_ext |
---|---|---|---|---|
nodejs | node | 2017年06月06日 | v6.11.0 | 6.11.0 |
nodejs | node | 2017年05月30日 | v8.0.0 | 8.0.0 |
nodejs | node | 2017年05月03日 | v7.10.0 | 7.10.0 |
nodejs | node | 2017年05月02日 | v6.10.3 | 6.10.3 |
nodejs | node | 2017年05月02日 | v4.8.3 | 4.8.3 |
nodejs | node | 2017年04月11日 | v7.9.0 | 7.9.0 |
nodejs | node | 2017年04月04日 | v4.8.2 | 4.8.2 |
nodejs | node | 2017年04月04日 | v6.10.2 | 6.10.2 |
nodejs | node | 2017年03月29日 | v7.8.0 | 7.8.0 |
nodejs | node | 2017年03月21日 | v7.7.4 | 7.7.4 |
<script data-plotly="m.ziembinski:1" sharekey-plotly="BeYDrjyJ48pqdFRPOOJwlP" src="https://plot.ly/embed.js" async></script>
<script data-plotly="m.ziembinski:3" sharekey-plotly="NdcRn3bJqX3rP1q5Cqi6vo" src="https://plot.ly/embed.js" async></script>
Other links:
React is an open-source JavaScript library for building user interfaces.
Facebook with its react repo is using mainly number versioning. After version v0.14.8 facebook change the versioning and started with the version v15.0.0. See tables below:
Last 10 releases:
owner | name | date | version | version_ext |
---|---|---|---|---|
react | 2017年05月01日 | v15.5.1 | 15.5.1 | |
react | 2017年05月01日 | v15.5.2 | 15.5.2 | |
react | 2017年05月01日 | v15.5.3 | 15.5.3 | |
react | 2017年05月01日 | v15.5.4 | 15.5.4 | |
react | 2017年04月07日 | v15.5.0 | 15.5.0 | |
react | 2017年01月06日 | v15.4.2 | 15.4.2 | |
react | 2016年11月23日 | v15.4.1 | 15.4.1 | |
react | 2016年11月16日 | v15.4.0 | 15.4.0 | |
react | 2016年09月19日 | v15.3.2 | 15.3.2 | |
react | 2016年08月19日 | v15.3.1 | 15.3.1 |
Major versions:
owner | name | major | N | date_first | date_last | previous | since_release | since_previous |
---|---|---|---|---|---|---|---|---|
react | 15 | 20 | 2016年03月08日 | 2017年05月01日 | 2015年07月03日 | 419 days | 249 days | |
react | 14 | 13 | 2015年07月03日 | 2016年03月29日 | 2015年02月22日 | 270 days | 131 days | |
react | 13 | 6 | 2015年02月22日 | 2015年05月08日 | 2014年10月16日 | 75 days | 129 days | |
react | 12 | 4 | 2014年10月16日 | 2014年12月18日 | 2014年07月13日 | 63 days | 95 days | |
react | 11 | 4 | 2014年07月13日 | 2014年09月16日 | 2014年03月19日 | 65 days | 116 days | |
react | 10 | 2 | 2014年03月19日 | 2014年03月21日 | 2014年02月17日 | 2 days | 30 days | |
react | 9 | 2 | 2014年02月17日 | 2014年02月20日 | 2013年12月19日 | 3 days | 60 days | |
react | 8 | 1 | 2013年12月19日 | 2013年12月19日 | 2013年10月16日 | 0 days | 64 days | |
react | 5 | 3 | 2013年10月16日 | 2013年12月18日 | 2013年07月17日 | 63 days | 91 days | |
react | 4 | 3 | 2013年07月17日 | 2013年12月18日 | 2013年05月29日 | 154 days | 49 days | |
react | 3 | 2 | 2013年05月29日 | 2013年06月20日 | NA | 22 days | NA |
NPM stats.
Last 10 releases:
owner | name | date | version | version_ext |
---|---|---|---|---|
angular | angular | 2017年06月01日 | 4.2.0-rc.2 | 4.2.0 |
angular | angular | 2017年05月26日 | 4.2.0-rc.1 | 4.2.0 |
angular | angular | 2017年05月19日 | 4.2.0-rc.0 | 4.2.0 |
angular | angular | 2017年05月17日 | 4.1.3 | 4.1.3 |
angular | angular | 2017年05月10日 | 4.2.0-beta.1 | 4.2.0 |
angular | angular | 2017年05月10日 | 4.1.2 | 4.1.2 |
angular | angular | 2017年05月04日 | 4.2.0-beta.0 | 4.2.0 |
angular | angular | 2017年05月04日 | 4.1.1 | 4.1.1 |
angular | angular | 2017年04月26日 | 4.1.0 | 4.1.0 |
angular | angular | 2017年04月21日 | 4.1.0-rc.0 | 4.1.0 |
Major versions:
owner | name | major | N | date_first | date_last | previous | since_release | since_previous |
---|---|---|---|---|---|---|---|---|
angular | angular | 4 | 30 | 2016年12月14日 | 2017年06月01日 | 2015年03月14日 | 169 days | 641 days |
angular | angular | 2 | 113 | 2015年03月14日 | 2017年03月17日 | NA | 734 days | NA |
Last 10 releases:
owner | name | date | version | version_ext |
---|---|---|---|---|
Polymer | polymer | 2017年06月15日 | v1.9.2 | 1.9.2 |
Polymer | polymer | 2017年06月15日 | v1.9.2-dev | 1.9.2 |
Polymer | polymer | 2017年05月25日 | v2.0.1 | 2.0.1 |
Polymer | polymer | 2017年05月15日 | v2.0.0 | 2.0.0 |
Polymer | polymer | 2017年05月13日 | v2.0.0-rc.9 | 2.0.0 |
Polymer | polymer | 2017年05月12日 | v2.0.0-rc.8 | 2.0.0 |
Polymer | polymer | 2017年04月19日 | v2.0.0-rc.7 | 2.0.0 |
Polymer | polymer | 2017年04月18日 | v2.0.0-rc.6 | 2.0.0 |
Polymer | polymer | 2017年04月17日 | v1.9.1 | 1.9.1 |
Polymer | polymer | 2017年04月17日 | v1.9.1-dev | 1.9.1 |
Major versions:
owner | name | major | N | date_first | date_last | previous | since_release | since_previous |
---|---|---|---|---|---|---|---|---|
Polymer | polymer | 2 | 11 | 2017年03月04日 | 2017年05月25日 | 2015年05月27日 | 82 days | 647 days |
Polymer | polymer | 1 | 45 | 2015年05月27日 | 2017年06月15日 | 2013年07月11日 | 750 days | 685 days |
Polymer | polymer | 0 | 56 | 2013年07月11日 | 2015年05月27日 | NA | 685 days | NA |
Last 10 releases:
owner | name | date | version | version_ext |
---|---|---|---|---|
reactjs | redux | 2016年09月04日 | v3.6.0 | 3.6.0 |
reactjs | redux | 2016年04月24日 | v3.5.2 | 3.5.2 |
reactjs | redux | 2016年04月20日 | v3.5.0 | 3.5.0 |
reactjs | redux | 2016年04月20日 | v3.5.1 | 3.5.1 |
reactjs | redux | 2016年04月08日 | v3.4.0 | 3.4.0 |
reactjs | redux | 2016年02月06日 | v3.3.1 | 3.3.1 |
reactjs | redux | 2016年02月05日 | v3.3.0 | 3.3.0 |
reactjs | redux | 2016年02月02日 | v3.2.1 | 3.2.1 |
reactjs | redux | 2016年02月01日 | v3.2.0 | 3.2.0 |
reactjs | redux | 2016年01月31日 | v3.1.6 | 3.1.6 |
Major versions:
owner | name | major | N | date_first | date_last | previous | since_release | since_previous |
---|---|---|---|---|---|---|---|---|
reactjs | redux | 3 | 24 | 2015年09月12日 | 2016年09月04日 | 2015年09月01日 | 358 days | 11 days |
reactjs | redux | 2 | 1 | 2015年09月01日 | 2015年09月01日 | 2015年06月30日 | 0 days | 63 days |
reactjs | redux | 1 | 4 | 2015年06月30日 | 2015年08月15日 | 2015年06月02日 | 46 days | 28 days |
reactjs | redux | 0 | 20 | 2015年06月02日 | 2015年06月19日 | NA | 17 days | NA |
Last 10 releases:
owner | name | date | version | version_ext |
---|---|---|---|---|
webpack | webpack | 2017年06月07日 | v3.0.0-rc.1 | 3.0.0 |
webpack | webpack | 2017年06月05日 | v3.0.0-rc.0 | 3.0.0 |
webpack | webpack | 2017年05月25日 | v2.6.1 | 2.6.1 |
webpack | webpack | 2017年05月22日 | v2.6.0 | 2.6.0 |
webpack | webpack | 2017年05月06日 | v2.5.1 | 2.5.1 |
webpack | webpack | 2017年05月04日 | v2.5.0 | 2.5.0 |
webpack | webpack | 2017年04月14日 | v2.4.1 | 2.4.1 |
webpack | webpack | 2017年04月14日 | v2.4.0 | 2.4.0 |
webpack | webpack | 2017年04月13日 | v1.15.0 | 1.15.0 |
webpack | webpack | 2017年04月03日 | v2.3.3 | 2.3.3 |
Major versions:
owner | name | major | N | date_first | date_last | previous | since_release | since_previous |
---|---|---|---|---|---|---|---|---|
webpack | webpack | 3 | 2 | 2017年06月05日 | 2017年06月07日 | 2015年11月01日 | 2 days | 582 days |
webpack | webpack | 2 | 58 | 2015年11月01日 | 2017年05月25日 | 2013年12月19日 | 571 days | 682 days |
webpack | webpack | 1 | 178 | 2013年12月19日 | 2017年04月13日 | NA | 1211 days | NA |
Last 10 releases:
Major versions:
- Overview of the JavaScript ecosystem
- A JAVASCRIPT ECOSYSTEM OVERVIEW
- JavaScript Fatigue
- The current JavaScript churn, and its long-term effect on your business
- npm statistics
- Find out what websites are Built With
- Libscore - stats on JavaScript library usage
- the State of JavaScript Survey
I won't go into details of the details of a software release life cycle, as they can be easily check, e.g on Wikipedia. Here you can find meanings of the most common abbreviations:
- GA - General availability (a release); should be very stable and feature complete
- RC - Release candidate; probably feature complete and should be pretty stable - problems should be relatively rare and minor, but worth reporting to try to get them fixed for release.
- M - Milestone build - probably not feature complete; should be vaguely stable (i.e. it's more than just a nightly snapshot) but may still have problems.
- LTS - Long-term support; a type of special versions or editions of software designed to be supported for a longer than normal period.
- analysis of alpha, beta and rc releases
- summary of all frameworks releases
- github pages webpage to present data
- why release dates are different in graphql database and tags web?
diff between releases and tags. React data suggest that tag dates are better (see react ver. 0.10-0.12).
- download other libriaries
- changing charts to d3 to consider
pandoc -r markdown -w latex -o latex/outfile.tex README.md