> Do you guys wonder why there is a collective groan when you show up? Especially considering how difficult it is for a group of geographically remote people to convey a collective groan in a written medium ;)
I only hear the usual waa waa of the usual cry babies.
> (...)
> PS: And find some way to get rid of the "eval" thing for chrissakes. If you want javascript people to take you seriously, show them you're serious about javascript.
JS programs are text. Guess what happens when you run them? eval(program); As simple as that! E.g., REPL: Read Eval Print Loop.
I chose to use thread.eval(program) because eval() -as the threads- is evil. Will alias it as thread.evil(program) in the next release, just so it's absolutely clear.
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.
This is me asking you nicely to stop. You've succeeded in making some of the most level headed and accommodating people in the community scream. Great work, job well done. Time to stop now.
If you do not stop I'lll consider your behavior outright trolling and ask that you be removed from the list.
-Mikeal
On Sep 17, 2012, at September 17, 20123:08 PM, Jorge <jo...@jorgechamorro.com> wrote:
>> Do you guys wonder why there is a collective groan when you show up? Especially considering how difficult it is for a group of geographically remote people to convey a collective groan in a written medium ;)
> I only hear the usual waa waa of the usual cry babies.
>> (...)
>> PS: And find some way to get rid of the "eval" thing for chrissakes. If you want javascript people to take you seriously, show them you're serious about javascript.
> JS programs are text. Guess what happens when you run them? eval(program); As simple as that! E.g., REPL: Read Eval Print Loop.
> I chose to use thread.eval(program) because eval() -as the threads- is evil. Will alias it as thread.evil(program) in the next release, just so it's absolutely clear.
Le mardi 18 septembre 2012 00:09:32 UTC+2, Isaac Schlueter a écrit :
> These debates give me hives. Seriously, they make my skin crawl. > ...
> 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
Getting thing done is good, so is having fun.
Let's evaluate the hypothese that they prefer not to polarize some people against them, fair move.
Back to business. Fiber are nice (not preemptive), Isolate are nice (multi-core), and async is the de facto (nice) standard.
Conclusion to API providers :
- make it async - standard, fast
- make it sync, using fiber - convenient, not preemptive hence "manageable"
- make it sync, using isolates - convenient, multi-core friendly
I admit to willingly participating in this because I was off today and had
nothing better to do. :)
I don't think Jorge or anyone else has been much out of line in this
thread. And it's really only ever a handful of people that perpetuate these
debates until they devolve. Myself included. I think they're a lot of fun,
but I do try to restrain myself from getting involved in all of them so as
not to permanently bring down the atmosphere of the list.
I don't think it's bad to have people debate things on the list. Even if
it's the same topics sometimes. Not everyone has been around for 2+ plus
years. And not everyone can make it to conferences costing hundreds or even
thousands of dollars in order to debate in person. So to a lot of people,
this is where the community is. You guys have been increasingly quick to
shut down lively debate. And as a consequence, the list is pretty boring
these days. Take that however you like.
When you guys stomp in like angry parents all the time, it starts to feel
way too "professional" around here. Just sayin.
:Marco
On Mon, Sep 17, 2012 at 3:14 PM, Mikeal Rogers <mikeal.rog...@gmail.com>wrote:
> This is me asking you nicely to stop. You've succeeded in making some of
> the most level headed and accommodating people in the community scream.
> Great work, job well done. Time to stop now.
> If you do not stop I'lll consider your behavior outright trolling and ask
> that you be removed from the list.
> -Mikeal
> On Sep 17, 2012, at September 17, 20123:08 PM, Jorge <
> jo...@jorgechamorro.com> wrote:
> > On 17/09/2012, at 12:04, Marco Rogers wrote:
> >> Do you guys wonder why there is a collective groan when you show up?
> Especially considering how difficult it is for a group of geographically
> remote people to convey a collective groan in a written medium ;)
> > I only hear the usual waa waa of the usual cry babies.
> >> (...)
> >> PS: And find some way to get rid of the "eval" thing for chrissakes. If
> you want javascript people to take you seriously, show them you're serious
> about javascript.
> > JS programs are text. Guess what happens when you run them?
> eval(program); As simple as that! E.g., REPL: Read Eval Print Loop.
> > I chose to use thread.eval(program) because eval() -as the threads- is
> evil. Will alias it as thread.evil(program) in the next release, just so
> it's absolutely clear.
I guess node.js project reached popularity level when splitting effort into multiple competing implementations would be a good thing, so fork would be good.
This is where we disagree. I think that this is the worst thing we could be doing and that it's actually damaging to the project.
In order for Node to be successful it needs to evolve past each challenge it faces.
In the early days, everything was up for debate, and Node attracted a lot of people doing fun experiments. We went back and forth about various promise APIs and callbacks, then we moved on. We debated the module system for a while, then we moved on. Luckily, we never took responsibility for the language so we've avoid that debate entirely.
Node is approaching the point where Node will not be about Node core anymore. Node core is about to get very boring, API changes will not be happening, it won't be a place to solve problems, and it's already not a place for experimentation. The focus of the community will necessarily shift to being not about Node and about what we build in it instead.
If Node does not move past the same old debates, debates that the community has already decided on (99% of modules are using standard callback interface) it will suffer the same fate as Perl, Python or Ruby that are still enamored with the same problems they were talking about 6 years ago.
This is important. Node should be a fun place and nobody is trying to say "act professional". The problem is that this shit is decidedly *not fun* for anyone but you and Jorge and maybe a few others and is a huge annoyance and distraction for everyone who would like to move forward and have fun talking about robots and websockets. Your discussion makes this list a place for endless debates between camps that have no adoption and people having fun playing devils advocate and not a place for people to talk about real stuff they are building and problems they have.
A conflict is inevitable. The kind of people attracted to experimentation when a project is young will feel alienated when it moves past the experimentation phase, and that is decidedly where node is at.
-Mikeal
On Sep 17, 2012, at September 17, 20124:25 PM, Marco Rogers <marco.rog...@gmail.com> wrote:
> I admit to willingly participating in this because I was off today and had nothing better to do. :)
> I don't think Jorge or anyone else has been much out of line in this thread. And it's really only ever a handful of people that perpetuate these debates until they devolve. Myself included. I think they're a lot of fun, but I do try to restrain myself from getting involved in all of them so as not to permanently bring down the atmosphere of the list.
> I don't think it's bad to have people debate things on the list. Even if it's the same topics sometimes. Not everyone has been around for 2+ plus years. And not everyone can make it to conferences costing hundreds or even thousands of dollars in order to debate in person. So to a lot of people, this is where the community is. You guys have been increasingly quick to shut down lively debate. And as a consequence, the list is pretty boring these days. Take that however you like.
> When you guys stomp in like angry parents all the time, it starts to feel way too "professional" around here. Just sayin.
> :Marco
> On Mon, Sep 17, 2012 at 3:14 PM, Mikeal Rogers <mikeal.rog...@gmail.com> wrote:
> Jorge,
> This is me asking you nicely to stop. You've succeeded in making some of the most level headed and accommodating people in the community scream. Great work, job well done. Time to stop now.
> If you do not stop I'lll consider your behavior outright trolling and ask that you be removed from the list.
> -Mikeal
> On Sep 17, 2012, at September 17, 20123:08 PM, Jorge <jo...@jorgechamorro.com> wrote:
> > On 17/09/2012, at 12:04, Marco Rogers wrote:
> >> Do you guys wonder why there is a collective groan when you show up? Especially considering how difficult it is for a group of geographically remote people to convey a collective groan in a written medium ;)
> > I only hear the usual waa waa of the usual cry babies.
> >> (...)
> >> PS: And find some way to get rid of the "eval" thing for chrissakes. If you want javascript people to take you seriously, show them you're serious about javascript.
> > JS programs are text. Guess what happens when you run them? eval(program); As simple as that! E.g., REPL: Read Eval Print Loop.
> > I chose to use thread.eval(program) because eval() -as the threads- is evil. Will alias it as thread.evil(program) in the next release, just so it's absolutely clear.
As someone who started using Node after said experimentation was over, I
want to publically thank those who argued this sort of thing *in the past*,
and am excited about what we (myself included) can build in and with Node.
Those decisions were not easy, but they've been decided, and by incredibly
smart people. Let's not short-change that.
As someone who receives every email sent to this list individually, I want
my inbox back. TAGG belongs in Userland. So do promises. And Fibers. And
Hook. And every other library that *builds beyond *core Node. You want to *
change* Node? You have your trajectory:
fork<https://github.com/joyent/node/fork>
or get more formally involved <https://github.com/joyent/node/issues>. Put
your fingers where your mouth is and let's go back to having fun.
-Schoon
On Mon, Sep 17, 2012 at 4:56 PM, Mikeal Rogers <mikeal.rog...@gmail.com>wrote:
> This is where we disagree. I think that this is the worst thing we could
> be doing and that it's actually damaging to the project.
> In order for Node to be successful it needs to evolve past each challenge
> it faces.
> In the early days, everything was up for debate, and Node attracted a lot
> of people doing fun experiments. We went back and forth about various
> promise APIs and callbacks, then we moved on. We debated the module system
> for a while, then we moved on. Luckily, we never took responsibility for
> the language so we've avoid that debate entirely.
> Node is approaching the point where Node will not be about Node core
> anymore. Node core is about to get very boring, API changes will not be
> happening, it won't be a place to solve problems, and it's already not a
> place for experimentation. The focus of the community will necessarily
> shift to being not about Node and about what we build in it instead.
> If Node does not move past the same old debates, debates that the
> community has already decided on (99% of modules are using standard
> callback interface) it will suffer the same fate as Perl, Python or Ruby
> that are still enamored with the same problems they were talking about 6
> years ago.
> This is important. Node should be a fun place and nobody is trying to say
> "act professional". The problem is that this shit is decidedly *not fun*
> for anyone but you and Jorge and maybe a few others and is a huge annoyance
> and distraction for everyone who would like to move forward and have fun
> talking about robots and websockets. Your discussion makes this list a
> place for endless debates between camps that have no adoption and people
> having fun playing devils advocate and not a place for people to talk about
> real stuff they are building and problems they have.
> A conflict is inevitable. The kind of people attracted to experimentation
> when a project is young will feel alienated when it moves past the
> experimentation phase, and that is decidedly where node is at.
> -Mikeal
> On Sep 17, 2012, at September 17, 20124:25 PM, Marco Rogers <
> marco.rog...@gmail.com> wrote:
> I admit to willingly participating in this because I was off today and had
> nothing better to do. :)
> I don't think Jorge or anyone else has been much out of line in this
> thread. And it's really only ever a handful of people that perpetuate these
> debates until they devolve. Myself included. I think they're a lot of fun,
> but I do try to restrain myself from getting involved in all of them so as
> not to permanently bring down the atmosphere of the list.
> I don't think it's bad to have people debate things on the list. Even if
> it's the same topics sometimes. Not everyone has been around for 2+ plus
> years. And not everyone can make it to conferences costing hundreds or even
> thousands of dollars in order to debate in person. So to a lot of people,
> this is where the community is. You guys have been increasingly quick to
> shut down lively debate. And as a consequence, the list is pretty boring
> these days. Take that however you like.
> When you guys stomp in like angry parents all the time, it starts to feel
> way too "professional" around here. Just sayin.
> :Marco
> On Mon, Sep 17, 2012 at 3:14 PM, Mikeal Rogers <mikeal.rog...@gmail.com>wrote:
>> Jorge,
>> This is me asking you nicely to stop. You've succeeded in making some of
>> the most level headed and accommodating people in the community scream.
>> Great work, job well done. Time to stop now.
>> If you do not stop I'lll consider your behavior outright trolling and ask
>> that you be removed from the list.
>> -Mikeal
>> On Sep 17, 2012, at September 17, 20123:08 PM, Jorge <
>> jo...@jorgechamorro.com> wrote:
>> > On 17/09/2012, at 12:04, Marco Rogers wrote:
>> >> Do you guys wonder why there is a collective groan when you show up?
>> Especially considering how difficult it is for a group of geographically
>> remote people to convey a collective groan in a written medium ;)
>> > I only hear the usual waa waa of the usual cry babies.
>> >> (...)
>> >> PS: And find some way to get rid of the "eval" thing for chrissakes.
>> If you want javascript people to take you seriously, show them you're
>> serious about javascript.
>> > JS programs are text. Guess what happens when you run them?
>> eval(program); As simple as that! E.g., REPL: Read Eval Print Loop.
>> > I chose to use thread.eval(program) because eval() -as the threads- is
>> evil. Will alias it as thread.evil(program) in the next release, just so
>> it's absolutely clear.
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 keep having debates on the mailing list.
It's just not true Mikeal. You and Isaac both are over-reacting to this issue. It's when I stopped over-reacting a while ago that these debates stopped giving me hives. And the frequency of these posts went down when you guys stopped participating directly. It's just a mailing list. It's not stopping the proliferation of dozens of conferences selling out. It's not stopping people from posting dozens of messages a day. It's not stopping more modules from showing up on npm. It's not stopping people from shipping code.
Just like node core has passed the point of experimentation and endless tweaking, so has the community passed the point where a few trouble- making citizens is going to cause the whole fragile house of cards to fold.
On Monday, September 17, 2012 4:56:30 PM UTC-7, Mikeal Rogers wrote:
> This is where we disagree. I think that this is the worst thing we could > be doing and that it's actually damaging to the project.
> In order for Node to be successful it needs to evolve past each challenge > it faces.
> In the early days, everything was up for debate, and Node attracted a lot > of people doing fun experiments. We went back and forth about various > promise APIs and callbacks, then we moved on. We debated the module system > for a while, then we moved on. Luckily, we never took responsibility for > the language so we've avoid that debate entirely.
> Node is approaching the point where Node will not be about Node core > anymore. Node core is about to get very boring, API changes will not be > happening, it won't be a place to solve problems, and it's already not a > place for experimentation. The focus of the community will necessarily > shift to being not about Node and about what we build in it instead.
> If Node does not move past the same old debates, debates that the > community has already decided on (99% of modules are using standard > callback interface) it will suffer the same fate as Perl, Python or Ruby > that are still enamored with the same problems they were talking about 6 > years ago.
> This is important. Node should be a fun place and nobody is trying to say > "act professional". The problem is that this shit is decidedly *not fun* > for anyone but you and Jorge and maybe a few others and is a huge annoyance > and distraction for everyone who would like to move forward and have fun > talking about robots and websockets. Your discussion makes this list a > place for endless debates between camps that have no adoption and people > having fun playing devils advocate and not a place for people to talk about > real stuff they are building and problems they have.
> A conflict is inevitable. The kind of people attracted to experimentation > when a project is young will feel alienated when it moves past the > experimentation phase, and that is decidedly where node is at.
> -Mikeal
> On Sep 17, 2012, at September 17, 20124:25 PM, Marco Rogers < > marco....@gmail.com <javascript:>> wrote:
> I admit to willingly participating in this because I was off today and had > nothing better to do. :)
> I don't think Jorge or anyone else has been much out of line in this > thread. And it's really only ever a handful of people that perpetuate these > debates until they devolve. Myself included. I think they're a lot of fun, > but I do try to restrain myself from getting involved in all of them so as > not to permanently bring down the atmosphere of the list.
> I don't think it's bad to have people debate things on the list. Even if > it's the same topics sometimes. Not everyone has been around for 2+ plus > years. And not everyone can make it to conferences costing hundreds or even > thousands of dollars in order to debate in person. So to a lot of people, > this is where the community is. You guys have been increasingly quick to > shut down lively debate. And as a consequence, the list is pretty boring > these days. Take that however you like.
> When you guys stomp in like angry parents all the time, it starts to feel > way too "professional" around here. Just sayin.
> :Marco
> On Mon, Sep 17, 2012 at 3:14 PM, Mikeal Rogers <mikeal...@gmail.com<javascript:> > > wrote:
>> Jorge,
>> This is me asking you nicely to stop. You've succeeded in making some of >> the most level headed and accommodating people in the community scream. >> Great work, job well done. Time to stop now.
>> If you do not stop I'lll consider your behavior outright trolling and ask >> that you be removed from the list.
>> -Mikeal
>> On Sep 17, 2012, at September 17, 20123:08 PM, Jorge < >> jo...@jorgechamorro.com <javascript:>> wrote:
>> > On 17/09/2012, at 12:04, Marco Rogers wrote:
>> >> Do you guys wonder why there is a collective groan when you show up? >> Especially considering how difficult it is for a group of geographically >> remote people to convey a collective groan in a written medium ;)
>> > I only hear the usual waa waa of the usual cry babies.
>> >> (...)
>> >> PS: And find some way to get rid of the "eval" thing for chrissakes. >> If you want javascript people to take you seriously, show them you're >> serious about javascript.
>> > JS programs are text. Guess what happens when you run them? >> eval(program); As simple as that! E.g., REPL: Read Eval Print Loop.
>> > I chose to use thread.eval(program) because eval() -as the threads- is >> evil. Will alias it as thread.evil(program) in the next release, just so >> it's absolutely clear.
Ha! Thanks guys for making my day, nothing beats a good fight on an otherwise very boring evening. Also, it always gives me this warm and fuzzy feeling of self-righteousness every time I decide not to participate. I'm loving it!
I hate TAGG because it's built around the lie <https://groups.google.com/d/msg/nodejs/ELsE4-L_oxM/HHqEuyp7HHIJ>that zero-copy data sharing would be at all possible. V8 just isn't built to do it, and making it so would be a monumental task. Google may be able to pull it off it they cared, but the core team can't. Jorge and Bruno don't even know where to look. Call me again when you own a billion dollar company. Or when you're reborn as a crazy Russian super hacker<https://github.com/sheremetyev/w16>. Zero-copy Buffer/TypedArray sharing *may* be possible but copying binary data is even less likely (by at least an order of magniture I'd say) to be the bottleneck in your app than serialization.
In the meantime, ToString'ing a function and eval'ing it on another thread, are you kidding me? Heavy computation never takes more than a single function right?
Isolates was our (or rather, Ben and Ryan's) attempt to do whatever TAGG might achieve in a proper way, but in the end we figured out that it has no benefits over using child processes. Whatever TAGG does, you can trivially achieve the same with child processes. Ryan even wrote an example fibonacci server <https://gist.github.com/2018811> to demonstrate this. Obviously nobody cared because this is entirely irrelevant.
> This is me asking you nicely to stop. You've succeeded in making some of the most level headed and accommodating people in the community scream. Great work, job well done. Time to stop now.
> If you do not stop I'lll consider your behavior outright trolling and ask that you be removed from the list.
First of all, saying "I would fork node" is just an absurdly dated
thing to even say as if it's meaningful. There are 2,452 forks of
node right now. It's silly to say that you WOULD fork node, if you
currently can, and haven't. (I'm getting a 404 from
https://github.com/douglascrockford/node.)
> In May at HTML5 dev conference, Douglas Crockford said that he would fork NodeJs because he does not trust Joyent.
I emailed Douglas about this asking for more details. He and I are
former colleagues from my time at Yahoo. He claimed that "Joyent's"
management of Node is "amateurish". As I am the person at Joyent who
manages Node, I could not help but take this as a criticism of my own
work.
To date, I have not received a reply. While I of course understand
that the time limits of a talk don't allow for deep discussions of
every subject, I was saddened by the vagueness of his comments, and
consider the lack of follow-up rather unprofessional. I have no idea
what he thinks is amateurish about how I'm running node.
The fact of the matter is, none of us know what Crockford meant by
that comment, because he hasn't provided any further details, and
that's the end of it.
As for the other issues, I'd rather not try to synchronize a
discussion across threads, as that can result in data corruption ;)
<alexey.petrus...@gmail.com> wrote:
> I guess node.js project reached popularity level when splitting effort into
> multiple competing implementations would be a good thing, so fork would be
> good.
On Tue, Sep 18, 2012 at 10:34 PM, Isaac Schlueter <i...@izs.me> wrote:
> First of all, saying "I would fork node" is just an absurdly dated
> thing to even say as if it's meaningful. There are 2,452 forks of
> node right now. It's silly to say that you WOULD fork node, if you
> currently can, and haven't. (I'm getting a 404 from
> https://github.com/douglascrockford/node.)
> > In May at HTML5 dev conference, Douglas Crockford said that he would
> fork NodeJs because he does not trust Joyent.
> I emailed Douglas about this asking for more details. He and I are
> former colleagues from my time at Yahoo. He claimed that "Joyent's"
> management of Node is "amateurish". As I am the person at Joyent who
> manages Node, I could not help but take this as a criticism of my own
> work.
> To date, I have not received a reply. While I of course understand
> that the time limits of a talk don't allow for deep discussions of
> every subject, I was saddened by the vagueness of his comments, and
> consider the lack of follow-up rather unprofessional. I have no idea
> what he thinks is amateurish about how I'm running node.
> The fact of the matter is, none of us know what Crockford meant by
> that comment, because he hasn't provided any further details, and
> that's the end of it.
> As for the other issues, I'd rather not try to synchronize a
> discussion across threads, as that can result in data corruption ;)
> First of all, saying "I would fork node" is just an absurdly dated
> thing to even say as if it's meaningful.
this is exactly what I thought from the first mail in this thread.. since
when you have to announce in public that you are going to fork a project..
He might have some (good?) reasons to say so, but it has a lot of
sensationalism.
*now, excuse me, but I am going to fork Rails because those 37Singals guys
are bananas..*
This morning I had a chance to ask Doug, in person, to clarify what he
meant by his statements about forking Node—as it turns out, his motivations
aren't sinister, nor are they really outrageous.
Historically, Yahoo forks technologies that it relies heavily on, eg. Unix
and Apache. This allows them to iterate at their own pace and add features
they want, when they want them and exclusively to meet their own internal
or product based needs. As he explained to me, he simply meant that if he
was asked to be the CEO of Yahoo, he would add Node to the technologies
that Yahoo maintains its own fork of. Doug also noted that in this
hypothetical scenario, the "YNode" code would be released as an open-source
project (unlike forks of other technologies at Yahoo)
Seems like way less of a big deal when you actually check sources... weird,
right?
On Tue, Sep 18, 2012 at 1:04 PM, Isaac Schlueter <i...@izs.me> wrote:
> First of all, saying "I would fork node" is just an absurdly dated
> thing to even say as if it's meaningful. There are 2,452 forks of
> node right now. It's silly to say that you WOULD fork node, if you
> currently can, and haven't. (I'm getting a 404 from
> https://github.com/douglascrockford/node.)
> > In May at HTML5 dev conference, Douglas Crockford said that he would
> fork NodeJs because he does not trust Joyent.
> I emailed Douglas about this asking for more details. He and I are
> former colleagues from my time at Yahoo. He claimed that "Joyent's"
> management of Node is "amateurish". As I am the person at Joyent who
> manages Node, I could not help but take this as a criticism of my own
> work.
> To date, I have not received a reply. While I of course understand
> that the time limits of a talk don't allow for deep discussions of
> every subject, I was saddened by the vagueness of his comments, and
> consider the lack of follow-up rather unprofessional. I have no idea
> what he thinks is amateurish about how I'm running node.
> The fact of the matter is, none of us know what Crockford meant by
> that comment, because he hasn't provided any further details, and
> that's the end of it.
> As for the other issues, I'd rather not try to synchronize a
> discussion across threads, as that can result in data corruption ;)
> On Mon, Sep 17, 2012 at 4:36 PM, Alexey Petrushin
> <alexey.petrus...@gmail.com> wrote:
> > I guess node.js project reached popularity level when splitting effort
> into
> > multiple competing implementations would be a good thing, so fork would
> be
> > good.
>> First of all, saying "I would fork node" is just an absurdly dated
>> thing to even say as if it's meaningful.
> this is exactly what I thought from the first mail in this thread.. since
> when you have to announce in public that you are going to fork a project..
> He might have some (good?) reasons to say so, but it has a lot of
> sensationalism.
> *now, excuse me, but I am going to fork Rails because those 37Singals
> guys are bananas..*
>>> First of all, saying "I would fork node" is just an absurdly dated
>>> thing to even say as if it's meaningful.
>> this is exactly what I thought from the first mail in this thread.. since
>> when you have to announce in public that you are going to fork a project..
>> He might have some (good?) reasons to say so, but it has a lot of
>> sensationalism.
>> *now, excuse me, but I am going to fork Rails because those 37Singals
>> guys are bananas..*
eh, there was, but it turned out to be something that was simply
misunderstood and not really worth mentioning here. I'm not going to get
involved with the "name calling" part of this discussion.
>>>> First of all, saying "I would fork node" is just an absurdly dated
>>>> thing to even say as if it's meaningful.
>>> this is exactly what I thought from the first mail in this thread..
>>> since when you have to announce in public that you are going to fork a
>>> project.. He might have some (good?) reasons to say so, but it has a lot of
>>> sensationalism.
>>> *now, excuse me, but I am going to fork Rails because those 37Singals
>>> guys are bananas..*
> and is a huge annoyance and distraction for everyone who would like to > move forward
I humbly propose not participating in things which annoy you or you find overly distracting.
Everyone who feels capable of engaging in progressive dialectic engagement on technical topics and knows how to avoid meta-moderating, please carry on. Mikeal, this is a victimless crime. If like Socrates you think me in violation of your society, pass the hemlock: this is the way it's gotta be, and the only harm is people that jump to take injury from it.
On Tuesday, September 18, 2012 1:26:13 PM UTC-4, Rick Waldron wrote:
> This morning I had a chance to ask Doug, in person, to clarify what he > meant by his statements about forking Node—as it turns out, his motivations > aren't sinister, nor are they really outrageous.
> Historically, Yahoo forks technologies that it relies heavily on, eg. Unix > and Apache. This allows them to iterate at their own pace and add features > they want, when they want them and exclusively to meet their own internal > or product based needs. As he explained to me, he simply meant that if he > was asked to be the CEO of Yahoo, he would add Node to the technologies > that Yahoo maintains its own fork of. Doug also noted that in this > hypothetical scenario, the "YNode" code would be released as an open-source > project (unlike forks of other technologies at Yahoo)
> Seems like way less of a big deal when you actually check sources... > weird, right?
I'm not sure what was clarified. This still seems like an entirely wide open topic. Aside from "doing it under Yahoo's umbrella," I can't read a single thing different that Crock would do.
Isaac: I fully confess to being an ignorant childish distracting useless retrogressive drag on the community, and I'm sorry if this discussion in fact hurts us. Also, seek trained medical professional help.
Alas, the hunger to know more about this topic STILL calls at me. It did before Isolates was cancelled, it did when Isolates was cancelled, and I sought to rectify my ignorance by asking others, not investigating the source which I feel less than capable of, and blaming no one I did not get the help I requested highlighting the "subtleties" of the technical landscape surrounding this still interesting feature: https://groups.google.com/d/msg/nodejs/zLzuo292hX0/xb30bmk3ds8J
Please let me know if you have constructive advice for better ways to seek knowledge than what I've done here, or back in February when Isolates was canned. I wish to become more informed, and hope this community is civil and mature enough to help explore the topic with me.
On Monday, September 17, 2012 6:09:32 PM UTC-4, Isaac Schlueter wrote:
> 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.
Paraphrasing, it was stated that the fork would have been "because of
how Yahoo likes to operate", "if there were any changes they would be
open sourced" and "threads have no place in javascript"
> I hate TAGG because it's built around the lie > <https://groups.google.com/d/msg/nodejs/ELsE4-L_oxM/HHqEuyp7HHIJ>that > zero-copy data sharing would be at all possible. V8 just isn't built to do > it, and making it so would be a monumental task. Google may be able to pull > it off it they cared, but the core team can't. Jorge and Bruno don't even > know where to look. Call me again when you own a billion dollar company. Or > when you're reborn as a crazy Russian super hacker<https://github.com/sheremetyev/w16>. > Zero-copy Buffer/TypedArray sharing *may* be possible but copying binary > data is even less likely (by at least an order of magniture I'd say) to be > the bottleneck in your app than serialization.
Multi-threading, even without zero copy, would allow for faster context switching as well. Context switching is bad, process-per-thread is good and helps avoids context switching, but there is a gain even if there is not an easy zero copy benefit to be had.
Not clamoring for this, zero-copy is far more my interest, but it is a gain for places where concurrency has to happen outside of any given Node process.
> In the meantime, ToString'ing a function and eval'ing it on another > thread, are you kidding me? Heavy computation never takes more than a > single function right?
Easy Bert, let's not trash something that works & does more for some people. It doesn't have to appeal to everyone to be a good thing.
> Isolates was our (or rather, Ben and Ryan's) attempt to do whatever TAGG > might achieve in a proper way, but in the end we figured out that it has no > benefits over using child processes. Whatever TAGG does, you can trivially > achieve the same with child processes. Ryan even wrote an example > fibonacci server <https://gist.github.com/2018811> to demonstrate this. > Obviously nobody cared because this is entirely irrelevant.
At the time, the only explanation we got for it being dropped was that it was 15 words, and those rang to a different tune than "had no benefit":
ultimately turned out to cause too much instability in node's internal
I still am very much interested in technical discussion around this feature, know it abstractly but not deeply, and the cause of it being shelved remains shrouded in mystery. I'm sorry we all feel so dragged into the mud every time it gets raised, thank you for helping share more views which further enlightenment us: any willing to chip in technically on this, thanks (Ben! Jorge! Bert!).
> Multi-threading, even without zero copy, would allow for faster context > switching as well. Context switching is bad, process-per-thread is good and > helps avoids context switching, but there is a gain even if there is not an > easy zero copy benefit to be had.