Tags: Node.JS
Wandering across a question on Quora (Is Express.js dying? What are the alternatives?) had me stop and take a look at the facts. I'd noticed a few months ago that contributions to the main Express repository had dried up, and therefore I was worried the Express project was dying from neglect. So let's talk about this, because it is important to clear up the air.
What we're going to do is look at the rate of Commits to each of the Express.js repositories. That figure shows how much activity is happening in a project, and is therefore one measure of whether an open source project is healthy or not.
Another measure should be whether the commits are all made by one person, or whether the work is spread among a large number of people. This is because of the risk that the one person will get hit by a bus and then the project would be dead in the water. In the case of Express, as we'll see, that one person is Doug Wilson. I think that surely there are some people who could take up working on Express.js if Doug Wilson were to decide he wants to do something else.
Every Github repository has an Insights page showing activity statistics about the repository. Here's where we'll get the commits data.
Commits to express/express
Source: https://github.com/expressjs/express/graphs/contributors
This is the repository for the main Express project. It is these graphs that made me think the Express project is dying.
You see that TJ Hollowaychuk's contributions stopped around 2014, and that Doug Wilson's contributions started at about that time. There are two other things to notice. First is that TJ and Doug Wilson have made the lions share of contributions to this repository, with Doug Wilson making well over 10x the commits of the next person down the list.
The last thing to notice is that Doug Wilson's contributions to this repository have tapered off in recent years. Which is what led me to jump to the conclusion that the Express project is dying.
Commits to express/session
Source: https://github.com/expressjs/session/graphs/contributors
But when we look at the rest of the repositories in the Express organization we see a different story.
Here we go. Doug Wilson is doing the vast majority of the work. While commits to this repository have dropped a bit, work is still going strong.
Commits to express/body-parser
Source: https://github.com/expressjs/body-parser/graphs/contributors
Ditto
Commits to express/cors
Source: https://github.com/expressjs/cors/graphs/contributors
Ditto, except to note that in this case Doug didn't take over from TJ but instead took over from Troy Goode.
Commits to express/morgan
Source: https://github.com/expressjs/morgan/graphs/contributors
Ditto.
Commits to express/compression
Source: https://github.com/expressjs/compression/graphs/contributors
Ditto.
Commits to express/generator
Source: https://github.com/expressjs/generator/graphs/contributors
Ditto.
Commits to express/cookie-parser
Source: https://github.com/expressjs/cookie-parser/graphs/contributors
Ditto.
Commits to express/cookie-session
Source: https://github.com/expressjs/cookie-session/graphs/contributors
Ditto.
Commits to express/serve-static
Source: https://github.com/expressjs/serve-static/graphs/contributors
Ditto.
Commits to express/errorhandler
Source: https://github.com/expressjs/errorhandler/graphs/contributors
Ditto.
Commits to express/csurf
Source: https://github.com/expressjs/csurf/graphs/contributors
Ditto.
Conclusion - Express is fine
I am happy to be able to report that the Express project OVERALL appears to be healthy using this one measure - the rate of commits. Even though work in the main Express repository has slowed down, work in the other repositories continues apace.
I am not so happy to notice that all the responsibility falls on the shoulders of one person. The Express project would probably be healthier if there were additional contributors. I say that from the general principle that healthy projects have multiple contributors. It may be that the Express project is extremely healthy despite the vast majority of contributions being made by one person. Obviously Express in general is in good working condition and lots of folks are using it in applications every day.
The general principle is that in a project where one person does all the work - if that person leaves for whatever reason the project will tend to die. Therefore the general principle is to ensure the project has multiple contributors who can take up the slack if one of the contributors leaves.
We appreciate that Doug Wilson has put so much work into the Express project, and I understand to the MySQL driver. But this general principle is clear, and we wish that Doug Wilson had some collaborators.
I do wonder what's going on with Express v5. The Express.js website has a section discussing how to upgrade to Express v5. But the express/express
repository does not have a branch for Express v5 work. Where is that work happening?