Thanks much for the responses.  As a server side guy new to node, I have 
been trying to weigh in my own head whether some of the things I naturally 
look around for are better viewed as opportunities to change my thinking to 
do things in a new, and possibly more effective, way.  (And, no doubt, 
there is much that I see in the node ecosphere that is quite excitingly 
better).  In the case of interfaces, though, I do find myself missing the 
ability to have a java-style kind of way of defining an interface.  The 
thing I like about java interfaces is that if I design an interface, and 
someone tries to implement to it their code will break early - at compile 
time -- if they don't get the API right (actually, their editor will 
probably just add stubs of the necessary methods for them so they get it 
right without much researching) .  Surfacing those types of issues early is 
a good thing, regardless of language.  

In node, I see a lot of nice documentation written by folks to describe 
their APIs, which is nice, but on the other hand that type of docs seems 
much more necessary than in other language.  I also wonder if the lack of 
interface constructs (or, altneratively, the 100 different ways you could 
roll your own in JS, which seems true of most things) affects how people 
write their code.  For instance, I see lots of examples where people expose 
objects in their modules that use prototypal inheritance to implement a 
Stream api by inheriting from one of the Stream classes in node; but to me, 
a Stream is really a set of behaviors/traits that I want my object to 
implement, and using my one single prototype "bullet" to get it seems less 
desirable to me than some way of informing the system that my object will 
implement those behaviors/traits (along with possibly implementing other, 
unrelated sets of behaviors).  Interfaces let me do that, plus communicate 
simply and effectively how to build something that plugs in to something 
else, plus causes things that don't plug in correctly to break early and 
obviously.

Node seems to me to be an environment that allows developers to create 
moderately complex systems quickly.  And my sense (which could be wrong, 
I'll admit up front) is that we seem to be in an early days stage where 
lots of talented individual contributors are at work doing their own thing 
-- happy to evaluate the ten different ways of doing anything, reading 
other's code to get a sense of what is going on, etc.  But I wonder if 
going from moderately complex to really complex systems will require larger 
teams, and more coordination, and if then we'll find we some formalizations 
or tools to help people work together.  (All this, of course, is just some 
random noodlings from someone who is up late and jealous to have missed 
nodeconf!)

-- 
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to