13日,Joyent宣布基于GPL v2將Slingshot和Connector開源。Joyent Slingshot允許開發者將Rails應用程序部署為與桌面應用行為一致,可以在線或者離線(保持同步),可以拖拽,與所有其它桌面應用程序交互等。另外,Joyent還提供了Connector產品和一組可以與Joyent Slingshot協同工作的第三方應用程序。
Slingshot計劃在今年4月份發布一個可以在Windows和Mac OS X上基本可以工作的版本(但是,似乎目前還沒有發布)。Joyent稱Slingshot讓游戲換一種玩法。
Slingshot框架是輕量級且可自定義的,它讓Ruby on Rails應用可以通過透明的數據同步離線運行。它不限制你如何運行應用程序及同步哪些數據,這些由開發者自己決定。這樣,Slingshot可以讓 Rails脫離瀏覽器。它可以打破Web應用和桌面應用的(通訊)壕溝,同時它沒有失去Web應用在快速開發、部署和更新上的優勢。最近Google Gears和Dojo offline也提供了這種能力,它們離線工作的方式雖然不同,但是希望給用戶帶來的體驗是殊途同歸的,這些技術希望用戶能夠將在線應用當作桌面應用來使用,讓用戶忘記“線”的存在。雖然David Heinemeier Hanson曾經開玩笑地認為離線只有在飛機上才有必要使用,但是從目前的技術走向上來看,這門技術無疑會被更多地開發和使用。Slingshot以此作為一個出發點,希望進一步消除離線/在線應用的區別,所以它提供了協同工作的機制,希望幫助開發者更輕松地開發混合應用程序。近期在平臺競爭上火爆的Adobe的AIR、MS的Silverlight、Sun的JavaFX無不希望提供這樣的方案,這片市場被稱為RIA市場,其競爭已經如火如荼,而傳統的HTML/CSS/Javascript方式也依然保持強勁的發展勢頭,此時看到Slingshot這樣的產品開發人員應該更加感覺興奮,因為RIA的思路似乎依然在被不斷擴展。
Slingshot這個產品關注的是數據的交換和同步。這其實和RIA技術中的異步通訊一樣扮演者傳輸的重任,因為目前的RIA應用大都是以數據為中心的,所以在消除離線/在線應用時首先需要解決數據同步問題。Joyent在其Blog上介紹了Slingshot提供的數據同步的使用方法:
Joyent Slingshot是一個簡潔的同步在線和離線數據的輕量級方案。作為一個開發者你可以提供一個透明的ActiveRecord傳輸層,允許簡單的定義你的應用程序中哪些數據什么時候需要用什么方式進行同步。僅需要增加三十行左右的代碼,你的Rails應用程序就可以從客戶端向服務器同步數據。加上另外三十行代碼你就可以使用基于文件的數據同步了。框架提供了可以擴展的拖拽抽象層。可以掛入到應用程序已有的導入/導出機制中,而不需要修改任何應用程序的代碼。
最后,它允許開發者方便的部署更新和遷移(migrations),無論用戶離線了多久。
Slingshot讓開發者可以開發一種異步的CS應用程序,通過拖拽的方式同步數據,也可以通過文件的方式同步。并且從工作環境上Slingshot也提供了比較寬松的平臺,Joyent在他的Blog中這樣描述它的運行方式:
Slingshot如何工作呢?我們已經從Slingshot中移除了對操作系統二進制文件的依賴和沖突。進一步說,Slingshot允許開發者自己定義運行環境,安裝gems、plugins、二進制庫或者其它,我們都可以處理。Slingshot就像一個讓Rails應用程序運行的虛擬機。
總而言之,使用Joyent Slingshot你可以:
- 創建混合的Web/桌面應用程序
- 同步在線和離線數據
- 在線和離線應用程序中使用相同的代碼
- 輕松的部署和更新你的應用程序
- 在應用程序中拖拽導入/導出
Rubyinside在報道Slingshot開源的時候,將其比喻為37signals將BaseCamp產品開源,可見其重要程度。Slingshot的創新性在未來肯定會激發一些混合RIA應用的產生,讓我們一起關注這個未來的技術吧。