Is This the Part Where I Announce a Press Conference to Discuss the Roadmap for my SDK?
Given the zero dollar budget and the fact that I don’t know people who do the press conference thing, I’ll just deliver the details here and now.
I was targeting today for the CloudKit release. On Friday evening, I began a code-a-thon of sorts to wrap up the last bits of the platform prior to release. The weekend was spent entirely at the computer, bachelor style, with pizza, coffee, soda, and various other forms of sugar in the shape of rabbits. Each remaining bit was scribbled on a white board with a plan to get to Monday morning with the goods.
Sometime on Saturday, I chose to take a risk and drastically reduce the hosting requirements for CloudKit apps (and give it a massive boost in performance as well). Knowing that this kind of change would be a pain for users after a first release (it included an ORM and web framework switch), the risk/reward ratio seemed about right. This part of the work is now done and I am back on track for wrapping up (again).
So, thanks for sticking with me, for being awesome, and for the encouraging comments and emails. Building free software is its own reward but having enthusiastic users makes it even better.
Sneak Peek
For the curious, CloudKit is coming together as an SDK delivered by way of a ruby gem. The installed gem will allow anyone to generate a small, fast web app that supports OpenID logins and OAuth API authorization right out of the box. Stealing liberally from my GWT on Rails plugin, CloudKit will keep data models in your web app in sync with the models in your distributed, online/offline desktop apps (built with the same HTML, CSS, and JavaScript UI on both sides). The center of it all is a tightly optimized bit of JavaScript known as the Application Context.
This Application Context is kind of like the MCP in Tron, minus the evil part. It knows when it is running in a browser or on the desktop and makes decisions about what to do when the network connection is unavailable. Local SQLite storage is used for both speed and network fault tolerance. Based on launch times, network state, and web service information, the wannabe MCP updates client apps to the latest version, migrates their data models to match the server versions, and synchronizes data that is stale on either side.
There is probably a day or two of work left at this point, to be distributed over spaces between the best full time job ever and my role as the luckiest husband and father ever. Let’s touch base again next Monday, shall we?



Hugh Bien wrote:
Sweet, are you using gears for the local db storage? If so I’m wondering if CloudKit is going to require the user to have it installed for their browser to use an application while online (since data will be stored locally for a speed bump).
Posted on 08-Apr-08 at 10:34 am | Permalink
Jon wrote:
@Hugh:
Right now, the context understands three states: browser, desktop online, and desktop offline. Thus, the desktop offline state uses the only available solution at the moment, Adobe AIR. (This will change once Gears works with Prism or once I get WebKit wrapped on all platforms with its local SQLite storage.) After the first CloudKit release is out, I will be adding a fourth state, splitting “browser” into “browser online” and “browser offline.” The browser offline state could then use Gears if the plugin was detected or local SQLite if HTML5 storage was detected.
Posted on 09-Apr-08 at 1:44 pm | Permalink
Chris Messina wrote:
Not that I should beg for new features, but what do you think about supporting Google App Engine for app hosting? ;)
And, how’s it coming now that it’s five days later?
Posted on 12-Apr-08 at 7:27 pm | Permalink
Jon wrote:
@Chris
The only real server side code is based around OpenID, OAuth, and a REST API for the synchronized objects. If there are interested Python hackers among us, I could build that option into the app generator that kicks of each CloudKit project.
Regarding the overall progress, this weekend has been excellent. OpenID and OAuth support have returned after breaking when I moved to a faster, lighter Ruby stack. The OAuth bit is especially exciting as a byproduct will be an updated OAuth gem that supports all of the new Rack-based Ruby frameworks (almost everything that isn’t Rails, which is already supported).
I’m still shooting for a Monday delivery of CloudKit as long as I don’t hit any more roadblocks this weekend.
Posted on 12-Apr-08 at 8:22 pm | Permalink
Why it’s a Good Time to Play with CSS Webkit Properties wrote:
[…] John Crosby […]
Posted on 26-Apr-08 at 12:13 pm | Permalink