Everybody,

These debates give me hives.  Seriously, they make my skin crawl.

If you think that providing an API for threads is a great idea, then
just go do it, as a userland module.  Jorge did.  What's the big deal?
 Some people like it, some people don't.  That's how anarchy works.
Think his threads_a_go_go thing is the wrong abstraction?  Fine.  Do a
different one.  It's just code.  Write some.  There's plenty of room
in the npm registry for all of us.

If you think that such a thing absolutely MUST be provided by the core
library, then that belongs in a github issue.  Be prepared to make a
VERY strong case for it.  It's a huge change to the architecture,
which was tried in the past and turned out to be not a good idea.
You'll need to be patient (since it will take a while), be willing to
help work on it, and have a plenty of new data showing that it's
actually a valuable change to make in the core, and why the problems
encountered last time can be overcome.

I can tell you that it won't have any chance of landing before 2.0,
and you'll have to (at least) convince Ben Noordhuis and Bert Belder
that it's worth doing.  They're both rather skeptical right now, and
stubbornly fixated on "evidence" and "use cases" and "reasonable
trade-offs", so that'll be an uphill climb, but I've found them easy
to convince if you can provide these things.  If you convince them,
that's probably the best way to convince me.

This is software.  All is flexible.  But we're not going to make
architectural changes just because someone says that we have to, using
strong words and providing no data.  That's not responsible, for a
platform that is used in production by real companies making real
money.

If you can do it in userland, great.  Go do that.  There's a good
chance we'll never do it in core, then, since we don't have to, it's a
lot of work, and there's no compelling reason to.  If you can't accept
that, and can't convince us to do it in core, then weigh your
discontent against the work of forking node and creating a new
project.  Some of us will probably even help you.  It might be an
interesting project :)

If you are annoyed that people don't *like* the module that you wrote,
or the project you forked, well, get over it.  Some people hate
request and express.  I have issues with underscore and never use it
in my projects, and Mikeal calls me crazy and superstitious for that.
Maybe he's right.  And those are the most popular modules out there.
I would urge any software developer (or any creative person in any
field) to divorce their self-esteem from the things that people say
about their work.  Yes, of course, we all want to build things that
are appreciated by the people we respect; but there's always a crowd
of nay-sayers.  You should be worried when you write a program and no
one talks shit about it, because it means you're probably not doing
anything interesting or important.

I would very much like to get away from the idea that anyone should
make passionate speeches about how the world will end if we don't do
some feature in node-core, or if some module is or isn't used by
everyone or anyone.  Lighten up.  We can all do our thing, explore and
experiment, and so on.  Having a small set of core functionality is an
important part of a healthy module ecosystem.  We won't be making
dramatic architectural changes to node any time soon, and certainly
not without data to justify it.

In debates like this, both sides tend to miss most of the subtlety of
what is actually involved with making major changes to a platform like
node.  These debates are an annoying distraction from actually getting
anything done.    It's not about dogma vs features.  We aren't married
to Ryan's original vision of Node; in fact, he wasn't even married to
that vision when he was running the project.  We've deviated from that
vision numerous times.  (Qv. commonjs-style module system, synchronous
fs functions, isolates, domains as a JavaScript abstraction rather
than a shared-nothing IO isolation, etc.)  In each case, we've done
our best to make decisions based on the trade-offs and data from real
world use cases.  Since he's stepped down from day-to-day management
of the project, we've even rejected a few of his feature requests!
Anyone who accuses the Node project of being dogmatic hasn't been
paying attention.  Our dogma is just a shorthand for experience, which
is the sum of accumulated evidence; if you want to change it, provide
new evidence.  It's not that hard.  I've seen it happen several times.

You know who almost never gets involved in these shenanigans?  TJ
Holowaychuk, James Halliday, Matt Ranney, and the folks at Joyent and
LinkedIn and Voxer and Cloud9.  Do you know why?  Because they're too
busy getting things done, writing modules, and keeping production
systems running.  What's childish and unprofessional is flinging
insults because node doesn't have a feature you want.  Node is for
builders, and builders aren't here kvetching over node's lack of
threads.  They're complaining that TLS is 10x slower than stud or
nginx, that readable streams are too hard to extend properly, and that
http is slower than it ought to be.  There is no end to the complaints
that they send my way, and taking on a monumental architectural change
because a vocal minority says we need to, would mean turning our backs
on those builders.  That'd be amateurish.

Go build something.  Come back when you can tell me what you couldn't
ship because you didn't have threads.

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to