Backbone helps you to do the things you understand. Knockout let's you do things you don't necessarily understand.
Sometimes black-box approach is OK. Sometimes not.
I'm not familiar with Knockout, but it sounds like my experience when we were getting into the Flex framework at work a couple of years ago. We thought the data binding was so magical, but once I started to work with it, I had a very good mental model of how the MXML/ActionScript compilers were doing their magic.
It was much more pleasurable to work with when it was no longer magical.
I'm not familiar with either framework, but at least I can understand the intent (if not mechanics) behind Knockout code. With Backbone, it's like reading a whole different language.
Why? Because it can help improve the user experience (page payload, image sizes etc). There's a good reason why Google, Facebook, Netflix, eBay, Yahoo, BBC, Amazon etc. do it. It's also part of RFC 1945 (HTTP 1.0) and RFC 2616 (RFC 1.1). Not exactly a hack -- it's designed into the HTTP protocol since 1996.
To allow folks to read legible text. To ensure that elements aren't that small you tap on the wrong thing. To provide a reasonable user experience to your audience.
Eventual consistency, yes. What I'm saying is if a few pics disappear for a half hour while things resolve themselves, nobody is going to care... or likely notice.
It's not a bank.
By the way, I believe social networking is mostly bullshit, which is my "LOL" at the "social graph".
Eventual consistency however provides no guarantee of consistency unless it is backed by absolute local consistency on every node. Don't you run into CAP theorem problems otherwise?
Sure. But if a person or a photo data object goes missing ?
Facebook has different data stores for each of their features so I imagine the loss of a person would be pretty nasty as would a photo data object that multiple people have tagged or commented on.
My point is that when you are the size of Facebook, Twitter etc a loss of data in 0.001% of cases equates to a LOT of data and relationships.
I witnessed one guy implement an OAuth 2.0 provider completely wrong (he was accepting user credentials as client credentials, or something similar.) This guy was smart, and just couldn't understand the spec.
Upon reading the spec, it seemed that OAuth2 is really just some rough guidelines. Pick and choose what you need for the particular flow you're implementing.
I hope not. Every time one of those happens a gaggle of retarded politicians take their pants off, put them on their head and start running around enacting egregious laws.
It's been a business practice, certainly. And it's been part of law and lore since the dawn of history. The code of Hammurabi includes punishment for false witness:
http://www.jstor.org/stable/3153879?origin=JSTOR-pdf
In Dante's Inferno, the penultimate (8th) circle of hell is for the fraudulent (the 9th and innermost is for traitors -- another form of fraud, if you like):
http://www.wolfram.demon.co.uk/rp_dante_hell.html
Backbone... I just don't get it. It seems like there's too much complexity. I'm mainly a back-end developer, so perhaps it's just me.