Up until recently, I was a one-man dev "team", so I didn't get a chance to discuss these topics while developing our app, and I just went with what seemed right. I'll be thinking about your ideas moving forward. I especially like the bit about the global User object with flags! (In hindsight, it seems almost obvious there should be one!)
This fact that every team ends up doing things their own way, and many times re-inventing the wheel, is the reason why architectures like Marionette and Aura have appeared. Also coming from Rails, I prefer using a framework that helps with these decisions up front, so I'm seriously considering moving to, for example, Ember.js (which was still called SproutCore 2 when I started developing...). Interesting times ahead though,.. with so much exploration going on in the Single Page App "arena", it's really hard to tell how things will end up!
I would love to read about how you handled the "modular code" problem. I'm using Backbone and I find that there are many questions that are left for the developers to answer. With no conventions, every app starts doing things their own way, so even if I know Backbone, it might still be hard to work on someone else's code. Questions are: Where do we fetch data, in the view or in the controller? Do we keep a central "repository" of data for the whole app to use, or each widget maintains its own data? On page (re)load, do we favor one large call to the API or many small ones? How do we structure code in the filesystem? How do we handle authorization (ex. hiding links or entire modules from certain users)?
The "Top 5 desktop Linux distributions" chart (the first one) shows Ubuntu declining steadily from 2005 until now. There's no dramatic drop with the introduction of Unity in 11.04.
It DOES show Linux Mint becoming very strong in the past year all of a sudden, but, at least from that graph, it doesn't look like it was Ubuntu users who "flocked" to Mint.