You see this all the time in even jquery packages: are they $.pkg.method(elts) or $(elts).pkgmethod() or is it $(elt).pkgmethod(spec) or .... and so forth. Part of it is a matter of taste even if sometimes it goes against 'the jquery way.' Again, this is so religious that it's often not even worth fussing over.
Certainly, there's bound to be some overlap in packages, but this happens everywhere and who cares? underscore+jquery seems like a strange example especially when the two are complementary. If the goal is to have a "lightweight core" with "components that deliver specific, isolated functionality" i mean, aren't we there right now? And for where we're not, as mentioned by other commenters, coffeescript and friends certainly seem to be fighting the good fight.
If the point of modern js is that people are working together and optimizing, then yay!! but if the point of modern js is that we need to abide by some static discipline where each function only accepts a single spec object and conforms to some require.js loading protocol then, umm.. thanks but no thanks.
The core message is good but I think Rebecca's obsession with jQuery just kills here ability to deliver it.
jQuery is not a problem. jQuery's popularity is not a problem. Complex applications are the problem. People not knowing how to structure complex applications are the problem.
Let's see the context there: jQuery is wildly popular, but it is the right tool for the job in most cases. Not all web pages jQuery is used on are webapps. Not all webapps are GMail. Yup, jQuery is "DOM, AJAX and effects" library which is great for trivial tasks. A lot of tasks are trivial.
But there is no "jQuery divide", like there was no "Prototype divide" some six years ago.
The second point she is way wrong (again, IMHO) is the API. Don't you ever underestimate
the importance of the good API. When you have tools X, Y, Z which more or less do the same with more or less the same performance, API is the main differentiating factor it's the think you write and look at the whole day. jQuery's API
is awesome for many reasons. Dojo's is not.
What she is right about it's the lack of good examples going beyond the basics. But I think the reason for that is that we are just on the way to find out what works reasonably well. It will come, I hope.
So my point is: stop talking about jQuery and dojo. Talk about the core of the problem (and any js lib is not the core).
Oh, and I would like to see Rebecca's take on backbone.js.
I appreciate your feedback and understand that previous posts of mine have framed this as a jQuery vs. Dojo debate; I tried particularly hard not to do so in this post, and I think you'd be rather hard-pressed to say that this post was a "jQuery vs. Dojo" diatribe. Yes, it linked to my Berlin slides, but that's simply because a post in response to them is what got this whole post percolating in my head to begin with.
What I am asking for, in this post and in my Berlin talk, is for the people who know there is more to take some responsibility for bringing the others up to speed, to show people what can be done if you leave behind the "get some elements, do something with them" mentality.
Finally: Backbone is a viable entry in the field, and I am eager to see more complex examples (to-do list applications fall far short of this) that use it. I haven't used it personally, but I mostly like what I see and have heard good things about it. Unfortunately it had just come out right before my Berlin talk, and while I may have mentioned it in my actual talk, it isn't in the slides. (That said, I do cringe a tad that its examples suggest (http://documentcloud.github.com/backbone/#Model) that a "Sidebar" is a thing that should be a model.)
Oops -- that's a very good point about the Model example being a bad one -- I was just trying to use something visible, in order to see the "change" event binding in action. Perhaps we should swap it out for something more model-y.
These days, if you're looking for complex Backbone examples, there's a bounty to choose from:
One other question: are there Backbone examples small enough to digest but large enough to be more authentic than a to-do list? This is where I struggle to come up with good teaching examples -- a whole real-world app is simply too much to take in when one is trying to transition to a JS app mindset (and of course the code is usually minified/obfuscated), but examples like to-do lists are so simple that they don't show how a tool addresses actual real-world problems.
Thank you for these :) I admit the last time I went hunting was a while ago, it's good to see so many more. For various reasons, the templated widget part of Dojo made it the right choice for my current project, but I strongly suspect a Backbone project will be in my future, either for fun or profit.
That suggests those who fight the good fight from a software engineering perspective will not win with a frontal assault. C++ and Perl were both subject to years intense pressure to rethink their basic assumptions; both refused* and carried on with more-or-less the same group of folks who loved them warts-and-all.
In other words, the evidence suggests that it will be easier to move forward by organizing and strengthening those who agree with Murphey (and Crockford, etc.) than by converting those who, to use her phrase, "don't know what they don't know" but can do amazing things with Photoshop.
* I acknowledge there is an argument to be made that Perl 6 contradicts my assessment. My point is that Perl 6 has not brought a bunch of previous Perl critics into the fold.
In the browser, the browser would download and cache the the library and all its dependencies. For the server side, the server environment would download and cache the library and its dependencies in the same way.
Edit: Ha, a reply was deleted so fast that I didn't have a chance to reply to it. To clarify, Sha188.8.131.52 was meant to be an example of a library, not the SHA digest of a library, though that would be a nice feature. Also "require" should be a feature of the language, not using the html <script> tag so be able to work in the server environment.
This reminds me of Scala X expecting Java 7 discussion. I like the fact that we, as more agile communities (Scala's and Coffeescript's), decided that we should not wait for committees, and we should control the languages we want to use it. And we won't wait 2/3 years. We are doing it now.
As a speaker, let me just say that I have yet to figure out how to handle this. When I'm presenting, I want people listening to me, not reading the slides. When people are consuming the slides online afterwards, they can quickly get misconstrued without the context of my spoken words. All of that said, I'll add a link to the video from the blog post :)
I have come to the conclusion that communicators must present to different audiences in different formats. Slides used in public speaking are no different from hand gestures. Slides posted online for the same speech have to be touched up or completely redone for the new online audience. The audience who heard my speech might benefit from having a copy of my slides as memory cues.
The only good way I have seen it handled without a lot of duplication or extra work is to have the speaker's own notes as a handout, and the presentation just for the audience. Of course that takes a little planning up front.
Good talk, watched it a few weeks ago, still trying to work out how to solve dependancies on my application in an extensible easy to hand over to other devs way.
I think you've got it backwards, at least when it comes to good talks. It's always seemed to me that at least 80% of the important content is usually discernible from the slides (especially since you can probably infer the other things that the speaker was talking about, minus stuff like stories and jokes which are usually fluff anyways).
I was too; that's why I said "I think". I've heard that too, but it nearly always seems like the "good bits" get put in the slides while a lot of the other things that the speakers say I could have done without. Of course, the rest of the stuff is often interesting, just not usually nearly as useful.
The problem is that browsers don't deal with libraries. You can implement a module and a script loader system, but in the end of the day you will concatenate most scripts for faster download and initial page rendering.
The big problem is that we still have: IE6, IE7, IE8 and probably IE9 too
They are too slow, they will not allow you to write nice modularized code.