Monday, November 16th, 2009
The tool is Mac only right now and the team interestingly created their own framework for taking a Web app and making it run on the desktop. Note the scrollbars and feel of the application when you run it. Tom talks about the architecture on the beta blog:
At first glance Atlas appears to be a typical desktop application. However, under the hood it’s actually a Cappuccino application. This article talks a little bit about how and why we took this approach.
When we set out to build Atlas, using Cappuccino to create a web application was the obvious choice. However, most developers prefer to work with files on their local filesystem for many good reasons, including convenience, security, and offline access.
We considered a number of solutions, including syncing with the local filesystem or integrating with source control, but packaging the Atlas application as a downloadable desktop app was the easiest solution for everyone.
So how does it work? Atlas functions remarkably like a typical Cappuccino web application.
Instead of a web browser Atlas uses a custom (though generic) native application built around WebKit to bridge to Cappuccino. The application handles things like creating native windows instead of the “inner” windows you see when loading a Cappuccino application in a normal web browser, and using the native menu bar.
Atlas spawns a small web server, which serves the Atlas application, Objective-J and Cappuccino, and other static resources, as well as an application server to handle backend functionality, such as reading and writing to the filesystem.
On top of Narwhal we have Jack, a web application platform modeled after Ruby’s Rack. Jack implements the JSGI portion of the CommonJS specification, and a lot more. To handle communication with the filesystem we use a Jack-based WebDAV server, called JackDAV. Atlas uses Cappuccino’s CPWebDAVManager class to talk to JackDAV.
Congrats to the entire 280 North team. They are all fantastic blokes and I wish them great success as they help Web developers with great and fun tools.
Posted by Dion Almaer at 1:19 am