Cappuccino : First Thoughts
Hello to all the readers coming from iDevBlogADay! I’ve started working on a project that is being built using Cappuccino, a web development framework modeled off Objective-c and Cocoa. After working with it for about 5 days I wanted to scribble down my first impression of the framework and tools.
I can’t help but be impressed with how thorough the Cappuccino folks have been in duplicating the Cocoa frameworks. Virtually all the foundation classes you might need are there as well as much of the Cocoa UI components. This is probably the greatest benefit to using Cappuccino is the sheer number of controls available out of the box without having to get into the nitty gritty of HTML and CSS manipulation required to get things like scrolling table view and outline views. Cappuccino keeps the API to very close to their Cocoa counterparts so using them is easy if you’re already familiar.
This is probably where Cappuccino is lacking the most at the moment. There is an Xcode plugin but I’ve found it’s crashy and unreliable in Xcode 4. So far the best set of tools I can find are TextMate and Xcode’s Interface Builder with XCodeCapp which converts the xib files to cib (Cappuccino interface files) on the fly. Coda has support for objective-j though I haven’t tried it out yet.
Debugging has its own set of challenges as well. It’s supposedly possible to set breakpoints in either firebug or safari’s web developer window, but I haven’t seen how to do that yet. So far console.log has been my best friend for debugging my application. Additionally, since there is no compiler you don’t get the benefit of compiler errors and warnings to help you along.
I’m hoping the state of the tools improves as Cappuccino chugs closer to 1.0. I’d love to see a full blown Xcode plugin with code completion, debugging, and building and deployment. That is a tall order of course, especially when Xcode itself sometimes feels more like a beta than a fully tested application. 280North, the team behind Cappuccino seemed to have something strong going with Atlas, a web based interface builder and IDE, but there hasn’t been any movement on that since they were bought out by Motorola a couple of years ago.
If nothing else it’s fantastic to be able to use my objective-c skill set and jump into developing a modern web application quickly using cappuccino. It requires you to develop your own workflow; it’s not as integrated as iOS / Xcode is. The tools, however, seem to be improving as the Cappuccino approaches 1.0. In all, I left web development because I didn’t like having to deal with both the application logic and HTML/css drudgery simultaneously to get anything done. Cappuccino solves that problem for me and has allowed to me to produce some promising stuff very quickly.