Skip to content

Instantly share code, notes, and snippets.

@dougwilson
Created July 30, 2014 23:06
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dougwilson/f68806eea979867c696b to your computer and use it in GitHub Desktop.
Save dougwilson/f68806eea979867c696b to your computer and use it in GitHub Desktop.

I have seen some chatter on Twitter, GitHub and other places talking about the recent change of the Node.js project express moving from visionmedia to strongloop in GitHub and I wanted to share my point of view.

Couple points up-front:

  1. I have nothing against StrongLoop, Inc. (the Delaware corporation) and I'm sure they are very talented and motivated.
  2. I have nothing against TJ and actually think it's really awesome that he got something for a lot of the work he has put into express and related projects over the years.
  3. I have not, nor wish to, receive any money around express.

So, from my side there are a few things. Yes, TJ emailed me regarding StrongLoop sponsoring expressjs.com and writing documentation and tutorials and I welcomed such a sponsorship. There was probably some mis-communication in this regard, as I had interpreted it as we would plaster their Logo on the site and/or repo README in a "Sponsors" or such section in return for some awesome documentation, tutorials, etc.

I was not aware the repositories on GitHub would be moving anywhere, though. If I did, I would of at least done some prep to change links, fix badges, Travis CI setup, Coveralls.io setup, etc. but since StrongLoop did not ask the "Lead Maintainer" anything prior to the move, some basic repository-moving maintenance was of course not even done.

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?"

