Slingshot Apologia: We Didn’t Design Slingshot for Planes

David Heinemeier Hansson recently opined that offline web applications ”[are] getting an undue amount of attention. Which is bizarre when you look at how availability of connectivity is ever increasing.” I’ll leave David to his opinions, and others, who believe that connectivity is not so pervasive, or ever will be, to theirs.

I believe an “offline” framework for web applications is interesting, especially when considering a much broader design horizon. We designed Slingshot to do so much more than just provide access to data on a plane.

First, we wanted to enable rich internet applications to be full peers of desktop software. When a developer spends the few hours to extend his application to work with Slingshot, the application can now receive drag events, and data can be dragged out of an application running in Slingshot. The web application is no longer a silo, but a full participant in a very rich, and mature, stack of software running on the client computer. Imagine how Slingshot could be extended in the future to include SIP clients and other desktoppy components allowing an application in Slingshot to do more.

Second, Slingshot removes the latency of the internet. Even when connected to the network, Slingshot manages data locally and then pushes the changes up to the server. Slingshot is aware of native OS connectivity and transitions between online and offline modes automatically.

Third, Slingshot allows developers to distribute processing to the edge of the network. Since the code runs locally, and Slingshot proxies the interactions with the “home” server, theoretically a developer can offload processing to the local device. Let’s use the dual-core laptops that are increasingly consuming our web applications.

Fourth, Slingshot is a server. It can be used to provide offline/intermittent access for a group of people. This is an extension of moving data and processing to the edge of the network. Declare synchronization is to happen for more than one person, maybe a whole office, and those people point their browsers to the copy of the application running on Slingshot on the local LAN.

Finally, if developers can use Rails to effectively develop applications that look and act like native desktop applications, we can begin to think about human interface guidelines that bring application design backing to the boring, and useful, world of common controls, buttons, sliders, windows, panes, etc. Today we live in a DOS world where every web application is different from the next.

We’ve been overwhelmed with the positive response to the Slingshot announcement. A number of great Rails applications are taking advantage of the early adopter program, and we’re porting Radiant to Slingshot as the example application that will ship with the Slingshot developer kit.

Update: here’s another reason why both running your application at the edge of the network and avoiding browsers (a slingshot’ed application is inherently single origin) makes sense.

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

26 Responses

Comment this article