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应用的产生,让我们一起关注这个未来的技术吧。