If you’ve used NodeJS at any point during the last 5 years, you’ve most likely used Express as well.
It’s the most starred NodeJS related package on GitHub, and averages over a million downloads every week.
That’s why a recent shock-wave in the project’s progress caught me by surprise.
“Who’s Doug Wilson? And how can he shut down the future version of Express?”
What I was about to find out took me completely by surprise.
If you’re like me, you thought the core Express project was being actively maintained by StrongLoop for the past 2 years. I’ve got some new for you, it wasn’t.
Those of us who’ve been using Express for the last 2 years were actually relying on the hard work of Doug Wilson.
“Who’s Doug Wilson?” You might ask. If you’ve never heard of him before, you’re not alone. I’ve never heard of him either until recently.
But we’ll get to him in a bit.
To get the full picture, we’ll first need to start with the almighty creator of the Express framework, TJ Holowaychuk.
The Maverick: TJ Holowaychuk
My mom taught me to always give credit where credit is due. And TJ Holowaychuk deserves a ton of credit.
Stop me if you’ve heard or used any of these libraries before: Express, Connect, Dox, N, Apex, git-extras, Jade, Stylus, Mocha, Superagent, EJS, Co, Koa, Commander, Should…
This is just a partial list of the high profile open source projects created by TJ. And these represent just a fraction of the amount of projects that TJ created or has been involved in.
If you try to add up all of his open source contributions, you’ll reach more than a million lines of code. Yet he still finds the time to be an active an active blogger on Medium as well.
In fact, TJ’s open source contribution is so astounding, some doubt he’s even real. However, a quick Google search nowadays easily proves TJ Holowaychuk exists.
But whether or not all of the open source contributions made under his name are the work of just one man is a story for another day.
Regardless of what you may believe, it’s undeniable that TJ made one very human error of judgment that’ll tarnish his good name forever.
He sold off his most popular open source project, Express, to a NodeJS based startup named StrongLoop.
StrongLoop develops a monolith open source web framework on top Express called LoopBack. They also sell NodeJS consulting and training services as well as several NodeJS server monitoring products.
But honestly, before we get into anything else there’s only one thing you should be asking yourself right now.
How the hell can you sell an open source project?!?!?!?!
On paper there’s virtually no meaningful to sell Express, an MIT licensed open source project. But in reality there’s a surprisingly effective way of doing so.
MIT Open Source License: A Short Explanation (It’s OK to Skip)
The open source MIT license consists of exactly 3 medium sized paragraphs. One of which is written in all caps to appear extra scary.
The whole thing can be summarized in two short sentences:
- You can use this code for free, for any kind of usage imaginable.
- If your house burns down or your wife/husband leaves because you used this code, you agree not to sue the author.
I’m not a lawyer (thank God) and this is my non-legally binding interpretation of the MIT license. You can use it freely but you have to agree not to sue me if your house burns down or your wife/husband leaves you because of it.
What this license implies however, is that anyone can just clone Express and use it freely. So what’s there to sell?
Possession is Nine-Tenths of the Law
What TJ actually sold to StrongLoop was the ownership of the Express GitHub repository, as well as npm ownership for publishing future releases. He also included the expressjs.com domain and website.
You see not everyone can directly push changes to any open source project. Every open source project has at least one maintainer who’s privileged with direct access modification rights. They can modify the project’s source code directly and push their changes back to the open source repository.
Everyone else needs to submit a pull request. Which is a suggested change to the source code. The maintainer then decides if they accept or reject suggested changes.
I’m sure you realize by now that when TJ sold his ownership of the Express GitHub repository, he gave enormous power to StrongLoop over the project’s future.
You might be thinking to yourself “Why can’t anyone just clone Express project, change the name to something like Express-Sababa.js and continue to work on it?”
The simple fact is that developers and companies simply won’t trust Express-Sababa.js with their production applications. But they do trust the wildly popular Express project, even if it switches hands.
Next Time You Do Something Evil
TJ already stated he regrets his decision to sell Express in hindsight. Selling an open source project is a Dickish thing to do.
But enough people had already badmouthed this otherwise awesome, incredibly gifted dude. So I’m just going to stop here.
The only thing I’m actually angry about is that TJ didn’t even sell Express for all that much.
“You make it sound like I got rich or something haha, it was like half a months worth of pay…” – TJ Holowaychuk on the Express sale
For some reason this really grinds my wheels. If you’re going to do something borderline evil, at least get a big fat pile of cash for it.
If anyone reading this is ever intent on selling their open source project to the highest bidder, here is my advice:
Welcome to the Dark Side: StrongLoop Takes Over the Express Project
StrongLoop purchased the GitHub repository ownership of Express. It was savvy business move. And one that’ll definitely put them front and center.
And even if it wasn’t the most ethical thing in the world, does that mean StrongLoop will necessarily harm the project’s progress?
It’s still possible StrongLoop has the best of intentions for Express. And would allocate significant resources and support to the community. And dedicate at least one full time developer to help out with the project.
Something that was born out of an unethical act will continue down an unethical path.
On July 29th, 2014, StrongLoop released the now infamous press statement: “TJ Holowaychuk Passes Sponsorship of Express to StrongLoop.”
By August of that year, the Express GitHub repository moved under the “StrongLoop” GitHub organization. And By October, the Express website featured a prominent self serving link to LoopBack, StrongLoop’s own open source framework built on top of Express.
Since that fateful day in 2014 and up until March 2016, the month of this writing, do you know how many commits StrongLoop contributed to the master branch of the Express project?
Zero.
Or a number close to Zero. Definitely less than 5, which the image below demonstrates.
None of the top 6 contributors to the project is or was at any point a StrongLoop employee. You might have noticed that one contributor’s name pops out in particular, we’ll get to him in a second.
In StrongLoop’s defense, they did provide plenty of documentation and the Express website is super helpful. They did a lot to make the Express project more approachable to new developers. They provided helpful articles and a marketing push.
But is that enough to justify the massive earthquake they’ve caused? And not even 5 commits to the core project in the last 2 years?
StrongLoop had their name become synonymous with Express in the past 2 years. Yet they had exactly zero impact on the core project’s code base throughout that period. That’s mind blowing.
In fact, they may have had a negative impact on the project. By lowering the morale of the community and letting bureaucracy get in the way of the actual core committers.
“As for why I have not been participating in express since the change, I can simply say that StrongLoop has left me feeling taken advantage of.
As far as I can tell, there was some kind of implicit expectation that I would just carry on my merry way with express no matter where it went, for free, of course.
I didn’t even get a “Hey, Doug, so we bought express from TJ and love what you are doing with the project and would like you to continue to lead and maintain it. How can we make this work?”
Doug Wilson, July 31st, 2014. On the StrongLoop Express purchase.
If StrongLoop contributed exactly nothing to the core project all this time, someone else must have been actively maintaining a project which so many production applications rely on.
So who’s actually been taking care of Express for the past 2 years?
The Unsung Hero of Express: Doug Wilson
Doug Wilson is the guy who almost single-handedly maintained the Express project in the last 3 years. As early as one year before the project was “sold” to StrongLoop.
A quick calculation shows that out of the top 6 contributors in the last 3 years, Doug has been responsible for over 80% of all commits to the master git branch.
Not a StrongLoop employee, Just a Software Engineer who cares.
At this point it’s safe to say that if anyone deserves to have their logo plastered all over the Express project, it’s Doug Wilson. Although I’m not sure he has a logo. Because how many developers actually have a logo of themselves? (I’m looking at you David Walsh 😉 )
The Current State of Affairs
As you might have heard, IBM acquired StrongLoop recently. I’m sure StrongLoop’s “generous sponsorship” of the Express project played no small part in their decision.
IBM recently handed off Express to the Node Foundation. Which is good news.
It’s also rumored that IBM allocated 2 full time engineers to work on the project and they’re ramping up now. I guess IBM doesn’t want to “Pull a StrongLoop.” Note: If “Pull a StrongLoop” becomes a thing, I will die a happy man.
But it seems like everyone is still hell-bent on not letting Doug Wilson perform his much needed valuable contribution quietly.
“I am closing down Express 5.0. I’m quitting the Express TC now. I cannot trust anyone any more.” – Doug Wilson, Feb 27th, 2016. Regarding the next version of Express.
I don’t think anyone blames Doug at this point after all that he’s been through with this project. But who knows how the future of Express will look like without him.
Update: Doug decided to give the Node Foundation Technical Committee another shot. Express 5.0 is under development and the committee is fully transparent.
Final Thoughts
Doug and friends are currently working on a brand new alternative to Express. I’m sure we’ll be hearing more on that soon.
And from what I understand, Express will require a full rewrite to support HTTP/2 anyhow. Hopefully that’ll go well but who knows at this point.
Honestly, if you only remember one thing from this stormy episode in JavaScript history I hope it’s this:
Somewhere in the internet there’s a guy named Doug Wilson (@blipsofadoug). And for the past 3 years, he’s the one who’s been taking care of Express for the rest of us.
During the last 3 years, Doug probably solved a bug that would have affected your production application. During this time he most likely improved your server’s runtime performance without you even realizing it.
So I would like to say thank you to Doug Wilson. For all of your hard work.
From all of us.