When developing in node it makes a lot of sense to use lots of different modules for the one project. At work I have a good dozen or so, it really helps with iteration and testing.
Koa middleware are generally more composable and more robust than Express. In Koa, middleware flows down and up in a stack-like manner with the help of generators. E.g., in Koa you set an X-Response-Time header like so:
Frameworks die. It is a fact. Death in this sense means discontinued support and development. It is not difficult to see how this can render any software that depends on a 'dead' framework unstable or even broken with time.
I have experienced exactly this multiple times. In fact, I am extremely aware of this when I start a new project. Perhaps especially when I am dealing with frameworks like Express, Django or Ruby on Rails.
If I recall correctly, Gary Bernhardt, said it well: "Treat Rails like a disease and isolate yourself." You can replace "Rails" with any popular framework. Yourself in this quote referes to the business logic of your system.
While I realize it may not be the case here, discontinued development doesn't necessarily mean death. Sometimes it means "done". I don't think enough developers get that.
Software can only be done if the environment it runs in remains static. Any software dealing with the web can never be done as the environment it runs in is constantly evolving.
Using that argument you could almost never call something a framework of it uses a lot of libraries under the hood to make what it's doing easier. I see nothing wrong with the usage.
I've been building an app using Express over the past 9 months and this gives me pause. It seems like IBM wants to have its cake and eat it too. Should be interesting to see how it all plays out, but is building an app on Express a liability? I have been contemplating switching to hapi, maybe this is a good time to explore that option.
After reading that entire thread, it seems to be that IBM/Strongloop wants to maintain ownership of the project without contributing the resources. They expect dougwilson to continue running the project but he doesn't want to unless it is under the expressjs organization or something like that.
Apparently IBM threw a few guys into discovery on the project a few weeks ago and they may actively get involved, but it is yet to be seen. Maybe IBM just wants to own it and doesn't care what happens to the project one way or the next. I have no way of knowing what IBM's intentions are, and I think that's the concern of the maintainer, dougwilson.
It's not the cool web framework for Node any more. I don't think it's going to "die" in the sense that existing express applications are going to be impossible to maintain any time soon.
I actually have to agree with this. It seems like some semi-political debate about how one guy left and they don't like the direction the project is headed, but it is clearly not dying.
I've flagged it for mod review, I'm not sure if this should be on the front page, it doesn't seem like it meets the requirements for HN.
Please don't flag stuff like this. You're treating HNers like children. Lots of us use frameworks/libraries like Express for major projects, so it's important we see critical project sustainability information like this. And we can figure it out ourselves.
If you don't think it's front-page worthy, then just don't upvote. Flagging is meant for off-topic or spam, which this is clearly not.
Perhaps, but I can assure you that Express 3 and Express 4 are completely safe. The interface set up by Express is depended on by far too many companies and other frameworks for that to not be the case -- for instance, even though Express 3 is officially unmaintained by Strongloop, the Sails core team has committed to taking over critical patches.
As for the future of Express: I've only had the opportunity to get together with Doug in person once, but we've talked about this a few times in the past. I can guarantee you the last thing he wants is drama, so I'll leave the ball completely in his court there.
I will say this though: keep an eye on Doug's federated projects (jshttp and Pillar). Whether or not the various pieces are released as Express 5 or not, the _code base_ is still improving and becoming increasingly standardized, regardless of the monicker. More on that: https://github.com/balderdashy/sails/pull/3235#issuecomment-...
Did you read the thread? No one who read the thread would think that there are hard-working maintainers who have been working hard on the project. That's clear.
However, there are very clearly some governance issues that those of us using Express or evaluating it should be aware of.
Oops, I obviously meant to write that no one would think that there "aren't" hard-working maintainers. There definitely are hard-working maintainers. But the government issues are serious.
The project is incredibly popular. When it comes to community PRs, it's hard for people to swallow sometimes but often a PR isn't good enough or doesn't fit the vision of the project. It's easy to break things in the process of improving or fixing something, and perhaps Express has hit a bit of a stability point which is great.
Well, that certainly seems to be a ton of drama. I don't want to bad mouth any of the people involved, regardless of their affiliations, so I'll just say that I'm not sure what good will come of this spat.
Popcorn aspect aside to the drama in this thread, this is a great example of how companies should NOT behave in relationship to open source projects. They simultaneously made the maintainer feel unvalued and like his role in the project was being held hostage, while sending BS sounding mixed messages to the community.
The thread actually represents a discussion between the most active maintainer (dougwilson) and various employees of IBM who now own and oversee the project, with a few confused third parties chiming in.
It looks like IBM is making some predictable mistakes, which have disillusioned dougwilson to some large extent. Simultaneously they are being fairly inflexible at fixing those mistakes and ultimately forcing abandonment, at least by dougwilson. My prediction:
1) IBM continues with the typical corporate policies which are probably not great for the sort of OSS project that involves independent contributors
2) dougwilson leaves permanently
3) the project sort of wallows a bit
4) IBM puts some resources on it, and claims it all worked out.
As to #4, they'll be sort of correct, assuming the goal was to see resources and progress on express. They'll be wrong if the goal was to properly maintain an open source community around the project.
NOTE: I don't know anything about this, but I've seen this play out many times before. I chimed in here because the other comments in this thread seem to be wildly off topic given the content of the github discussion.
This happened with node-inspector for a while: StrongLoop became the official sponsor, and basic stuff like 'var x = 1; console.log(x)' returning undefined was left unfixed for years while the company simultaneously used it as advertising for how great their node contributions were.
I've been frustrated with their code on a few occasions. We've seen breaking changes in patch versions on strong-remoting, PRs rebased out of patch releases with no explanation (and nobody could figure out why/how), and intentional abuse of npm's optionalDependencies to track users (https://github.com/strongloop/loopback/issues/1079).
This tracking is not only unethical but exceptionally dangerous, as the dependency is fetched over http, and as we know, npm modules essentially have full user access as they can spawn any command via the `postinstall` hook. So a mitm could pose as blip.strongloop.com and own any servers calling out to it.
I've ended up forking every strongloop package we use to trim this tracking abuse. I really shouldn't have to do that.
Here's some history, from what I've read. The original discussion of the transfer of the Express repo's ownership to Strongloop occurred here in June 2014:
Back then, many in the community were surprised by the sponsorship (sale?) of the project and called for the repo to be transferred to the Expressjs org instead. So the question of ownership has been a long-running issue.
Now the ownership/involvement seems to have passed from Strongloop to their acquirer IBM. We're just seeing Doug/the community reprise the same issue with the new owners.
Doug (and presumably other third-party contributors) naturally won't want to be the main contributors to a project owned by a company, so the IBM guys will probably have to take over development & maintenance no matter what. (Barring them giving the project back to the organisation.) Chance of a fork too.
I guess a shared governance model is needed here, to get all parties aligned again.
This is one of the pitfalls of contributing to an open source project, sooner or later (assuming the project gains traction) some company will acquire the project for what for them is peanuts and in the process they'll do what they can to keep the current project the one people will flock to.
That's why we have MariaDB and a whole raft of other projects that are technically closely related to the original and maintained by a number of people that were originally associated with the project but that moved on after an acquisition by forking the project.
Companies as a rule do not like the kind of autonomy that is associated with FOSS.
Maybe this is a solution in this case too, Doug could in theory fork it under a different name and just keep it running (unless his contract prevents him from doing that).
The public airing of their dirty laundry - especially the snark from so many of the participants - would kill it in my mind. There's no good reason to have this "open and transparent" conversation devolve into "let me bitch about IBM here, but don't bitch back at me, keep to IBM-only channels". It's all very childish. The whole thing should've been on the IBM back channels until they got their shit together and could agree on some messaging, and if the maintainer didn't agree with the messaging or how long it was taking to come up with it, simply fork it into the expressjs org and leave. Shouting out "I'm leaving! I'm going! I really mean it this time!" just seems like ... a child running away from "mean ol' parents" rather than an open source leader whose project work speaks volumes. It's tragic to watch this train wreck that could've been avoided by both sides refusing to posture. Like my father used to say, "shit or get off the pot, don't keep debating out loud if you're really going to do it."
Compare it to Linus' openly-hostile dictatorship, which is universally both reviled and excused by contributors, just for a moment: At least when it comes to Linux kernel, shit gets done; nobody has to question the commitment of the project's stewards; and Linus hasn't (that I recall) threatened to take his toys elsewhere.
If Linux had been, somehow, acquired by a large company (or, at least, access/edit rights to all of the code repositories and web presence and such), and Linus had been removed from administrative roles on those repositories and sites (or asked to remove himself and others), then the comparison would be fair.
Admittedly, one answer would be to loudly fork the project. That's happened on a number of occasions. Joomla forked from whatever it was called before a similar story (Mambo, maybe?). Node.js itself forked into io.js over similar disagreements (and then people worked those disagreements out).
I suspect some of the back and forth happening is people trying to figure out if a fork is necessary and if they actually want to be the people leading the fork (sounds like Doug Wilson does not want to be a leader, but wants to keep contributing). Contributing heavily to a project is not the same as being a leader of a project, and it is entirely fair to not want to lead a project, even if you care strongly about it, and have worked hard on it for a long time.
I think it is a fair comparison, because I think Linus WOULD loudly (and with much profanity) fork it and go back to getting shit done rather than hit slow-mo on a multi-car highway pile-up. EDIT: After further thought, I do see your point. My comparison was purely hypothetical and has some logical flaws. I'm literally guessing at how he'd handle losing control of the reins.
My takeaway was that Doug (who, I should clarify/add, I have a lot of respect for as a hard working OSS guy, but lost a few brownie points from me for this soap opera) actually did want to lead the community effort: "I ask them if I can take over the project in order to be the leadership and ensure this gets moved on," we're his exact words. I guess that is an exemplar of why committed project stakeholders need to get their messaging straight before pointing fingers: You and I had different interpretations of the actors' motivations.Nobody wins when fingers are pointing everywhere. At least someone wins when a stakeholder says, "screw you guys, I'm going to do what I know is right rather than vent about what I know is wrong." EDIT: And to his credit, Doug did try to mitigate the problems he saw with the project. I don't know why he didn't take that one last step of trading on his good name and fork the project.
In my opinion, StrongLoop folks are hard working people, more than casually invested in the nodejs community. Even the controversial npm tracking could be argued to be a logical act, to help them understand more about how their projects are used than npm can tell them. Politics (and an unfortunate exit) got the best of them.
Doug is a hard working guy. And more than casually invested in the nodejs community. Politics got the best of him, too.
I believe Doug will come to regret his participation in this drama, and will quietly go back to writing great software and leading great projects, having learned an important lesson: don't believe for a moment that BigCo gives a tiny rat's ass about you or your community's sensibilities, just be the best dev/leader you can be and don't hand the keys to anyone who isn't a trusted driver. And if they take those metaphorical keys anyway, well then, that's what forks are for.
It's an issue in an issue tracker. Nobody's blogging about it, or doing interviews in the media. I would consider this a reasonable level of drama for an issue tracker conversation. Again, I think Doug is probably pushing this in public (though not dramatically so, again it's an issue tracker which normally would have a couple dozen readers) as a final last ditch effort to get IBM to act right. Nothing wrong with taking things public if private conversations are going nowhere fast, as tends to happen with big corporate takeovers. I don't think he needs to worry about his messaging all that much; he's not a marketer, and doesn't seem to be trying to sell anything or get elected to anything. He's just explaining what's going on, and expressing his frustration with it.
Anyway, that's how I read it all. I agree that we are interpreting things differently, and I'm probably missing a lot of detail here. I scanned the thread and missed some details you've called out. But, I tend to take an optimistic approach to stuff like this. If someone has proven they're mostly a "head down get shit done" kinda person, I'm not gonna sweat it when they pop their head up and rant for a little while when things go pear-shaped. I'd probably rant, too, if something I was working on was being killed by a corporate overlord. Then I might decide to fork the thing.
That's a fair implication, that I didn't give Doug all the credit he's due as a "head down get shit done" kinda guy, so let me correct that: Doug is an amazing talent, and it's a raw deal that he got sucked into the politics of this; I hope he's able to move on (FWIW I think his name carries enough weight that a fork would get attention) and we can all forget the soap opera that happened on that thread.
Forking a project as significant as Express isn't easy; you need help from many people to get it going. You make it sound as simple as clicking a button. (Linus may pull it off easily because he's Linus, but that proves nothing.)
This "soap opera" isn't of Doug's making. What he's saying seems very fair to me: he's willing to work on it if it's a community effort, and not under a corporate banner. Throughout the thread, he gives excellent reasons which justify his stand.
> The whole thing should've been on the IBM back channels until they got their shit together and could agree on some messaging
Earlier, you said this should have been solved in IBM's internal channels. Why? Doug doesn't work for IBM, and doesn't owe them anything. He's well within his rights to protest or complain openly, irrespective of how it affects IBM.
> don't hand the keys to anyone who isn't a trusted driver
I mentioned the dialog in IBM's back channels because Doug himself was pushing a participant there once he got some traction in that more appropriate venue: "Now, please stop contacting me as a side channel without the context of the conversations I have been having with IBM. Please get involved in the existing IBM channels I have, so you have context here."
You are correct: Doug does give excellent reasons for supporting the project under the expressjs org, the same reasons brought up back when the github ownership of the project changed (as in the issue you linked). The public debate only served to confuse and frustrate watchers, and that is the "soap opera" I refer to.
It's unfortunate that sometimes such public drama is necessary to effect change, but as evidenced by the issue raised when the repo was taken over originally, public drama wasn't going to effect any change here. It now serves only to foment ill-will and promote confusion, regardless of who is "right".
You are also right that we should be thankful for OSS contributors' efforts. I am thankful for his. For StrongLoop's too, in fact. I am, however, not thankful for the wasted energy in maintaining the debate on a github issue, when the debate didn't do any good the first time 'round. I am not thankful that politics have derailed the work.
EDIT: I think you misunderstood my "be the best..." comment. I was merely suggesting that Doug would find himself less stressed if he was able to focus on doing what he loves and not playing politics.
We have source code licenses that govern what we can do with the source code of an open source project. I wonder if it's time to start creating more explicit licenses for repositories or projects that govern behavior and the day to day activities of a project - ownership / releases / etc.
Linux would be under the 'Linus Project Governor' model or the LPG... ;)
The state of documentation of Express 4 is not great. You have to look at the source code to see how it really works most times, or read someone's blog about how it used to work in Express 3 - but no longer does.
Whose decision was it to go from a "batteries included" web server module to one where users had to assemble a bunch of ad-hoc third party components to make a usable web server? I'm looking at you, body-parser.
It seems to me that decision grew organically from a feeling of helplessness over the future of the framework. Take some of the eggs out of the basket, limit the loss.
I'm curious, has this kind of takeover of an open-source project by a corporation happened before? It is disconcerting to watch people who never had any involvement start pouring in acting as project owners, considering the fact that there is no real legal ownership.
Maybe there just isn't that much left to do? I've used Express a lot over the years, and I can't think of anything right now that it's missing. I'll be happy if it's going to be stable from now on, with no breaking changes.
More fundamentally, I feel the "web framework" doesn't need to be an exciting piece of the stack anymore, like was the case maybe ten years ago. Routing URLs and gluing together middleware doesn't need to be "interesting" or "cutting-edge".
It's great that Express makes it easy, and I'm happy to keep using it regardless of whether there's a version 5 and 6 and 7 in the works.
The discussion brings up that there is some core functionality that should be added to just have Express keep pace, mainly implementing ES6 changes and supporting HTTP/2 (which some say should just be a new framework).
Those are not easy maintenance things to do, and certainly are important.
If it were up to me, I'd leave both of those to a different framework.
There's nothing in ES6 that warrants breaking Express's compatibility with older runtimes. And HTTP 2.0 probably is better off in a new framework that's designed from scratch for it. (I'm not a great fan of HTTP 2.0 and would rather see Express unburdened by its complexity.)
That's a great point, there is a bit of friction between the idea that if an open source project isn't being actively improved it's dead and Express's mission to be a minimalist framework.
I'm not sure if everyone is switching over to Koa. It doesn't seem like it's on too many people's radar. That said, the most hardcore developers I know (including myself) do love and use it. At least, it looks that way here on the East Coast where everyone is still focusing on hiring for Express apps.
All that said, Koa is pretty great and teams should adopt it.
I use express because it is the most barebones solution before vanilla http/https. The middleware API is trivial and relatively agnostic (most just expect node-style req/res objects and a `next(err?)` callback). The router does what it is supposed to and allows nesting.
However I would likely chose something different if my needs were different. If I wanted to implement REST APIs in Node I would use Hapi. If I wanted to build more complex web apps I might look into Koa (although I don't think I'll ever move back to classic server-only rendered apps).
Express is my JS equivalent of Ruby's Sinatra and Python's Flask. Nothing more, nothing less.
Addendum: I wouldn't say "everyone" has switched to Koa. Koa was handicapped by its conceptual overhead for most ordinary express users in its early days (relying on a combination of generators and promises -- both not yet sufficiently widely established and understood technologies at the time -- to build coroutines, which even fewer people understood). It has improved and the JS community seems to have caught up (just look what's going on with the Redux ecosystem -- "thunks" and "sagas" (essentially built around coroutines) are beginning to see some traction). But it didn't initially deliver the same "read this tutorial, start building apps" experience express had.
If done correctly I think this could have been great. Two full time employees working on the project is far more than it has seen in its lifetime. I don't there has ever been even a single full-time person working on it. Lots of amazing contributions of course though. Hopefully things work out, still feels a bit more dramatic than it should be.
I use expressjs with es6 and have zero issues with it. The only thing that is required from my point of view is a small shim for catching promise errors.
Express needs a collection of first party middlewares for logging, strong params, cookie-jar and etc with extensible ORM ActiveModel for more than regular SQL, e.g RethinkDB and MonogDB.
76 comments
[ 3.2 ms ] story [ 149 ms ] threadhttps://github.com/strongloop/express/issues/2827
The link is from the fifth comment.
When developing in node it makes a lot of sense to use lots of different modules for the one project. At work I have a good dozen or so, it really helps with iteration and testing.
without commit access...
https://github.com/koajs/response-time/blob/master/index.js
The response time middleware records the start time, then yields to any other middleware, and finally sets the header.
You just can't do that as nicely in Express. Here is the Express version:
https://github.com/expressjs/response-time/blob/master/index...
responseTime has to wait to be called via "on-headers". on-headers is a separate module that monkey-patches response.writeHead.
The Koa version is 21 lines of code (really just 4 LOC), while the express version is over 200 LOC.
I have experienced exactly this multiple times. In fact, I am extremely aware of this when I start a new project. Perhaps especially when I am dealing with frameworks like Express, Django or Ruby on Rails.
If I recall correctly, Gary Bernhardt, said it well: "Treat Rails like a disease and isolate yourself." You can replace "Rails" with any popular framework. Yourself in this quote referes to the business logic of your system.
Apparently IBM threw a few guys into discovery on the project a few weeks ago and they may actively get involved, but it is yet to be seen. Maybe IBM just wants to own it and doesn't care what happens to the project one way or the next. I have no way of knowing what IBM's intentions are, and I think that's the concern of the maintainer, dougwilson.
"I continue to work in community-owned organizations on GitHub, and if Express were to ever join a community org like "expressjs", I may be back."
Yikes.
Express.js is actually a combination of various modules. If you want to see the work being done, go to those individual modules.
I've flagged it for mod review, I'm not sure if this should be on the front page, it doesn't seem like it meets the requirements for HN.
If you don't think it's front-page worthy, then just don't upvote. Flagging is meant for off-topic or spam, which this is clearly not.
That info by itself seems HN worthy as many of us have likely used Express as the "safe" choice when starting a new project. Time to rethink that...
As for the future of Express: I've only had the opportunity to get together with Doug in person once, but we've talked about this a few times in the past. I can guarantee you the last thing he wants is drama, so I'll leave the ball completely in his court there.
I will say this though: keep an eye on Doug's federated projects (jshttp and Pillar). Whether or not the various pieces are released as Express 5 or not, the _code base_ is still improving and becoming increasingly standardized, regardless of the monicker. More on that: https://github.com/balderdashy/sails/pull/3235#issuecomment-...
However, there are very clearly some governance issues that those of us using Express or evaluating it should be aware of.
The project is incredibly popular. When it comes to community PRs, it's hard for people to swallow sometimes but often a PR isn't good enough or doesn't fit the vision of the project. It's easy to break things in the process of improving or fixing something, and perhaps Express has hit a bit of a stability point which is great.
It looks like IBM is making some predictable mistakes, which have disillusioned dougwilson to some large extent. Simultaneously they are being fairly inflexible at fixing those mistakes and ultimately forcing abandonment, at least by dougwilson. My prediction:
1) IBM continues with the typical corporate policies which are probably not great for the sort of OSS project that involves independent contributors
2) dougwilson leaves permanently
3) the project sort of wallows a bit
4) IBM puts some resources on it, and claims it all worked out.
As to #4, they'll be sort of correct, assuming the goal was to see resources and progress on express. They'll be wrong if the goal was to properly maintain an open source community around the project.
NOTE: I don't know anything about this, but I've seen this play out many times before. I chimed in here because the other comments in this thread seem to be wildly off topic given the content of the github discussion.
This tracking is not only unethical but exceptionally dangerous, as the dependency is fetched over http, and as we know, npm modules essentially have full user access as they can spawn any command via the `postinstall` hook. So a mitm could pose as blip.strongloop.com and own any servers calling out to it.
I've ended up forking every strongloop package we use to trim this tracking abuse. I really shouldn't have to do that.
https://github.com/strongloop/express/issues/2264
Back then, many in the community were surprised by the sponsorship (sale?) of the project and called for the repo to be transferred to the Expressjs org instead. So the question of ownership has been a long-running issue.
Now the ownership/involvement seems to have passed from Strongloop to their acquirer IBM. We're just seeing Doug/the community reprise the same issue with the new owners.
Doug (and presumably other third-party contributors) naturally won't want to be the main contributors to a project owned by a company, so the IBM guys will probably have to take over development & maintenance no matter what. (Barring them giving the project back to the organisation.) Chance of a fork too.
I guess a shared governance model is needed here, to get all parties aligned again.
That's why we have MariaDB and a whole raft of other projects that are technically closely related to the original and maintained by a number of people that were originally associated with the project but that moved on after an acquisition by forking the project.
Companies as a rule do not like the kind of autonomy that is associated with FOSS.
Maybe this is a solution in this case too, Doug could in theory fork it under a different name and just keep it running (unless his contract prevents him from doing that).
I do think there is increased competition though as well from other frameworks.
Compare it to Linus' openly-hostile dictatorship, which is universally both reviled and excused by contributors, just for a moment: At least when it comes to Linux kernel, shit gets done; nobody has to question the commitment of the project's stewards; and Linus hasn't (that I recall) threatened to take his toys elsewhere.
If Linux had been, somehow, acquired by a large company (or, at least, access/edit rights to all of the code repositories and web presence and such), and Linus had been removed from administrative roles on those repositories and sites (or asked to remove himself and others), then the comparison would be fair.
Admittedly, one answer would be to loudly fork the project. That's happened on a number of occasions. Joomla forked from whatever it was called before a similar story (Mambo, maybe?). Node.js itself forked into io.js over similar disagreements (and then people worked those disagreements out).
I suspect some of the back and forth happening is people trying to figure out if a fork is necessary and if they actually want to be the people leading the fork (sounds like Doug Wilson does not want to be a leader, but wants to keep contributing). Contributing heavily to a project is not the same as being a leader of a project, and it is entirely fair to not want to lead a project, even if you care strongly about it, and have worked hard on it for a long time.
My takeaway was that Doug (who, I should clarify/add, I have a lot of respect for as a hard working OSS guy, but lost a few brownie points from me for this soap opera) actually did want to lead the community effort: "I ask them if I can take over the project in order to be the leadership and ensure this gets moved on," we're his exact words. I guess that is an exemplar of why committed project stakeholders need to get their messaging straight before pointing fingers: You and I had different interpretations of the actors' motivations.Nobody wins when fingers are pointing everywhere. At least someone wins when a stakeholder says, "screw you guys, I'm going to do what I know is right rather than vent about what I know is wrong." EDIT: And to his credit, Doug did try to mitigate the problems he saw with the project. I don't know why he didn't take that one last step of trading on his good name and fork the project.
In my opinion, StrongLoop folks are hard working people, more than casually invested in the nodejs community. Even the controversial npm tracking could be argued to be a logical act, to help them understand more about how their projects are used than npm can tell them. Politics (and an unfortunate exit) got the best of them.
Doug is a hard working guy. And more than casually invested in the nodejs community. Politics got the best of him, too.
I believe Doug will come to regret his participation in this drama, and will quietly go back to writing great software and leading great projects, having learned an important lesson: don't believe for a moment that BigCo gives a tiny rat's ass about you or your community's sensibilities, just be the best dev/leader you can be and don't hand the keys to anyone who isn't a trusted driver. And if they take those metaphorical keys anyway, well then, that's what forks are for.
Anyway, that's how I read it all. I agree that we are interpreting things differently, and I'm probably missing a lot of detail here. I scanned the thread and missed some details you've called out. But, I tend to take an optimistic approach to stuff like this. If someone has proven they're mostly a "head down get shit done" kinda person, I'm not gonna sweat it when they pop their head up and rant for a little while when things go pear-shaped. I'd probably rant, too, if something I was working on was being killed by a corporate overlord. Then I might decide to fork the thing.
This "soap opera" isn't of Doug's making. What he's saying seems very fair to me: he's willing to work on it if it's a community effort, and not under a corporate banner. Throughout the thread, he gives excellent reasons which justify his stand.
> The whole thing should've been on the IBM back channels until they got their shit together and could agree on some messaging
Earlier, you said this should have been solved in IBM's internal channels. Why? Doug doesn't work for IBM, and doesn't owe them anything. He's well within his rights to protest or complain openly, irrespective of how it affects IBM.
> don't hand the keys to anyone who isn't a trusted driver
Here's a link that explains what happened https://github.com/strongloop/express/issues/2264
> just be the best dev/leader you can be ...
Oh come on! We should be thankful for the effort so many talented people are putting in FOSS, often for no financial gain.
You are correct: Doug does give excellent reasons for supporting the project under the expressjs org, the same reasons brought up back when the github ownership of the project changed (as in the issue you linked). The public debate only served to confuse and frustrate watchers, and that is the "soap opera" I refer to.
It's unfortunate that sometimes such public drama is necessary to effect change, but as evidenced by the issue raised when the repo was taken over originally, public drama wasn't going to effect any change here. It now serves only to foment ill-will and promote confusion, regardless of who is "right".
You are also right that we should be thankful for OSS contributors' efforts. I am thankful for his. For StrongLoop's too, in fact. I am, however, not thankful for the wasted energy in maintaining the debate on a github issue, when the debate didn't do any good the first time 'round. I am not thankful that politics have derailed the work.
EDIT: I think you misunderstood my "be the best..." comment. I was merely suggesting that Doug would find himself less stressed if he was able to focus on doing what he loves and not playing politics.
Linux would be under the 'Linus Project Governor' model or the LPG... ;)
Whose decision was it to go from a "batteries included" web server module to one where users had to assemble a bunch of ad-hoc third party components to make a usable web server? I'm looking at you, body-parser.
Body-parser does have issues, though. :)
More fundamentally, I feel the "web framework" doesn't need to be an exciting piece of the stack anymore, like was the case maybe ten years ago. Routing URLs and gluing together middleware doesn't need to be "interesting" or "cutting-edge".
It's great that Express makes it easy, and I'm happy to keep using it regardless of whether there's a version 5 and 6 and 7 in the works.
Those are not easy maintenance things to do, and certainly are important.
There's nothing in ES6 that warrants breaking Express's compatibility with older runtimes. And HTTP 2.0 probably is better off in a new framework that's designed from scratch for it. (I'm not a great fan of HTTP 2.0 and would rather see Express unburdened by its complexity.)
All that said, Koa is pretty great and teams should adopt it.
However I would likely chose something different if my needs were different. If I wanted to implement REST APIs in Node I would use Hapi. If I wanted to build more complex web apps I might look into Koa (although I don't think I'll ever move back to classic server-only rendered apps).
Express is my JS equivalent of Ruby's Sinatra and Python's Flask. Nothing more, nothing less.
Addendum: I wouldn't say "everyone" has switched to Koa. Koa was handicapped by its conceptual overhead for most ordinary express users in its early days (relying on a combination of generators and promises -- both not yet sufficiently widely established and understood technologies at the time -- to build coroutines, which even fewer people understood). It has improved and the JS community seems to have caught up (just look what's going on with the Redux ecosystem -- "thunks" and "sagas" (essentially built around coroutines) are beginning to see some traction). But it didn't initially deliver the same "read this tutorial, start building apps" experience express had.
4 Million downloads per month for Express [1] (vs 60K/mo for Koa [2]) .. doesn't look like everyone is switching.
[1]: http://npm-stat.com/charts.html?package=express&author=&from...
[2]: http://npm-stat.com/charts.html?package=koa&author=&from=201...
What about es6 isn't compatible with express?