Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

mziembinski/JavaScript-Ecosystem

Repository files navigation

JS ecosystem

as for 05.06.2017

still work in progress

main todos at the end

Introduction

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

Motivation

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).

bytes growth

Bytes and Growth rates - web content
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

JS frameworks

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
facebook 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.

NodeJS

NodeJS logo

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
nodejs_releases
<script data-plotly="m.ziembinski:1" sharekey-plotly="BeYDrjyJ48pqdFRPOOJwlP" src="https://plot.ly/embed.js" async></script>

Interactive chart

nodejs_since
<script data-plotly="m.ziembinski:3" sharekey-plotly="NdcRn3bJqX3rP1q5Cqi6vo" src="https://plot.ly/embed.js" async></script>

Interactive chart

Other links:

React

NodeJS logo

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
facebook react 2017年05月01日 v15.5.1 15.5.1
facebook react 2017年05月01日 v15.5.2 15.5.2
facebook react 2017年05月01日 v15.5.3 15.5.3
facebook react 2017年05月01日 v15.5.4 15.5.4
facebook react 2017年04月07日 v15.5.0 15.5.0
facebook react 2017年01月06日 v15.4.2 15.4.2
facebook react 2016年11月23日 v15.4.1 15.4.1
facebook react 2016年11月16日 v15.4.0 15.4.0
facebook react 2016年09月19日 v15.3.2 15.3.2
facebook 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
facebook react 15 20 2016年03月08日 2017年05月01日 2015年07月03日 419 days 249 days
facebook react 14 13 2015年07月03日 2016年03月29日 2015年02月22日 270 days 131 days
facebook react 13 6 2015年02月22日 2015年05月08日 2014年10月16日 75 days 129 days
facebook react 12 4 2014年10月16日 2014年12月18日 2014年07月13日 63 days 95 days
facebook react 11 4 2014年07月13日 2014年09月16日 2014年03月19日 65 days 116 days
facebook react 10 2 2014年03月19日 2014年03月21日 2014年02月17日 2 days 30 days
facebook react 9 2 2014年02月17日 2014年02月20日 2013年12月19日 3 days 60 days
facebook react 8 1 2013年12月19日 2013年12月19日 2013年10月16日 0 days 64 days
facebook react 5 3 2013年10月16日 2013年12月18日 2013年07月17日 63 days 91 days
facebook react 4 3 2013年07月17日 2013年12月18日 2013年05月29日 154 days 49 days
facebook react 3 2 2013年05月29日 2013年06月20日 NA 22 days NA

Interactive chart

Interactive chart

NPM stats.

React npm stats

Angular

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

Interactive chart

Polymer

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

Interactive chart

Redux

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

Interactive chart

Interactive chart

WebPack

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

Interactive chart

Interactive chart

Framework

Last 10 releases:

Major versions:

Interactive chart

Interactive chart

Appendix

Something about JS

Other useful links if you want to know how Internet is working

Versioning

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.

software release life cycle

Awesome GraphQL

To Do

  • 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

Notes

pandoc -r markdown -w latex -o latex/outfile.tex README.md

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /