The frenetic innovation in web application frameworks may be frustrating for developers, but it's necessary.
What will it take to crown a winner for the long term?
Who's winning the web?
Let's be clear: there's a lot at stake. As EmberJS lead Tom Dale said to me:
"Remember what a big slice of the pie the web is. .NET is for Windows, Cocoa for iOS/Mac; winning the web is the whole darn world."
Because of the stakes, it's somewhat surprising that no framework has managed to dominate. Not for long, anyway.
After all, while new programming languages come and go, Java, C++, and C# have stuck around for eons, always at or near the top of the programming language dogpile, as Redmonk analysis shows.
Not so web application frameworks.
Sproutcore, the brainchild of Charles Jolley and developed by Apple and then Strobe (my former employer, acquired by Facebook), eventually faded as BackboneJS took over, with companies like LinkedIn getting behind it. Meanwhile, some of the Sproutcore developers left Strobe to develop EmberJS, which (over time) is displacing BackboneJS.
The rise of AngularJS.
This might be fine. AngularJS might actually be the Best. Thing. Ever!
At least, until the next cool thing comes along.
Can we slow this thing down?
Did we really need ReactJS?
Netflix thinks so. On its developer blog, the technology pioneer declares, "Our decision to adopt React was influenced by a number of factors, most notably: 1) startup speed, 2) runtime performance, and 3) modularity."
Netflix feels that ReactJS offers an excellent way to reduce network requests (improving startup time) and streamlining UI rendering (runtime performance), among other things.
Maybe they're right. But why couldn't Netflix have accomplished the same thing with AngularJS or EmberJS or...?
Innovate or die
Hence, the churn.
By some accounts, we're starting to settle on a few consistently innovative frameworks. (One Instructure developer believes that EmberJS has already won because, "It's always Ember v. somebody.") AngularJS is also a contender, clearly. Maybe the contender.
And now ReactJS...?
It's frustrating that we haven't arrived at any sort of stasis in web programming, but that may simply reflect how much we have left to do on the web. AngularJS recently caught flak for shirking backward compatibility in its 2.0 release, something I've argued is probably a net positive for innovation.
Why? Because, as Leroux intimates, we have barely scratched the surface of what web innovation can and, arguably, should be. We're going to have to break things on the way as we come up with more powerful ways to program the web.
Not everyone agrees. EmberJS co-creator Yehuda Katz argues that "Forcing everyone to rewrite everything every few years is the best way to slow things down." And so EmberJS has striven to ensure maximum backward compatibility. AngularJS, as noted, has not. At least, not to date.
But these strike me as necessary speed bumps.