That's only one of the problems. Another problem is that by having all these smart people dedicate their time to solving the same problem over and over, we get stuck at the same level of abstraction. If instead of solving the same problem in slightly different ways, we iterate and build abstractions, we can make apps previously impossible to build in reasonable budgets and time, possible.
It doesn't need to be Sproutcore that we coalesce around. It could be Backbone.
This has already happened with jQuery. The JavaScript community coalesced around the framework, contributed API changes, bug fixes, documentation, unit tests, and as a result, we can operate and build applications without having to re-implement the same cross-browser, low-level code.
http://www.ted.com/talks/barry_schwartz_on_the_paradox_of_ch...
I consider jQuery an olive oil, SproutCore a dressing.
The social incentives in the JavaScript community are structured so that you get recognition for rolling your own library because you disagree with a naming choice. Forking or rolling your own should be a last ditch effort, not the first tool in your toolbelt.
Competition is great, but it must be balanced with collaboration. And I think that's what's out of whack in the JavaScript community.
It's the Backbone copycats that drive me crazy.