Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save jashkenas/1732351 to your computer and use it in GitHub Desktop.
Save jashkenas/1732351 to your computer and use it in GitHub Desktop.
For those folks not already hanging out in #documentcloud... here's the log of this afternoon's Ember/Backbone politics discussion.
12:21 PM <wycats> jashkenas: hey
12:21 PM <wycats> jashkenas: I'm sorry
12:21 PM <wycats> how would you like me to describe backbone?
12:21 PM <wycats> let's work this out for once and for all :)
12:21 PM <wycats> I'm definitely not intentionally saying incorrect things about backbone
12:22 PM • knowtheory gets out popcorn
12:24 PM <jashkenas> don't worry about it too much -- I'm just not terribly pleased with backbone being continued to be used as the strawman...
12:24 PM <wycats> jashkenas: I am worried about it a lot
12:25 PM <wycats> jashkenas: what particularly am I saying that is unfair?
12:25 PM <jashkenas> If we're going to continue making intentionally slanted direct comparisons, then perhaps we should just add "Why Ember and not Backbone" and "Why Backbone and not Ember" sections to our respective sites ... so folks can at least read both sides.
12:26 PM <jocafa> do something like this: http://jqueryvsmootools.com/
12:26 PM <jashkenas> I'll have to listen to it again, if you'd like me to find all the specific bits -- and can't at the moment.
12:26 PM <jashkenas> Perhaps later this afternoon.
12:26 PM <wycats> jocafa: I did not enjoy that site :p
12:26 PM → myobie, Cromulent and andrewle joined
12:27 PM <jashkenas> The main point is that all of the specific bits that you call out as limitations of Backbone, that Ember tries to address -- are all there willfully (at least the ones you mentioned in the podcast).
12:28 PM <knowtheory> -1 on a backbone vs ember site imo
12:28 PM <wycats> jashkenas: of course that's true
12:28 PM <wycats> that doesn't make them not limitations, right?
12:28 PM <jashkenas> It's Backbone's take that Ember's more complex data binding model, intermediate controllers, run loop etc. ... are all interesting approaches, but are *not* actually helpful in building a real site.
12:29 PM <jashkenas> What's the the points of view diverge.
12:29 PM <jashkenas> sorry.
12:29 PM <jashkenas> That's where...
12:29 PM <andrewdeandrade> TBH, I don't think that each framework needs to make an argument why this than that on their respective site. Other developers will blog about it when they need to make that decision. I've seen at least three different articles comparing js mvc frameworks.
12:29 PM <wycats> jashkenas: I find it difficult for backbone developers who have not tried Ember to make that argument, when many Ember developers who come from previous attempts at backbone disagree
12:29 PM <andrewdeandrade> my favorite comparison was Addy Osmani's github repo with a Todo app built in each framework
12:30 PM <jashkenas> And if you present it in that way, I think it's fair to draw direct comparisons.. but that's not the way I hear you presenting it.
12:30 PM <wycats> in other words "*not* actually helpful in building a real site" is something that people who used both backbone and ember disagree with
12:30 PM <andrewdeandrade> wycats: it's how you present the limitations.... for backbone.js they are philosophies
12:30 PM <jashkenas> wycats: and I find quite the opposite -- self-selecting sample pools, as you'd expect.
12:31 PM <wycats> jashkenas: you have a lot of people who wrote entire apps in Ember, then went to backbone and say that Ember's approach was completely useless and superfluous?
12:31 PM <wycats> obviously, people who dabbled in one or the other aren't useful in answering the question
12:31 PM <andrewdeandrade> wycats: backbone.js' philosophies are more inline with the philosophies in the node.js community than in the rails community.
12:31 PM <jashkenas> yes. I don't know of a *lot* of people who have tried both in anger.
12:31 PM <jashkenas> but the ones who have.
12:31 PM <wycats> jashkenas: so then it's fair to say that for *some* people, Ember's approach is overkill
12:32 PM <wycats> and those are the people you know
12:32 PM <wycats> but you're saying it like an absolute
12:32 PM <wycats> it's ALWAYS overkill
12:32 PM <jashkenas> likewise, people who just drink the @wycats kool-aid aren't useful in answering the question, as tasty as it may be ;)
12:32 PM <wycats> jashkenas: trolololololol
12:32 PM <wycats> jashkenas: backbone is 600 lines of code
12:32 PM <wycats> jashkenas: the idea that there are things missing in it that are common should not be controversial
12:33 PM <jashkenas> Ah -- but I don't ever say that, especially not in interviews ... and definitely not without mentioning the couterpoint view.
12:33 PM <knowtheory> Yeah i think that jashkenas's point was that you're picking on a group that self-selects, and he could do the same equally.
12:33 PM <wycats> jashkenas: JS Jabber is not an interview
12:33 PM <jashkenas> podcast.
12:33 PM <wycats> knowtheory: my point is that since our arguments are different, his position requires 100% and mine doesn't
12:33 PM <wycats> jashkenas: podcasts are basically jabbering
12:33 PM <wycats> harder to stay in control of everything you say week in and week out
12:33 PM <wycats> anyway
12:33 PM <wycats> my argument is:
12:33 PM <jashkenas> anyhow, gotta run to a meeting. back in a bit.
12:33 PM <wycats> "in some complex cases, Ember's approach will pay dividends"
12:33 PM <andrewdeandrade> I haven't used ember.js myself, but I think the best explanation for people is drawing upon comparisons with past frameworks. "If you like how rails works, you'll probably like how ember.js works. If you find that convention over configuration gets in your way, you'll like how backbone.js works"
12:34 PM <wycats> your argument is
12:34 PM <wycats> "it is never useful"
12:34 PM <andrewdeandrade> i.e. present it from the point of view of a "developer value system" instead of comparing features
12:34 PM <wycats> so you finding a few people who find it as overkill is less useful than me finding a few people who find it useful
12:34 PM <wycats> andrewdeandrade: I think that's fair
12:35 PM <wycats> andrewdeandrade: I doubt that Rails/Backbone evangelists would agree with that argument
12:35 PM <knowtheory> wycats: that doesn't sound quite like the case you're making incidentally. There's a difference between saying "you should use ember over backbone because ember has advanced bindings" and saying "If you find backbone's facilities for bindings inadequate, you should use ember"
12:36 PM <wycats> knowtheory: I would argue that they are often inadequate
12:36 PM <wycats> and often error-prone
12:36 PM <wycats> not that they are ALWAYS inadequate
12:36 PM <wycats> jQuery is often not inadequate
12:36 PM <andrewdeandrade> It's really all about values. Occasionally I get frustrated by things backbone.js doesn't do and occasionally I get frustrated by things rails does that are hard to undo. My personal preference is to have a framework not do something and implement it myself than have a framework do something and figure out how to do the opposite. That's me. I know people who feel differently
12:36 PM <wycats> jQuery has evented facilities
12:36 PM <tbranyen> save all this for the conference!
12:37 PM <tbranyen> thunderdome :D
12:37 PM <wycats> tbranyen: nah… gotta figure out what jashkenas is comfortable with so I don't make an enemy accidentally :P
12:37 PM <tbranyen> wycats: unless you're a dog person i don't see that happening
12:37 PM <knowtheory> wycats: gonna be at backboneconf? :)
12:37 PM <wycats> knowtheory: speaking, yeah
12:37 PM <wookiehangover> THERE CAN BE ONLY ONE
12:37 PM <knowtheory> nice.
12:38 PM <andrewdeandrade> wycats: I don't see why would they disagree with that. Philosophically the development of rails and backbone.js has been very different
12:38 PM <edwardbc> tbranyen: anything wrong with dogs?
12:39 PM <andrewdeandrade> backbone.js development has been cautious about including what isn't code (like node.js development) and rails development has been an eager adopter of new ways of doing things (e.g. sass and coffeescript inclusion by default)
12:39 PM <wycats> andrewdeandrade: lots of people who love Rails have drunk the jashkenas cool-aid (BAM)
12:39 PM <jashkenas> ok -- meeting postponed briefly.
12:40 PM <andrewdeandrade> wycats: i don't dispute that, but you do see that the design philosophies are very different
12:40 PM <jashkenas> wycats: in terms of not getting my goat, the main thing is just to put in a preface while you talk about it ...
12:40 PM <wycats> I doubt Rails/backbone adherents would be willing to accept that Backbone differs philosophically from Rails
12:40 PM <wookiehangover> wycats: to wit, pre-asset pipeline IMO jammit is by far the best solution
12:41 PM <wycats> "if you like Rails, you'll like Ember" is not something Backbone folks in Rails would agree with, and I'm not even sure Jeremy would
12:41 PM <jashkenas> feel free to say backbone is always or often as inadequate as you like ... just mention that the backbone opinion is that its that way for good reasons, and have similar critiques of ember.
12:41 PM <wycats> sure… no problem
12:42 PM <wycats> my style is to make my position as strongly as I can, and let someone with the opposite position argue back -- unfortunately, there is nobody willing to take the strong Backbone position on JS Jabber
12:42 PM <andrewdeandrade> i didn't mean "if you like rails, you'll like ember"... I meant "if you like the convention over configuration way that rails handles things, you'll like ember"
12:42 PM <wycats> andrewdeandrade: now you're just parsing words, no?
12:42 PM <wycats> people like Rails because of CoC
12:42 PM <andrewdeandrade> backbone.js isn't convention over configuration
12:42 PM <wycats> end result: my normal style makes me look like I'm steamrolling Backbone
12:42 PM <jashkenas> right -- which is a fine style as long as you make that clear. I think that in many circles (Ruby at least, less so with JS) wycats' words are taken as gospel.
12:42 PM <wycats> andrewdeandrade: then if you like CoC, which Rails people do, you should be disappointed in backbone
12:43 PM <wycats> jashkenas: that is obviously not the case ;)
12:43 PM <wycats> or serializers would be in Rails
12:43 PM <jashkenas> oh, did they get blocked?
12:43 PM <wycats> yeps
12:43 PM <jashkenas> on what grounds?
12:43 PM <knowtheory> wat
12:43 PM <wycats> he prefers the jbuilder API
12:43 PM <wycats> DHH
12:43 PM <jashkenas> ah, interesting.
12:43 PM <jashkenas> real meeting now.
12:43 PM <wycats> my argument is that consistency is important when talking to clients
12:44 PM <wycats> and that hand-crafting JSON is not a win, especially in the CoC world of Rails
12:44 PM <wycats> anyway, DHH gets to win
12:44 PM <wookiehangover> wycats: that's interesting
12:44 PM <wycats> but if there were as many kool-aid drinkers as you think, it would be in
12:45 PM <wookiehangover> cause we spend a lot of time working with presenters these days, but it always feels silly hand-crafting JSON
12:46 PM <wycats> wookiehangover: confirm
12:46 PM <wycats> wookiehangover: serializers are basically presenters for your JSON
12:46 PM <wycats> with conventional rules
12:46 PM <wycats> you can specify in your ApplicationSerializer what rules should exist
12:46 PM <andrewdeandrade> wycats: in the CoC world I agree, but if you are not doing basic CRUD, then you want handcrafted JSON.
12:46 PM <wycats> andrewdeandrade: not necessarily
12:46 PM <wycats> serializers map onto REST, not CRUD
12:47 PM <wycats> if you have a REST client, consistency is still important
12:47 PM <phaedryx> is this what you're referring to? https://github.com/josevalim/active_model_serializers
12:47 PM <wycats> for Livingsocial, our Ember models map directly on Rails *resources*, which may or many not be backed by Rails *models*
12:47 PM <wycats> phaedryx: yessir
12:47 PM <wookiehangover> wycats: ya, we've ended up re-implementing something similar, +1 for getting in rails >_<
12:47 PM <wycats> documentation could be better
12:47 PM <phaedryx> wycats: awesome, thanks
12:47 PM ↔ Wolftrak nipped out
12:48 PM <knowtheory> yeah serializers ftw
12:48 PM <wycats> the main reason I ended up wanting this was that the easy ember pattern is: { posts: [ { id: 1, comments: [ 1,2,3 ] }, … ], comments: [ { id: 1, … }, … ] }
12:48 PM <wycats> and doing that in Rails is annoying
12:48 PM <wookiehangover> wycats: I didn't know you were consulting for livingsocial, I know a couple folks here at their boulder office
12:48 PM <wycats> especially when auth is involved
12:48 PM <wycats> I wanted a separate object to control it
12:50 PM <myobie> I am curious on your all's opinion of this way of using views: https://gist.github.com/1731369
12:51 PM <myobie> I would prefer a way for the top level element of my template to become the `el` property of the view when it's rendered, but I'm not sure of the downsides of doing this?
12:51 PM <myobie> (thanks for any opinions, comments ;)
12:51 PM <andrewdeandrade> wycats: I'm not that familiar with serializers so I can't really offer an opinion. Personally I started with javascript and moved to rails so I don't know how all the parts work and all the resources that are available.
12:53 PM <wycats> andrewdeandrade: no problem
12:55 PM <andrewdeandrade> wycats: I think part of the appeal of backbone.js and the reason it was successful early on is because (1) it's small so the learning curve was small and the investment to get into it was low when all the other options looked riskier; (2) it's still very unclear how the relationship between the server and the client will turn out
12:57 PM → skylamer` and k3VB6u4d joined
12:59 PM <wycats> andrewdeandrade: I don't agree that the learning curve is small
12:59 PM <wycats> andrewdeandrade: the surface area of the API is large
1:00 PM <wycats> andrewdeandrade: I agree on (2)
1:02 PM <jashkenas> wycats: back, if you've got more questions..
1:07 PM <wycats> jashkenas: are you sure you wanted to take the absolutist "Ember is never useful" position?
1:07 PM <jashkenas> no -- I definitely don't take that position.
1:07 PM <jashkenas> I take the same one you do ;)
1:07 PM <knowtheory> wycats: told you :P
1:07 PM <jashkenas> usually not useful.
1:08 PM <jashkenas> often not what you're looking for ... ;)
1:08 PM <jashkenas> will get you in trouble in many places.
1:08 PM <jashkenas> etc.
1:08 PM <wycats> here's what you said: "It's Backbone's take that Ember's more complex data binding model, intermediate controllers, run loop etc. ... are all interesting approaches, but are *not* actually helpful in building a real site"
1:09 PM <wycats> do you want: "It's Backbone's take that Ember's more complex data binding model, intermediate controllers, run loop etc. ... are all interesting approaches, but are *not* usually helpful in building a real site"
1:09 PM <jashkenas> sure, that's better.
1:09 PM <jocafa> maybe the differentiation is "site" vs "web application"…?
1:09 PM <wycats> seems ok… more reasonable to have an argument on those terms
1:09 PM <wycats> jocafa: nah
1:09 PM <wycats> backbone apps are apps
1:09 PM <wycats> not sites
1:09 PM <knowtheory> jocafa: there are strong and weak claims on both sides.
1:09 PM <wycats> sites are brochure sites
1:09 PM <jocafa> *nod*
1:09 PM <jashkenas> yes -- we're both talking about apps here.
1:09 PM <tvpmb> ...definitely make that distinction...backbone is for an app, not a site.
1:10 PM <wycats> knowtheory: I don't ever make the claim that backbone is useless for simple'ish apps
1:10 PM → colinsullivan and ernestas joined
1:10 PM <wycats> jashkenas definitely does make the claim that ember is useless for complicated'ish apps
1:10 PM <jocafa> yeah, i think clarifying by saying "app" instead of "site" could make a difference in how the statement is taken
1:10 PM <wycats> or at least, way more trouble than it's worth
1:10 PM <wycats> I used to be the guy trying to convince jQuery people to write evented code and use jQuery.data() on plain objects more
1:10 PM <jashkenas> wycats: I don't make that claim when I talk about backbone -- that's my point.
1:11 PM <jashkenas> When I do a backbone talk, I don't usually mention Ember.
1:11 PM <wycats> jashkenas: lifestyles of the rich and the famous
1:11 PM <wycats> when you're on top, you don't punch down c/d
1:11 PM <wycats> :P
1:11 PM • knowtheory grins
1:11 PM <jashkenas> When you do an Ember talk, I've heard you talk about every feature in the context of how backbone is doing it wrong.
1:12 PM <wycats> I think you went to one of my Ember talks
1:12 PM <wycats> one of my least prepared Ember talks ever
1:12 PM <jashkenas> eh, I've heard other folks tweet the same sentiment.
1:12 PM <wycats> also, I saw you in the audience and was trolling a bit :P
1:12 PM <wycats> jashkenas: I for sure mention backbone in ember talks
1:12 PM <wycats> just like DHH mentioned JAva
1:13 PM <wycats> Java*
1:13 PM <wycats> early on
1:13 PM <wycats> jashkenas: here's the thing
1:13 PM <wycats> the features you say are "useless"
1:14 PM <wycats> are actually selling points of ember
1:14 PM <jashkenas> right, they're why you sell ember as a backbone++, and not as a sproutcore-- ;)
1:15 PM <wycats> jashkenas: so we need to explain where backbone falls short
1:15 PM <wycats> in order to explain why the features that you think are useless matter
1:15 PM <wycats> jashkenas: saying it's backbone++ isn't that far off from saying it's vapor++
1:15 PM <wycats> backbone is 600loc
1:15 PM <wycats> it's basically structure
1:16 PM <wycats> "here's how you should think about your app structure"
1:16 PM <knowtheory> wycats: you could make a positive case for Ember w/o reference to backbone though couldn't you?
1:16 PM <jashkenas> or you could just talk about Ember?
1:16 PM <wycats> I will retract my troll
1:16 PM <wycats> jashkenas: maybe
1:16 PM <wycats> but for instance, the problems of dealing with intermediate state during a single event handle are best explained with reference to some simpler system
1:16 PM <wycats> at jQuery Conf last year I did it vs. $().data()
1:18 PM <wycats> jashkenas: I also argue against silent sets often, because backbone is a good point of reference
1:18 PM <wycats> for a while I tried to keep it generic, but then I had to explain the context of what backbone is doing without mentioning backbone
1:18 PM <wycats> hard to do in a 30 minute talk
1:18 PM <jashkenas> $.data is an abomination ;)
1:18 PM <jashkenas> It's a great strawman, I understand the temptation.
1:19 PM <jashkenas> It's also an easy target when you don't have a countering voice in the room.
1:19 PM <jashkenas> But that doesn't mean I have to like it.
1:19 PM <tbranyen> hrm i recommend data to find list items in a list
1:19 PM <wycats> jashkenas: lots of backbone people use data
1:19 PM <wycats> search of stackoverflow ;)
1:19 PM <andrewdeandrade> jashkenas: As much as you may not agree with it, I think it is fair for wycats to make the comparison to backbone.js in his talks, because I imagine that everyone in the audience has the question "how does ember compare to this backbone.js framework that many people are using"
1:19 PM <tbranyen> andrewdeandrade: i think the point is they aren't comparable
1:20 PM <jashkenas> andrew: it's totally fair -- I just want him to inform about the differences, not misinform.
1:20 PM <tbranyen> can i use ember to power a subset of my blog in node?
1:20 PM <tbranyen> no?
1:20 PM <wycats> tbranyen: they are though… ember is saying that what people do with <x backbone feature> is better done with bindings, computed properties, or whatever
1:20 PM <knowtheory> Well, they have to be comparable. The question is whether what's the fair basis for comparison, or if there is one.
1:20 PM <wycats> tbranyen: you can absolutely use ember-runtime in node
1:20 PM <andrewdeandrade> jashkenas: if that's what the audience wants to hear it's fair to at least touch upon the subject (but probably not make the whole talk or most of the talk about it)
1:20 PM <tbranyen> wycats: slick, for some reason i was under the impression it was browser only
1:20 PM <tbranyen> my bad
1:21 PM <wycats> andrewdeandrade: I'm never like "here's why you should use ember instead of backbone" -- it's more like "here's why this feature in ember exists vs. the way you would do it in backbone"
1:21 PM <tbranyen> one counter down!
1:21 PM <wycats> jashkenas: you should be more explicit in telling me where you think I am misinforming -- I am happy to remove or clarify incorrect things from future talks
1:21 PM <tbranyen> wycats: i like how walmart used backbone to create thorax on top of it. i have no opinion of the quality of thorax, but its neat how this library can be built upon
1:22 PM <tbranyen> bones is another framework that achieves a specific goal
1:22 PM <tbranyen> that i don't think ember would really be a fit for
1:22 PM <tbranyen> it seems ember wants to be end-to-end
1:22 PM <wycats> not surprised that people can build things on top of backbone :)
1:22 PM <jashkenas> ok ... to be specific.
1:22 PM <tbranyen> well right, but i see that as an excellent feature
1:22 PM <tbranyen> coders be coding
1:22 PM <wycats> tbranyen: ember is an end-to-end framework built on top of more modular components
1:22 PM <tbranyen> yeah
1:22 PM <jashkenas> (although I think we've discussed these things before in person)
1:22 PM <wycats> for instance, ebryn wrote a titanium app and built ember-titanium
1:22 PM <andrewdeandrade> wycats: putting myself in the audience's shoes, I imagine one of two scenarios: (1) I don't use any framework and I want to know if ember.js is right for my needs, in which case you'd address when ember.js is the right tool for the job, or (2) I am already using ember.js and want to know more about it.
1:23 PM <wycats> andrewdeandrade: "when ember.js is the right tool for the job" is never how my talks go -- I talk about features that ember.js has, and why they need to exist
1:23 PM <wycats> I can either compare them to a hypothetical framework that looks like backbone (or spine, or whatever)
1:23 PM <wycats> or something concrete
1:23 PM <wycats> lately I've been going with concrete to save time
1:23 PM <jashkenas> the ember/SC run loop is touted as a feature, but the backbone perspective is that it's an anti-pattern: synchronicity-by-default is an important feature in client-side updates, not to be given up lightly. You can always defer if you want to defer.
1:24 PM <tomdale> andrewdeandrade: most people view ember.js through the lens of backbone
1:24 PM <wycats> jashkenas: specifically, rendering synchronicity?
1:24 PM <andrewdeandrade> I think getting into how ember.js vs how backbone.js is great for people implementing frameworks, but for end-users it's the why that matters
1:24 PM <tomdale> I'd say it comes up in 95% of conversations I have with people
1:24 PM <tbranyen> tomdale: yeah i can def agree with that
1:24 PM <tbranyen> doesn't mean its right :)
1:24 PM <wycats> jashkenas: Ember tends to use the run loop much less often than SC1
1:24 PM <wycats> tbranyen: I don't think it's a moral question ;)
1:25 PM <jashkenas> so you're admitting it! ;)
1:25 PM <wycats> jashkenas: there are different cases -- we defer rendering
1:25 PM <jashkenas> ember bindings for events are great, but computed properties are overkill.
1:25 PM <wycats> we defer destroying objects
1:25 PM <jashkenas> simple functions work better most of the time.
1:25 PM <wycats> jashkenas: computed properties are important if you propagate changes
1:25 PM <jashkenas> if you want to precompute a value, that's not hard to do.
1:26 PM <wycats> simple functions can't know whether to propagate the changes
1:26 PM <jashkenas> the firstName, lastName example is a toy.
1:26 PM <andrewdeandrade> tomdale: totally agree. most conversations are probably "I want to give my users a better experience. I'm thinking of using backbone.js but want to know more about ember.js. when is ember.js the right tool for the job"
1:26 PM <jashkenas> that's correct -- you listen for changes to the source data
1:26 PM <jashkenas> and render computed values.
1:26 PM <jashkenas> not hard.
1:26 PM <wycats> jashkenas: yes… a pattern that happens sufficiently often that it's good to abstract
1:26 PM <wycats> not hard, but tedious
1:26 PM <andrewdeandrade> discussing the features should be framed by the question "under what use cases will these features be the right tool for the job"
1:26 PM <tomdale> andrewdeandrade: exactly
1:26 PM <tomdale> jashkenas: if I may quote from the backbone 0.9.0 change log:
1:26 PM <tomdale> Two new properties on views: $el — a cached jQuery (or Zepto) reference to the view's element, and setElement, which should be used instead of manually setting a view's el
1:27 PM <wycats> computed properties are abstracting "listen for these three properties, and if any of them change, tell anyone listening to me that they have changed"
1:27 PM <jashkenas> no -- tedious in Ember -- where you have to specify dependencies.
1:27 PM <andrewdeandrade> no feature ever needs to exist but they might be very desirable for certain jobs
1:27 PM <tomdale> you know, if you had computed properties, you wouldn't make users think about the distinction here
1:27 PM <jashkenas> in the source
1:27 PM <wycats> jashkenas: you have to do the same thing in backbone
1:27 PM <wycats> but ad hoc
1:27 PM <wycats> you can skip the dependencies in Ember if you don't care about invalidation
1:27 PM <wycats> but that is basically never the case
1:27 PM <tomdale> :P
1:28 PM <wycats> jashkenas: do you disagree that the pattern "listen for these properties, and when any of them changes, trigger observers" is very common?
1:28 PM <wycats> and that those observers often render
1:28 PM <wycats> or trigger more observers?
1:28 PM <jashkenas> yes -- and you want to listen to *real* properties.
1:28 PM <jashkenas> computed properties are fake properties that you can listen to, but can't set.
1:28 PM <wycats> you can set them
1:29 PM <jashkenas> if you define a setter function?
1:29 PM <wycats> you can implement setting inside a computed property
1:29 PM <wycats> it's in the todos tutorial :P
1:29 PM <jashkenas> a whole level of complexity that you totally don't need.
1:29 PM <wycats> in most cases, they're abstracting the observer pattern so you don't need a setter
1:29 PM <jashkenas> anyhow, moving on.
1:29 PM <jashkenas> forcing your users to use logic-less templates is *incredibly* constraining.
1:30 PM <jashkenas> necessary for embers goals -- for sure.
1:30 PM <tomdale> jashkenas: ember supports any templating language you'd like
1:30 PM <jashkenas> But not an advantage for most apps.
1:30 PM <tomdale> you just don't get auto-updating
1:30 PM <jashkenas> right, exactly.
1:30 PM <wycats> jashkenas: what % of backbone apps use mustache, handlebars, dust, etc.?
1:30 PM <tomdale> we very specifically designed the views to be template engine agnostic
1:30 PM <jashkenas> it's all over the place, template wise, as you'd expect.
1:30 PM <wycats> jashkenas: yes, but you say "not an advantage"
1:30 PM <jashkenas> tomdale: what % of ember apps don't use handlebars?
1:30 PM <wycats> many of your users disagree with you
1:30 PM <randallb> hey knowtheory can i ask you a question in a pm as to not distract from this
1:31 PM <tomdale> jashkenas: all of ebryn's titanium stuff, for example
1:31 PM <wycats> I would guess most of your users disagree with you
1:31 PM <jashkenas> wycats: the majority of 'em don't ... and both can be served equally well.
1:31 PM <jashkenas> no, not the majority.
1:31 PM <wycats> you have done a census?
1:31 PM <wycats> mine was a guess -- you seem pretty sure
1:31 PM <jashkenas> just from memory.
1:31 PM <wycats> ok
1:31 PM <jashkenas> but it would be good to do.
1:31 PM <andrewdeandrade> i think it's all over the place and that's a good thing... everyone chooses what is best for them.
1:32 PM <wycats> andrewdeandrade: what do you use?
1:32 PM <wycats> jashkenas: anyway, the built-in templating is very explicitly a design choice… I don't think I ever bash backbone for supporting multiple template engines
1:33 PM <wycats> Ember's templating support is about as integrated as ERB in Rails
1:33 PM <andrewdeandrade> used _ templates first but was forced to switch to handlebars because of problems with Rails asset pipeline and the erb gem
1:33 PM <jocafa> I'm gonna write my own framework… with blackjack, and hookers.
1:33 PM <jocafa> --Bender
1:33 PM <wycats> seems good
1:33 PM <jashkenas> finally, and perhaps most importantly, embers tight coupling of handlebars-ui-with-very-specific-bindings-to-ember-models is trouble, performance-wise. You can't build the really intensive parts of your UI with that level of binding / dom tweaking.
1:34 PM <wycats> jashkenas: exposing the performance question to the user is trouble
1:34 PM <jashkenas> So backbone makes it easy to zoom in and out from granular updates to bulk-y ones, from aggregate views to very specific ones...
1:34 PM <jashkenas> Making it possible for backbone to be helpful in even high-performance JS UIs.
1:34 PM <wycats> over the long haul Ember will be able to heuristically decide how bulky to update
1:34 PM <jashkenas> sufficiently smart compiler, eh?
1:34 PM <wycats> jashkenas: :P
1:34 PM <wycats> jashkenas: I feel like the sufficiently smart compiler argument has actually won
1:34 PM <wycats> not sure why people make fun of it ;)
1:34 PM <jashkenas> so -- those are some of the specific comparisons from my point of view.
1:34 PM <andrewdeandrade> On one hand I find mustache to be more restricting, but on the other hand i like the handlebars helpers. so i consider the switch to be net neutral
1:35 PM <wycats> jashkenas: but anyway, we can easily have support for bulky updates
1:35 PM <andrewdeandrade> oops i mean handlebars not mustache
1:35 PM <jashkenas> And the kind of thing that I'd say if we were both in the room...
1:35 PM <wycats> I think 0.9.5 or 0.9.6 will have that
1:35 PM <jashkenas> I'm not asking you to say any of that...
1:35 PM <jashkenas> But at least mention that an opposing point of view does exist.
1:35 PM <wycats> jashkenas: no problem -- I always assume people just know that :P
1:35 PM <wycats> but sure
1:35 PM <wycats> I can be more explicit
1:36 PM <jashkenas> Thanks -- much appreciated.
1:36 PM <wycats> jashkenas: I have no interest in antagonism
1:37 PM <jashkenas> Earlier today, I was tempted to add some of those critiques to backbonejs.org -- would you like to have that happen, or would you prefer me to leave the comparisons alone?
1:37 PM <wycats> I think it's fair for people to make strong versions of their arguments, but I'm not interesed in pissing people off
1:37 PM <wycats> jashkenas: go for it
1:37 PM <wycats> we can add responses
1:37 PM <jashkenas> hah.
1:37 PM <wycats> jashkenas: it's a high-wire act
1:37 PM <wycats> I think it was good for DHH to throw a few bombs Java's way
1:37 PM <andrewdeandrade> wycats: that's a hard assumption except when people have some level of familiarity with the different options being discussed
1:38 PM <wycats> and I don't think he needed to say "of course, Java disagrees with me here" all the time :P
1:38 PM <tomdale> jashkenas: fwiw I have much respect for backbone
1:38 PM <wycats> same
1:38 PM <tomdale> jashkenas: you guys did what we could never do with sprout core 1
1:38 PM <jashkenas> well, what's good politics, and what's good engineering don't often align ;)
1:38 PM <jashkenas> I'd rather not play politician.
1:38 PM <andrewdeandrade> wycats: you're viewed as a authority on the subject (which you are) so people assume you're giving a completely balanced view
1:38 PM <jashkenas> andrewdeandrade++
1:38 PM <wycats> andrewdeandrade: seems weird, since I'm explicitly advocating a position
1:38 PM ⇐ PPaul (~paul@cmr-208-124-150-146.cr.net.cable.rogers.com) quit: Ping timeout: 244 seconds
1:39 PM <wycats> Obama is an authority on foreign policy, but nobody things everything he says is unanimously agreed to
1:39 PM <wycats> experts almost by definition take controversial positions
1:39 PM <wycats> anyway, I have no problem adding more caveats to what I sad
1:39 PM <wycats> say
1:40 PM <jashkenas> much appreciated.
1:40 PM <andrewdeandrade> wycats: I've only seen one of your talks, the RailsConf BR talk about a year ago and i think that the subject is so new to a lot of people that the newness of the topic at hand overwhelms most people in the audience that they don't get the impression that it's a particluar viewpoint
1:40 PM <wycats> jashkenas: I don't like playing politician, but I find that when I don't, other people smash me
1:40 PM <wycats> andrewdeandrade: hm
1:40 PM <andrewdeandrade> it's hard to perceive advocacy for one side or the other if you still are unsure about what the sides are
1:41 PM <wycats> I think bocoup's advocacy has a similar flavor to what you're saying
1:41 PM <jashkenas> wycats: I think you've got a pretty solid record at winning code-politics debates.
1:41 PM <andrewdeandrade> imagine watching a talk at the republican national convention when you don't know what republicans and democrats are or know very little about them.
1:41 PM <jashkenas> wycats: agreed -- I'd like bocoup to tone it down as well.
1:41 PM <wycats> jashkenas: I'm persistent
1:42 PM <andrewdeandrade> when you know both sides exist and have cursory knowledge and even an opinion on both, advocacy is obvious. but when you don't, you tend to assume authority not advocacy
1:42 PM <jashkenas> hey -- for what it's worth, I asked them to not name it "backboneconf" before the announcement ... but to pick a more inclusive name.
1:42 PM <jashkenas> and invite all the client-side-js-app folks.
1:42 PM <wycats> jashkenas: yeah
1:42 PM <wycats> they invited me :)
1:42 PM <wycats> I was confused
1:43 PM <wycats> backbone == client side MVC?
1:43 PM <wycats> seems weird bro
1:43 PM <jashkenas> amen.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment