Atlanta Ruby Users Groupのミーティングで、Slingshotの話しが出たらしく、The Armchair Politician :: Joyent Slingshot a Disappointmentにまとめられていました。
そこで、下記のような利点と欠点がリストアップされていて、ほとんど同じ事を感じたので、ちょっと約してみました。(一部意訳、括弧内は私のコメント)
利点:
- オブラインモードの時に、ローカルキャッシュにデータを残せる
- Qt/GTK/Win32/Cocoaではなく、HTMLとrailsだけでローカルアプリケーションを作ることができる
欠点:
- 同期に関する問題
- パッケージ(ruby + rails + gems + アプリケーション + slingshot)で100Mを超える
- ブラウザのコントロールができない (戻るとか更新の事だと思う)
- PostgreSQL, MySQLなどを使うことができない
心配、見つけた潜在的問題、そして現実:
- 同時に複数のSlingshotアプリケーションを起動できない (全部3000番ポートで起動されるから これはすぐ直るはず)
- OSネイティブの機能をサポートしていない (Multi-platformを目指してるなら難しいのでは?)
- script/serverをホントに起動してる所やデータベースのコピーをローカルに持ってることに失望した (ほんとにそう思うw はじめはJRubyで仮想化っぽいことをしてるのかと思ってた)
これ以外に、利点としてドラッグアンドドロップのサポートが上げられると思う。これをブラウザでやるのは結構面倒だから。
特に一番最後のscript/serverを呼んでるところは、ほんとがっかりした。実物を見るまではJRubyで動いてて、サーバまでを全部Slingshot内で処理してるんだと思ってた。この方式だとRailsプロセスと、フロントエンドのプロセスが別々なので、Slingshotがそのプロセス管理をちゃんとできないと、本体は終了したのにRailsプロセスがゾンビで残ってる、っていう事になりかねないな。
ここから、プロダクトレベルまで仕上げるには、まだまだ道のりが長そうだけど、こういう製品はぜひ欲しいので、Joyentにはがんばって欲しい。
ゆきち
たぶん、これに対抗することになるのは、MozillaでいえばXUL Runnerになるかなと思うのですが、XULの場合、XPCOMというレイヤーを挟んで、マルチプラットフォームで使うべき物はそこで抽象化しています。ただ、そこにOSネイティブな機能をはさむこともできて、特定OSの機能を援用したツールを作ることもできます(実際、Firefox 拡張の一部は、Windowsでしか動きません)。Slingshotがどうなるかは知りませんが、そういう方法もあるということで。
masuidrive
実際Firefox3はXUL Runner的機能を標準装備するんですよね。
ほとんどの場合、RubyでGUI以外で互換性が問題になることあるかなぁ?あとはプロセス管理?
ああ、レジストリとかユーザ管理もあるか。でもそこはRubyが全部入ってるから、Win32APIモジュールとかで、どうにかならないかな?