Getting Involved with SproutCore

So after reading about how thick client web applications via SproutCore are in Apple’s future, particularly with the upcoming MobileMe web service, I decided to renew my once-torrid love affair with javascript and see what all the hubbub was about.

SproutCore is a javascript framework that aims to bring desktop gui programming paradigms to the web browser. It does this by giving you macros for various gui elements that get generated into html/js/css by the build tools. You can “bind” variables from the gui elements to javascript controllers, tying those bound variables to each other so that one is always in sync with the other. This simple feature leads to a surprisingly clean approach to display logic, where you can stop worrying about glue code and focus on behavior.

Note that SproutCore does all this on the client side with javascript. SproutCore doesn’t provide any server backend, but has a server proxy object that lets you get data from a backend server via AJAX. This leads to a nice separation of display logic from the data retrieval.

My first application in SproutCore is a reporting application meant to potentially replace our ghetto Microsoft Sql Server Reporting Services setup at work. A lofty goal, I know. I chose PlotKit as my charting library and immediately hit a showstopper bug in SproutCore’s interaction with PlotKit. After an hour or so of debugging with WebKit’s totally sweet debugger (get the nightly and run “defaults write com.apple.Safari IncludeDevelopMenu 1” from a terminal), I discovered the bug, developed a monkeypatch and filed a bug like a good OSS citizen.

Charles, the SproutCore guy, encouraged me to create a github project for my monkeypatch so I created sproutcore-plotkit and sproutcore-plotkit-sample and now I am officially an OSS contributer! =]