Archive for June, 2008

SproutCore, Cocoa, and The Idiomatic Web

Wednesday, June 25th, 2008

If you follow web technology news, you may have seen a number of postings about SproutCore over the last couple of weeks. SproutCore is the framework that Apple’s using for their MobileMe applications.

The “sync-all-your-devices-to-the-cloud” functionality is MobileMe’s core value proposition. The beautiful and rich web client experience is icing on the cake, and could have been implemented using a half-dozen existing JavaScript libraries.

Therefore, my intitial reaction to these “Cocoa apps for the Web” and “Flash Killer” reviews was that the revolutionary-ness of SproutCore was definitely overblown.

I figured that the hype would be over in a couple of days. Since articles like Why Objective-J, Cappuccino and SproutCore are completely changing the web app industry are still cropping up all over the place, I figured that I’ll weigh in on the discussion. I hesitated because I think that the techniques in question are very clever. Just not “Completely-Change-The-World-As-We-Know-It-Forever” clever

I’ll hedge a bit here here by saying that all bets are off if Apple leverages technologies like these to allow Cocoa developers to use Interface Builder and XCode to build web apps and/or build special stuff into Safari to natively render SproutCore markup as native Cocoa. But at the current time, I think that the hype machine is in overdrive.

SproutCore and Cappucccino extend Cocoa concepts such as Key-Value Coding (KVC) and Key-Value Observing (KVO), and it’s great to see these ideas brought to the world of web development in a big way. But I think that SproutCore and similar frameworks will have limited long term appeal to the broad web technology marketplace, considered niche players alongside the Java-based Google Web Toolkit (GWT). Methinks that web app architectures that rely on code generation will have limited appeal moving forward.

Keep in mind that I’m not anti-niche: Creating the framework that powers Apple’s MobileMe apps by itself is quite the accomplishment, and their approach is both novel and effective. I’m simply making the case that web app development in the large is not likely to follow MobileMe’s direction from a client engineering perspective.

I think that if we fast-forward the clock by a few months, we’ll see a backlash against these SproutCore-like frameworks, since they go against the grain of traditional web development approaches. Instead, they’ll be a call for a return to The Idiomatic Web, where semantic markup, stylesheets, and good JavaScript are top-tier building blocks, not simply implementation details below a new set of alternate client architecture abstractions.

The real widespread change will come to web app development when KVO/KVC approaches are employed in conjunction with idiomatic web frameworks like YUI.

When staking out the future of the Web, Evolution rather than Revolution will rule the day.