I take a lot of time out of my life to not just add commits to express and friends (that's not much time), but to answer completely every single issue and PR that is opened on GitHub and try to work with the folks to resolve their issue. I even idle on #express and answer questions. It's a huge time-sink that I do, and it does not seem like StrongLoop as a new owner wants to put any resources of their own into doing this and would rather the community to just continue to do this on it's own for nothing.

I have not seen anyone from StrongLoop trying to support anything through the issue tracker before the change, still have not seen anyone from StrongLoop helping out in the IRC channel nor the Google Groups mailing list. I would hope that a for-profit company would support something it "owns", as it is gaining value from the project. I'm sure they help people who have questions about their paid products.

@ijroth
Copy link

ijroth commented Jul 30, 2014

Hi Doug,

Thanks for posting your perspective. As you know we did have an email exchange where I thought we did ask, "Hey so this is in our org and we love what you're doing and would like you to continue, how can we make this work?" And you said that you had no interest in doing that when the project was in our org.

We didn't buy Express. You can't buy an open source project.

First we offered to help maintain the project, and thus the call we had together three weeks ago. TJ wanted to transfer the project to us. We bought the domain name since that's customary. I agree the nature of the transition was spotty with lost privs and miscommunications. It was hard to coordinate with a bunch of busy people who have day jobs. We did a bad job on the transition. We're trying to figure out how to go forward together, how we can help, how contributors can be comfortable, and how a similar jolt to the contributor ecosystem can be avoided in the future.

Sadly there are people around with their own motivations, either working on competing projects or interested in their own notoriety or whatever that have been adding noise to the discussion.

Maybe there is a bunch of between-the-lines things that people are worried about but aren't saying.

It is not our intention to commercialize Express and charge people for it. We didn't write it, that would be totally unfair, and nobody would pay us for something they can get for free under the MIT license anyway. We don't sell Node nor LoopBack nor slc either, all of which are open source and to which we make many contributions. If someone were to purchase StrongLoop, this doesn't change.

We want to have your and other contributor's continued involvement, we'd like to understand the issues more deeply about how the repo name change affects everyone, and we don't want to take advantage. We want to help. If you or others don't want to believe us, that's fine. I think you're entirely right to say, "let's see what you guys can do." Then let's judge. And let's talk on how to work together.

@dougwilson
Copy link
Author

Thanks for posting your perspective. As you know we did have an email exchange where I thought we did ask, "Hey so this is in our org and we love what you're doing and would like you to continue, how can we make this work?" And you said that you had no interest in doing that when the project was in our org.

That exchange was after the move, as in, a response to concerns, not a reaching out before-hand. My thought there was that it should have been a reach-out, not a reaction.

@secretfader
Copy link

Wow. It's been a whirlwind few days, for most of which, I was blissfully unaware of the ensuing drama. And since this is the only place to hold a public discourse on the topic (Strongloop has locked the thread on strongloop/express as "contributors only"), it's where I'll share my perspective. [Edit: @jonathanong locked the thread. See correction below.]

@dougwilson: I don't know if your post above represents the current state of affairs, but first of all, let me say this. Thank you for remaining dedicated to the project in TJ's absence. As a user, I appreciate knowing there's someone who cares about open PRs and issues: especially someone who arose from the community. Their work is fueled by passion, not commercial interests — and while I would like to see you compensated for your time, I understand and respect that isn't what you want.

Ahead of any major changes, Strongloop should've contacted the obvious maintainers. That much is clear, and every conversation I've seen pits one side against another, as if it's a black and white comparison. As most things in life, it is not. @ijroth and crew have good intentions, even if they might not neatly align with those of the Express community. Having tried SLC and Loopback, I can say clearly that Strongloop does seem to be aiming for a different experience than Express. Their technical tooling seems strongly geared towards enterprises, and for me, that goes against the minimalistic principal that's prevalent in Node culture. But hey, what do I know?

However, while I recognize that Strongloop isn't out to do evil, this situation has been handled very poorly. Not by the community, mind you, because they had a stable project move unexpectedly. If there's anything the software world likes, it's stability. Yanking a project to a new location, across GitHub, without even so much as an announcement, isn't exactly a model I would encourage others to follow. But here are the big issues at hand:

There are tools that Strongloop contributes to (and some may have been invented by their team) that exist under a personal GitHub account, or a different org. Why must Express live under /strongloop, when it is clearly not a Strongloop product. Every Strongloop spokesperson says they "didn't buy Express." Well, they didn't invent it — so if you did neither, it doesn't belong in your org. Leave the repo alone, and do what everyone else does. Pull requests are awesome, and are a great way to gain community recognition. If you want to sponsor Express, have engineers spend company time triaging bugs. That's a first step, at least.

Express is the de-facto web framework for Node. It's a community ambassador, that should have a home outside of Strongloop. I can't tell you how many GitHub issues or StackOverflow threads that I've seen where the author clearly doesn't know JavaScript, or sometimes, even know they're using the Express package. Everyone stumbles onto Express eventually, just like most Ruby developers will start with Rails. It's probably even fair to say that some Node engineers learned the platform, with all of it's unicorns (and oddities), because of Express. It brought a slick, clean perspective to building web applications in Node, and that's why it grew.

But Express is no Rails. In fact, I like to think of it as the "anti-Rails", because you choose every piece of the stack. Sure, Mongoose/Express/Jade/Stylus is the "golden path" (says I, one of those pilgrims on it), but there are still a myriad of choices to be made. Do you pick up a third party logging middleware? What about body parsing? Or multipart? These are all choices that need to be made, and Express forces you to choose the right pieces by keeping the core simple. Some might call this terrible design, but I love it.

Several months ago, when the Express org was fairly new, I realized how important it would become. /expressjs is a one-stop-shop for modules maintained by the core team: a guaranteed collection of safe modules. I'm an experienced Node developer, having spoken at conferences and released several modules myself — and yet, I love the comfort of knowing that multer, body-parser, morgan, and all of the modules in that org are well maintained and approved by developers who are probably smarter than I am.

If the core Express repo belongs anywhere, it's the ExpressJS org, not Strongloop's. If you're still wondering, although it should be clear, here's why: Express is, as a framework, effectively a community ambassador. We want to welcome those who are new and curious about Node/Express in the most professional manner possible. Having everything to do with Express, both the core framework and various maintained middlewares in the same org is the best way I can think of. Plus, docs. Docs are valuable, but in this case, having a home (that places the code where newcomers expect it to be) is more so.

So, that's my perspective. I don't dislike TJ or Strongloop: both have goals for Express that will improve the framework, I'm sure. But this move that was executed without the contributors' knowledge? That was out of line.

If you really want to contribute to the framework in a meaningful way, use the same channels that everyone else does, and see how that works. As community members, we're required to prove our value to a project before we're handed keys. You, as an organization, should be required to do the same.

@BrunoWinck
Copy link

I'm running a private software vendor business and moved to NodeJS+Express exactly a year ago exactly as Nicholas explains: for express. I use NodeJS for the web server layer of my software. Before I was using LAMP and even before IIS+ASP. It was way to heavy and when I get introduced to NodeJS in a mooc (https://medium.com/@brunowinck/a-studious-summer-52d83dbd77f6) I recognized its value and urged the change. At first a bit reluctant to upgrade to 4.0 I admit it was really worth. Parts of the app can now be modularized, tested on their own. The eco system around expressjs is very interesting. It promotes alternatives implementations and value to the modular, dynamic nature of NodeJS.
Enthousiasted by NodeJS, I built a genereic extension to hook all our c++ modules (the kernel is in c++, reason why I'm not concerned by lack of performance, threading, concurrency). I could see that what's behind is easy to use and in order, portable (v8, libuv) this was one more plus for me. After I started to follow the communities around (google group, etc). i would say that after a year I start to have a decent knowledge of he beast. If I really need to fix something in the whole stack to save my business I know I can do it and I felt I can trust this choice.
I was a bit surprîsed and sad.to read the message from TJ few weeks ago and was wondering how I could help. it's his choice and a different topic. I don't have a lot of time but I was preparing myself to jump and to apply to be a kind of backup maintainer for something. Give back to the community, encourage other 'for profit' to join in. I have the feeling that I got a lot more from Express in one year that I had from the PHP group for 10 years. I suspect that the takeover of Zend on PHP is partially for something.
Now Strongloop comes into play.I've been reading around for the last 3 days. I feel concerned. What I have to bring in is the point of view of 'for profit' user, non maintainer and 25 years of experience in business in all parts of the world.
When irjoth writes "If someone were to purchase StrongLoop, this doesn't change." I laugh .. a lot. i've seen tons of business being bought, sometimes small (my local ISP), large (SUN (MySQL)) and it has always been the story. When you are bought you are precisely bought it means you have no say on what's next. If the presence of strongloop breaks the eco system and it seems it does, we will rely exclusively on strongloop. if for some reason strongloop decides or is pushed to decide that express is no longer its interest there will suddently be a void of maintainers and death or at least stagancy for a long while. Big danger : red flashing signal for someone who depends on it for his living.
After such a bold move of changing the repo (the URI in effect for someone like me) so quickly, on short notice without asking anyone, it will be hard to trust the same people that they are attentive, empathic and careful about the vast group of silent people like me. I'm really surprised by the business attitude of Strongloop. I've rarely seen such a bold move. Let's say it is lack of experience, of tact. You don't leave tracks when you do "npm express" but still you are a user and you watch, you lurk.
Now what is the risk for strongloop to keep going, standing firm on the current situation. Express will shortly loose its traction, we will join effort and start a new branch, if only to gain or keep the competency. V4 is so much different then V3, what about V5. What is sure for me is that after one year of migrating I'm not going to migrate again to ruby next week.
Last if I'm a business (I am) would I trust strongloop to offer some business level support on NodeJS, Express ? based on the attitude, I would have the feeling that I would prefer to keep some distance. Technical ability, capacity is one thing, Sales, communication, tact, confidence, trust is another.

If I was in their place i would place it in expressjs and everyone will forget it ever happened. Deal. Court the group for a while, say what you have to offer, why, for how long, what you pursue with this move etc.. I wish we could all forget about the episode ASAP and restart the whole thing on a fresh mind.
One good thing may come out from this is to push more people like me to come out from the blue and join the collective effort.

Sorry for my interruption

@raymondfeng
Copy link

@nicholaswyoung A minor clarification - expressjs/express#2264 was locked by @jonathanong with good intention to limit conversation to collaborators.

@secretfader
Copy link

@RaymontFeng Thanks for pointing that out. I apparently missed that in the issues thread.

My other points still stand: the community has yet to see a clear path from Strongloop on this, and by contrast, it's pretty clear what the contributors/community want. Express belongs in the /expressjs org. If you want to sponsor development on the project, then do it. If Express will remain a community driven project, listen to the contributors, and put action behind your words.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment