by Luke Crawford

Background Availability
people rely more and more on web apps
internet access is not ubiquitous
even works on planes

Background Features
enable rich-internet-apps to be full peers
remove latency of the internet
distribute processing to the edge of the network
peer-to-peer server with advanced sync
encourages more desktop-like user interfaces

What’s slingshot
mac + pc desktop app
rails plugin
ruby + mongrel runtime
set of conventions
GPLv2 open-source software

Current uses
apple: instead of cocoa apps
farm app for cows
government internal app
joyent connector

(connector Demo)

slingshot isn’t 100% complete, some of the things they use on connector aren’t finished or resolved yet for more advanced apps.

Network
xml or http

Software
mac + pc desktop app
rails plugin
ruby + mongrel runtime
YOUR APP

radiant CMS
the perfect candidate for slingshot

rails plugin
syncs at the DB level
uses sqlite locally
provides hooks to write your own sync code
SlignshotSyncController#aggregat_data
can run other processes locally

slinging your app
five easy steps (+1)
install plugin
add create_at + updated_at columns
add routes
generate sync controller
implement aggregate_data
(packaging)

Drag
dropping a link initiates a background download of a file
currently only working in MacOSX

Drop
VM/SlingShotConfig.xml
define different post rules for different kinds of files
http post to the PostURI

Packaging
mac
standard .app package
distribute as a .dmg
customize .nib files in XCode
info.plist settings
pc
NSIS installer
Resource Hacker

What does slingshot not do yet?
sync conflict resolution
encrypt your code
domain-specific online/offline issues
package your app automatically
update itself + your Rails app code

(demo)

Resources
code, wiki, blog, mailing list:
http://dev.joyent.com/projects/slingshot