I think the distinction between *doing* node and *using* is good call. I
wrote a tampering HTTP proxy server in node; I used streams and callbacks.
I wrote a web application with lots of waiting on database and filesystem
chatter; I used fibers w/ futures.


On Sun, Apr 28, 2013 at 11:22 PM, Bruno Jouhier <bjouh...@gmail.com> wrote:

> Hi Nuno,
>
> Your post is helpful. I'll try to challenge it in a constructive way. I
> think that most of disagreement comes from a different perspective on means
> and ends.
>
> From your perspective, node is an end in itself: you **do** node; you
> build streams; you write callbacks; etc. For you, adherence to node's core
> philosophy is paramount.
>
> From my perspective, node is just a means to an end: we **use** node. For
> us, the end is to more our product forwards. Node is just one piece of the
> puzzle we are assembling (an important one). For us, node's core philosophy
> is "interesting" but it is not binding.
>
> Our team is growing and when I'm bringing new people on board I'm not
> teaching them callbacks and streams; I'm teaching them streamline. This is
> because I need them to get up to speed quickly and I also need to have a
> code base which is simple, robust, easy to maintain and homogeneous. They
> can still learn callbacks and streams on their own and I'm encouraging them
> to be curious but our internal coding standard is streamline.
>
> Also, I considered node's philosophy when architecting our new system. But
> I have difficulties to fit what we are doing into the streams and pipes
> paradigm. It does not feel "natural" and I don't see what benefits I would
> gain. For me, it is much more natural to architect our system as classical
> modules that **consume** streams than as streams that would be piped into
> each other. I find the pure asynchronous nature of node very appealing but
> I find the streams & pipes philosophy less appealing. Maybe there is also a
> question of maturity: the asynchronous APIs are something we can very
> easily build upon today (in part thanks to streamline); the streams & pipes
> looks more like an experiment in progress, which may turn out to be a real
> breakthrough but which would be introducing too much complexity for us
> today.
>
> I also have a different perspective on node's APIs. I followed the
> discussions on the new streams API and I was always amazed by the very
> strong focus on the "building streams" side. I find this very complex and
> fragile. In our system, we very rarely build a stream but we consume a lot
> of streams. So we have a small wrapper that gives us a very simple API to
> consume streams. We are not following the core philosophy but it does not
> really matter for us. What matters is that we can build our product.
>
> Now, when a person comes the the mailing list with a question, I wonder
> what his perspective is. Does he want to **do** node, or is he just trying
> to **use** node to build something? If his goal is to **do** node, then
> yes, Mikeal is right with his hard line: people should not blur the message
> and give him advice that may distract him from node's philosophy. But what
> if all he wants is to **use** node, maybe in ways that are not completely
> aligned with node's core philosophy, like we do? should we stick to the
> hard line, or should we let him explore "other ways" that may be a better
> answer to his needs.
>
> The node ecosystem is growing fast, with people that **do** node, and I
> don't want to disrupt this. But I feel that there is a great opportunity
> for node to go more mainstream (like PHP and RoR). I don't think that node
> will go mainstream by trying to convert mainstream developers to the
> callbacks and streams paradigm, simply because it is too hard. I think that
> it can do so by being open and letting people just **use** node, and this
> is where alternate tools may help.
>
> I don't have a good answer to what the line of conduct should be on the
> mailing list. But I don't think that excluding discordant voices is the
> right solution (in this specific case but also in general).
>
> Bruno.
>
>
> On Sunday, April 28, 2013 3:01:05 AM UTC+2, Nuno Job wrote:
>>
>> Node means a certain set of things, and part of those things are
>> callbacks and streams.
>>
>> Callbacks and streams are hard to learn because its a new
>> programming paradigm you don't learn in school. It was hard for me too and
>> I did it when this was still up for discussion. And I had good friends to
>> teach me that really knew node.
>>
>> Developers will always try to fast track to their already understood
>> paradigms; but that is not node. This existing paradigm makes sense to
>> build network proxies; which node is awesome for. To node programs are
>> proxies.
>>
>> A person should always start with callbacks and streams until he
>> understands them, closures, and the event loop. Then he can make informed
>> decisions on what to use when.
>>
>> However node is not the solution to all problems and if you wanted to
>> build a general purpose replacement for Ruby on Rails in JS you probably
>> wouldn't use callbacks and streams by something else as discussed.
>> Personally i think this would be great, an would follow closely such a
>> project. It could even interopt with node and npm but its not node!
>>
>> Given my opinions above it makes sense that i would advocate that a node
>> beginner should start with the standard idioms: callbacks and streams. It
>> might even make sense to make these documented as "the standard" on the
>> site.
>>
>> However its possible that this is not the best solution for the person
>> that asked the question, but then maybe that person shouldn't be using node
>> and instead the brand new super cool thing someone will build. Or maybe he
>> needs to learn how node works and then decide, by himself, that something
>> else makes more sense.
>>
>> The ecosystem exists, it has an interoperability model, and works great
>> for what node is for (check node success). Improvements on this model are
>> possible (like streams2) but even those aren't without backlash. Breaking
>> changes are also awesome, but its not node
>>
>> Nuno
>>
>> Ps. Cause this doesn't seem obvious to everyone, these are just my
>> personal opinions. And I expressed them here mostly in respect to Bruno who
>> did a blog post i thought was respectful and thoughtful, and i felt
>> compelled to respond in the same manner. We have a great community and i
>> respect a lot the work and passion community members put into their
>> projects
>>
>>
>>  --
> --
> 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
>
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to nodejs+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

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

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to