The Next Phase of Node.js
blog.nodejs.org
blog.nodejs.org
It seems not to be active again for his lib: https://github.com/joyent/libuv/graphs/contributors
For people who don't know, bnoordhuis exiled himself 2 months ago after the bashing the node.js community imposed him for not merging a pull about gender. It was a shame because he was in the top 3 contributors. (all details: https://github.com/joyent/libuv/pull/1015)
[I don't know either of you but I think that's a sad story.]
And it had about as much to do with this announcement as Ben's departure from Node last year.
People outside a team rarely have much insight into the day to day relationships. That's just how it works. That's what a "team" is.
Again, no need to be agressive, it's not that idiotic to ping the past when we talk about the futur.
I got to the original comment and rolled my eyes that I halfway knew someone would bring it up today. Rather than dismiss it, though, somehow Isaac found a way to make it worse. I should start invoking the holocaust when discussions aren't going the way I want, apparently.
And yes, the sitation with regards to that commit is unfortunate, but I'm not sure what any of us can do about it beyond wait for someone to get over themselves and start contributing again.
For a period absolutely everything, whether at all even distantly related or not, was somehow tied to "because 9/11" or "what about 9/11". Not because people actually thought it was relevant, but because politicians can't pass up a chance to grandstand by invoking something that people have strong opinions on.
I thought it was a succinct way of conveying the point here. "But what about the node.js gender incident??" isn't as widespread and not as big a problem as the "but what about 9/11???" crowd, but suffers from a sort of isomorphic logic.
Bend over backwards to forgive and explain all you want, I guess.
izs' ignorance to this principle is on par with, say, someone refusing to change a gendered pronoun because of its perceived triviality.
- Keeping women out of tech.
- 9/11.And, ironically, this is on his profile: "I don't look at this site much, because it turns people into jerks."
This is coming from someone who remembers Rudy Giuliani's brain being replaced by a broken record player during his presidential campaign. It took way too long for me to get what you were trying to convey.
>I don't look at this site much, because it turns people into jerks. Contact me somewhere else.
It's like he's throwing stones in a glass house and then complaining of all the vandals...
Key node members fighting amongst themselves is pointless news?
Or how about Joyent saying they would sack Ben even though he didn't work for them?
Ben rejected a third party pull request, Isaac commited a change related to the pull request, Ben rejected Isaac's commit because Isaac broke the commit rules by not getting sign-off before committing.
Ben walks away after getting libelled by Joyent and virtually fired (http://www.joyent.com/blog/the-power-of-a-pronoun) while Isaac gets to go on and make coin from NPM...
"Libel"? What did Bryan write that was a false statement? There were some unkind judgements, but I didn't see any factually untrue statements in it.
If not, then as it turns out, your claim that Bryan committed libel is itself libel, as it impugns his character by promoting a falsehood (ie, that he committed libel).
Don't use words you don't understand.
https://github.com/twbs/bootstrap/blob/master/js/dropdown.js
That sucks. This is why we can't have nice things.
I get the feeling (and please tell me if I'm reading too much into this) that you take exception to the pull request and what many people would call political correctness.
https://github.com/joyent/libuv/pull/1015#issuecomment-29568...
I don't think it was a dodgy call. I think people went unforgivably ape-shit, gained effectively nothing, and made someone else feel bad enough that they stopped contributing to an important project.
> I think people went unforgivably ape-shit
I'm not sure people went "ape-shit". There was a lot of discussion but it was generally polite, a lot more so than the normal internet discussion.
>they stopped contributing to an important project
That's a shame
Except where everyone called for him to be fired, and publicly slandered and demonized him on Twitter, github, HN, and in blogs.
But apart from that, yes, a model of civility.
There was an announcement from the node people saying that had he been an employee, he would have been fired on the spot. Not retrained, mediated, facilitated or whatever. Nothing inclusive, just 'put a foot wrong, bam, fired'. There was no profanity, but it was a pretty offensive and poorly-thought out response from Joyent, a professional entity.
It was a terribly-managed situation, and while I certainly think his commit refusal was wrong, after a comment like that (the subtext is 'i personally hate this guy, froth froth froth'), I can't blame the guy for leaving.
Not the grandparent, but I don't take objection to things like gender-neutral pronouns (I try to do it myself if I can incorporate it in a way that doesn't make the sentence feel weird). I don't know how easy it is for someone in his position to merge things on Github, how important following protocol is etc...
But what leaves a bad taste in my mouth is when someone does something that can be interpreted in a malicious manner, someone interprets in that (worst kind of) manner, and then dozens of people fuel the fire with "I am outraged, too!!!" without adding anything more to the issue or debate. Then by the time the 'offending party' gets around to respond, the damage has already been done, the slander has already spread like a wildfire, and everyone has already made up their mind about what went down based mostly on wild speculations from third parties from one or the other (or third) sides.
I don't know whether I should be concerned a core part of Node.js is becoming "businessy". Is this common amongst other big software projects?
Providing "premium" services is a slippery slope. What happens when someone wants to add a feature to npm that the premium services already provide, for example?
Python and Django have non-profits which help sustain their ecosystems, but AFAIK Node.js doesn't. Perhaps it would be a good step.
How does the Python and Django non-profits work right now?
Canonical and Red Hat are examples of for-profit businesses that primarily build and distribute free software, including employing some of the developers and managing some of the open source projects they distribute. I believe both make money primarily through "premium services" (especially "enterprise" support services).
Ximian was a for-profit company started by Nat Friedman and GNOME project founder Miguel de Icaza, which developed much of the GNOME code base for a while. (It was later acquired by Novell.) Miguel went on to found the Mono project and Xamarin, the for-profit company that leads development of Mono.
Qt, MySQL, InnoDB, and Berkeley DB were each developed in part by businesses using dual licensing models, where licenses for use with non-free-software were available for a fee. (The original companies have since been acquired by Nokia, Sun, Oracle, and Oracle, respectively. Sun was itself later acquired by Oracle.)
The author of SQLite earns income by providing commercial support and custom development services: http://www.sqlite.org/support.html
The developers of CyanogenMod recently founded a VC-backed company to fund its development. I'm sure there are a bunch more examples like this that I've forgotten or don't know about.
I agree that a non-profit foundation has benefits for free software projects. (I've been a developer on three projects associated with non-profits: Audacity, Debian, and Mozilla.) "For profit" as I used it above may be the wrong label, though. "Taxable" might be a better word in some cases. If a company is privately held, then its owners can use it to pursue a mission other than maximizing profit. For example, I'm employed by the Mozilla Corporation, a taxable entity that is a wholly-owned subsidiary of the non-profit Mozilla Foundation. The Corporation has to pay taxes because of the nature of its income and spending, but its mission is still that of its sole shareholder, the Foundation.
Well, that depends on your shareholders.
Mozilla Corp can do this, because its only shareholder is Mozilla Foundation.
However, the minute you take institutional investment, hand out shares to employees, take on debt financing, etc., you are now bound by a fiduciary duty to do right by those other parties. You still can focus on other things, but only if they don't conflict with turning a profit.
In my opinion, "turning a profit" in fact serves the greater needs of the npm/node community, because servers cost money. npm isn't just a program, it's a service, and services require infrastructure. So, it's not a conflict at all.
It is a very foolish business person who sees an exponential curve of user engagement, and decides that the best way to make money is to screw all those people.
This is not true. The shareholder value myth has been debunked by law professors.
"...shareholder primacy theory was first advanced by economists, not lawyers. This may explain why the idea that corporations should be managed to maximize shareholder value is based on factually mistaken claims about the law."
http://www.europeanfinancialreview.com/?p=6482
"Contrary to myth, the sale of Ben & Jerry’s to corporate giant Unilever wasn’t legally required."
http://www.ssireview.org/articles/entry/the_truth_about_ben_...
Bottom line, I've done a lot of work on npm over the last 4 years, and I've got some ideas about how to best take care of it in the future. Those ideas require money, and it's a lot easier to get money if you have a plan to turn it into MORE money. (This IS still a site about startups, right? ;)
If things keep expanding and growing like they have, then it's going to require more money. So, we've gotta earn our keep to be sustainable, and the way to do that is to provide stuff people will pay for.
Also, I like to make money. It's fun, and it keeps you grounded in reality, if you run it like a responsible business. So that's another nice plus of going this route. I still have full flexibility to carve things up however I want later on, and like I said, we're keeping every option on the table.
Yes, but this thread is still about a language.
> I like to make money.
Of course. And the main concern with npm, Inc is whether making money will at some point conflict with wanting to make npm better, no-strings-attached.
If "make money" ever appears to be in conflict with the thing that puts us in a position to make money, then we're thinking about it wrong.
For example, imagine if Twitter were not from the get-go a for-profit company. If they got really popular, and then said, "Hey, guys, we can't keep the lights on without figuring how a monetization strategy, so we're gonna take some VC and do that." It wouldn't be wise to assume that "make money" was going to mean "charge to read or post tweets". Forget love or greed or good and evil, that wouldn't be a smart way to make money.
What is currently free will remain free, precisely because the free-ness of it is what makes npm interesting.
The tricky thing is that, while there ARE some VCs that back them, most of them are pretty interested in bigger plays than "sharing javascript programs with other javascript programmers".
Disconnect is a pretty revolutionary idea, that will change society in some dramatic ways if it catches on. Most VCs that invest in benefit corps are looking for bigger plays than what we're doing. This is a pretty straightforward technology service that already has loads of adoption and upward-trending engagement graphs. It was just a lot easier to go the more traditional C Corp route first.
It seems like this is the market that NPM premium is after. The question is will businesses be more comfortable using a premium service? In other words - someone they can sue?
EDIT: It think it was the security episode, if I recall correctly.
Typically I find it works best when the company is very clear about which areas they feel should be open source and which areas they will be monetizing. Its the ambiguity and loss of trust that creates tension.
Q: How does this relate to the money I gave to the Scale NPM project a few months back? https://npm.nodejitsu.com/
I sure hope so! I'll be sharing many more details about the specifics in the next few days. I just kept it brief in this announcement so as not to drown out the message about TJ taking over Node.
> Q: How does this relate to the money I gave to the Scale NPM project a few months back? https://npm.nodejitsu.com/
The money you gave to Nodejitsu to continue supporting npm was a huge part of getting us in front of the exponential growth curve. I'll continue to be closely involved with Nodejitsu.
But a service of npm's scale and importance can't survive on handouts forever. At some point, we need much more continued investment and a focused team, and the way to get that is to develop additional features that people are willing to pay for.
Thank you!
(And yeah we do an "npm install" from the NPM servers during production deploys, I guess we like to live dangerously. We should probably fix that.)
I don't feel strongly (as some do) that non-profits guarantee benevolence. There are many evil non-profits (and many more incompetent ones!) which do harm to the world, and many capital-G Good for-profit companies. In many cases, a non-profit can easily become an empty hand-wavey thing. (And in that case, what's the real difference, except $800/year to the state of California?)
Of course, it has worked out well in some cases. Mozilla and WordPress are great examples of this sort of thing functioning really well to facilitate the interaction between a company and an open source community. But it is very early to even be worrying about such things.
In any event, even if we do create a non-profit, the first step is to create a Delaware C as a for-profit company to generate the money that can allow us to create new products, spin up new infrastructure when necessary, and employ people to run the thing. So that's what I'm up to these days. npm has gotten too big to be just some dude's hobby project :)
- http://www.quora.com/Whats-the-advantage-of-incorporating-a-... - http://www.newsworks.org/index.php/local/brandywine-to-broad... - http://www.nytimes.com/2012/07/01/business/how-delaware-thri...
Obviously since I said that I believe that the ideal npm registry would not depend on any particular company or funding but rather be fully distributed and free.
So that is what I think the ideal is. But the reality is that the world runs on money, and I think you deserve to be filthy rich for creating such a great system that so many people are relying on. So if you create a business and charge for npm somehow, certainly I will pay money to support it. And I will advocate that everyone else sign up for paid services related to npm as well. I mean, I doubt its going to break the bank for people. The difference between a million people paying $0 for something and even a very small fee like $10 would be huge in terms of funding.
I think the trick is to come up with a service that people need/really want so as avoid people doing an end-around with some alternate completely free system that doesn't support npm development at all.
Sorry if I complained too much by the way. Its just easier to dream about grand architectural changes on the internet than to do my actual job, which I believe I will go back to now.
You seem to have an utterly different perspective on this than anyone I know who relies on Node.
This is all starting to look rather amateurish and scary to me now where before I saw stability and excitement.
The $300,000 is gone already?
"Global ./configure&&make&&make install Industries" ?
The problem with things like rubygems is so long as it's a community project with people donating their time to it, any grievances you have with the service can be trumped by "we're just doing this in our spare time, lay off".
While I respect people who contribute to software in their spare time, pip and rubygems are way, way too important for them to be taken so casually. I really appreciate that the NodeJS community is increasing their commitment to the NPM infrastructure.
[EDIT: Isaac already partially replied, see other answer]
The money you gave to Nodejitsu to continue supporting npm was a huge part of getting us in front of the exponential growth curve. I'll continue to be closely involved with Nodejitsu.
But a service of npm's scale and importance can't survive on handouts forever. At some point, we need much more continued investment and a focused team, and the way to get that is to develop additional features that people are willing to pay for.
> There's simply too much money going around Node at the moment and while it might eventually be a good thing (as involved companies will push node adoption among devs), it's also scaring and quite weird.
Yes, there is the hazard of extrinsic motivation messing up intrinsic motivations. That's why pursuing revenue around npm must be done carefully.
Still, this is interesting stuff. Does anyone know if any similar repos (Ruby Gems, etc.) have their own for-profit companies?
I imagine Ruby Central gets a significant chunk through conference ticket sales? Someone more knowledgable here can chime in :)
You did a great work as a node lead. The brief moment when our paths crossed, due to a security issue in node, was handled perfectly. Seriously. You will be missed.
* Puts security as a high priority
* That is operated as a federated system (think bitcoin block chain)
* Puts uptime as a high priority
Many companies and individuals could run deployments of it, removing the need for a new NPM Inc to pay for service costs.
[0] https://npmjs.org/doc/registry.html#Can-I-run-my-own-private...
I'm not saying that npm is like, that important, but - take 0.01% (one ten thousandth) and npm would have an annual budget of 3/4 million bucks.
Will we get to a place where core software distribution to devices not humans is deemed as critical infrastructure?
It would be great to know that npm (and github and every other package distribution tool) were somehow too big to fail like banks have shown to be.
Meanwhile - everyone who has worked hard to make npm and node brilliant - thank you!
A good leader makes themselves obsolete by taking the community somewhere new. A bad leader gets themselves into a problem they can't fix. Either way, occasional change is good and healthy :)
Python's code_swarm: http://vimeo.com/1093745
Take a look at Maven[http://maven.apache.org] and Sonatype[http://www.sonatype.com/] (dependency management in Java-land).
Works awesomely (and maybe even better!).
I also hope Luke's ok. Thanks.
[edit] - originally thought TJ Fontaine wasn't employed by Joyent but apparently he is.
I believe that Node.js is waaay too immature to be used as a foundational technology, yet so many people (both folks who should know better and their naive followers) are trumpeting it as a great wonderful thing, pushing it hard as hell.
If you really need dynamic programming on your back-end server use Twisted. Twisted.
If you just said "but my engineers only know JS!" reflect: you have people that won't or can't learn Python but who feel okay about writing your back-end code.
Fire them and hire a real programmer.
Toys are very fun, and I would never try to take that away from anyone, but (in my opinion) there are waaay too many people pushing Node for production work that should know better, and that's the scam.
Node is not ready for the position which people are hyping it for, and (again in my opinion) if you are telling your non-tech-savvy clients or students that they should learn and use Node because it is ready for prime time then you're lying to them or simply naive and misguided.
I fail to see how Twisted is a better choice than Node , but I agree on Node.js(and NPM) immaturity.
All async frameworks need async libraries. With Node async is the default.You cant use any python sync io lib with Twisted for instance. Or it defeats its purpose.
I dont think Javascript is an issue especially with ES6 coming.
But like Twisted , NodeJS is not for everything ,that's the main issue here,with people trying to be fullstack javascript, and claiming they will replace CMS X or MVC framework Y with NodeJS.
To me it feels like people are busily (and happily) rewriting a lot of stuff in JS that might just be written better in some other language (Go) or have already been written (Erlang)
I actually like JS (Thank you Crockford) but it was startling to see it show up on the server side, and downright alarming to see so many people go apeshit over it.)
Node.js should vanish (except for where it is already deployed and useful, in maintenance/legacy mode) and all those really smart and talented people currently wasting their time on it should go build something even better and more useful.
There. How's that? ;-)
(Like this: http://swannodette.github.io/)
I have experience with Python and Twisted. For many types of applications such as realtime web collaboration, the Node stack is not only much easier to use but performs better.
If you like Python then take a look at ToffeeScript. It is cleaner than Python and works with Node.
The Node package management system is based on semantic versioning and combined with the dependency management and massive 54000 module easily searchable ecosystem is much more useful than Python.
You really don't know what you are talking about and you are pissing me off with your offhanded winky smug dismissal of Node and Node programmers.
I have been coding for more than 20 years using many different languages and platforms from c/c++ to ocaml to python to c#. And Node.js with ToffeeScript and npm is just a more advanced way to do development compared to any of those for most types of applications.
Build a few projects using Node.js and ToffeeScript and modules from npm and then come back and we will compare the experience to building the equivalent with Python/Twisted or Go.
By the way I like Go for some things but its not the best new language for systems development. I think Rust and nimrod have Go beat.
Thank you for calling me on my B.S. in a way that I can really relate to and respect.
Next: Yes, I'm ignorant of Node et. al. but my point is kind of that I shouldn't have to know about it at all, because Node shouldn't exist, and all the effort that went into it would have been better spent on other things.
Really my issue is with the whole industry and I'm just picking on Node because that's what I saw this morning. The Tornado project gave me similar misgivings.
I feel like we are constantly reinventing things (GUI widgets, IRC/IM/chat, Twisted/Tornado/NodeJS/..., video codecs, and on and on) yet certain basic really simple and important things (like getting a file from one computer to another, or UI design) are eternally neglected.
Why the heck is Dropbox a thing? You feel me?
You have actually given me food for thought, and I will check out Node.js with ToffeeScript. I'm a little leery of 54000 modules but I take your point.
But, without meaning to be harsh on Node in particular, I really feel like our industry has to kind of grow up some how. I never thought I would hate on innovation for its own sake, but it is starting to get a little ridiculous, and, from my POV, JS on the server seems a little bit too much JS. Now that it's there, and someone with your XP says it works well, well there you go, I suppose that's not a bad thing.
I apologize again for being a mouthy ignorant punk. I'll try to at least know what I'm talking about if it happens again.
Such as, for example, why don't we have an easy to use program like Dropbox that is just built in to every operating system, or freely available and in common use? Rather than having a bunch of people rely on this commercial system just to transfer files or make them available on the internet.
I agree that we are reinventing things an amazing number of times. I think we have at least 5 times as many crappy ways to accomplish basic things as we need. And certainly more cohesion is called for.
On the other hand I think that people often don't appreciate how changes to fundamental approaches are the best way to solve problems because problems are often structural or caused by the way the issues are framed.
I agree that there is too much reinventing the wheel and fragmentation of effort. I don't believe that Node.js is a good example of that. Although 54000 modules is too many and there is quite a lot of redundancy and crap in there. But having a very easy way to publish, consume and search for modules as well as instantly handle dependencies is a step forward.
Obviously I don't know enough about Node.js to put it down (and from what you've said if I knew it better I think I'd like it.)
Cheers (and I will check out ToffeeScript, thanks.) :)
Walmart used it to deal with much of their Black Friday traffic with no incident and with modest hardware. Node hasn't hit 1.0 yet, but the major API changes are now in the past. So what, specifically, do you see as immature about the project?
Really my irk comes down to something along the lines of, "Well why not write it in Go or something? Why JS?" and thinking that the only really good answer to that is "Well, we really like JS."
[1] http://bostinno.streetwise.co/2011/01/31/node-js-interview-4...
Those are drawbacks. Fatal ones, in fact. They are distinguishing characteristics of microcomputer OSes of the 80s.