The Road to SproutCore 1.0
I started work on SproutCore almost two years ago with the goal of making it easy to create speedy, rich, fluid applications on the web. We’ve had to really push the boundaries of what is possible in the web browser to deliver something suitable but I’m happy to say that we are almost there. SproutCore will go 1.0 this summer.
What does 1.0 mean?
SproutCore’s goal is to make it easy to build rich, fluid applications on the web. We’ll go 1.0 when this objective has been achieved. That means:
- Stable APIs. These APIs will drive the framework for a long life ahead.
- Models, Views, and Controllers. A full stack framework for not only managing widgets in your app, but managing the state.
- Automated Build Tools. Generating performance optimized JavaScript and HTML is no easy task. That’s why we’ve created this set of build tools.
- Documentation, Testing, Tutorials. Plenty of resources to ease you into development. Building web apps is a whole new world, and we need lots of materials to explain how to do it.
What Has Been Done?
A lot of changes have taken place already with SproutCore that you may not yet know about. Here are some of the more important ones:
- Google Code. We are moving the SproutCore SVN repository to Google Code. The new project is at http://sproutcore.googlecode.com. Of course, most people will never need to visit this site since SproutCore is now also distributed through the Ruby Gems system. The Google Code site will also be the location for all new tickets. I have migrated over all open tickets to this system already. Please file new issues there from now on.
- New Website. sproutcore.com is not going away. Instead it is becoming the home to a new website geared towards helping developers using SproutCore to build applications. Where the Google Code site will be your home if you are hacking SproutCore itself, if you are building an app using SproutCore, then sproutcore.com has much more to offer. This blog is located there, as well as documentation, sample code, demos, and links to the Google Group and other items that you need.
- New Build Tools. The new build tools, now hosted in the Google Code SVN is one of the biggest improvements I’ve made to SproutCore recently. Not only are they faster and more consistent, but they make it brain dead easy to build fast loading web applications in a flash. There are entire books written about how to optimize the packaging and loading of resources on your web page, but with these build tools you don’t need any of them because it does it all for you, all the while making it far easier to manage your own code as you work.
What’s Left To Do?
SproutCore has been evolving considerably over the last few months but mostly under the covers. I’ve intentionally held off on some of the more visible changes to avoid disrupting people who are already using the framework. In the next few months, though, you’re going to see some of the visible changes start to happen. Here is what I currently have planned (it’s a lot):
- Full set of widgets. SproutCore has a smattering of views right now to largely cover most of the common GUI controls you might need to build. Expect to see a few new widgets come into the fold before launch as well as a major cleanup of the APIs to make them more consistent across the board. I’m also going to update some of these APIs to encourage more use of controllers and less subclassing of views.
- Atom-REST Interface. Server interaction is a bit like underwear, it seems to be very personal to everyone. Most people end up writing their own server code, but I still want to provide an approach that makes it easy to interact with a service that requires less code. The current system is designed to work with a psuedo-REST oriented API that doesn’t exist anywhere in the wild. The new system will instead work with APIs built using a REST model, with an Atom-based file format or a JSON derivative of Atom. Unlike the current code, this system will work with existing APIs used by GData.
- General API cleanup. I’m going to scrub the API for SproutCore one more time before launch. Expect some major and minor changes here to make everything most consistent overall.
- IE Support. During the course of making some of these recent major changes, I’ve allowed IE support to lapse. This will be resolved for both IE6, IE7, and IE8 by the time we launch. I am also working towards building some tests that will make it easier to keep this code working.
As always, appreciate your feedback on this. Find me on the Google Group, IRC (#sproutcore, freenode.net) or on this site. Also, if you are interested in helping to hack at any part of the framework, please get involved! If there are things missing from my list that you think should be there for 1.0, you can help out there to. Hacking SproutCore on the Google Code site will tell you what you need to know to get started.

Discussion Area - Leave a Comment