Joyent Slingshot
March 22ndFor a while now, Magnetk has been engaged in developing ‘Slingshot‘ with Joyent. Slingshot is a platform which allows Rails developers to easily create hybrid web/desktop apps with ease and flexibility. There are some great office 2.0 applications out there, but you must admit there is but there is only so much you can do with just AJAX in terms of flexibility and performance. I love Google speadsheets, but they are slow and kind of clunky. It’s cool, but it’s very 1991.
We’re starting to run up against some painful limitations inherent in today’s web 2.0 experience. Most notable is the lack of any functionality and data accessibility while no internet connection is present. Also, there is no integration with other applications running on the end users’s desktop. Others out there are also in the process of trying to solve some of these problems - but we think we have a particularly powerful take on it. Briefly, I’ll answer the most obvious question people have:
“How is Slingshot different than Apollo or Firefox 3?”
Apollo is a great framework and certainly powerful. It will meet with great success. The Wikipedia entry describes Apollo as:
“A cross-OS runtime that allows developers to employ their existing web development skills (Flash, Flex, HTML, Ajax) to build and deploy desktop Rich Internet Applications.”
Slingshot has the same goals - with the key difference being we allow developers to employ existing applications with no re-write necessary. Additionally, as a bit of personal criticism that you might disagree with: Flash and related technologies don’t come easily to most programmers. ActionScript is super cool, but I’ve always found the Flash platform non-intuitive and confusing. Perhaps I’m dumb; but I know I’m not alone.
Firefox 3 adds the option of local datastores for applications to access in an offline mode, and it is certainly a step in the right direction. The major downside is that it requires developers to specifically tailor their application to this framework and design for it. With Slingshot, we wanted to make it really simple for existing applications to be dropped into our framework basically unmodifed and have them “just work.”
Slingshot is bit the same but a lot different than Firefox 3 and Apollo. Here are our major design goals:
- Let developers write hybrid desktop/web applications with Rails. Rails is elegant, well designed and allows for rapid development and deployment. It’s also much easier for a novice to learn than Cocoa or C# and it enforces some good decomp and design.
- Allow Rails developers to create more robust applications that have a comparable user experience to traditional desktop applications. Drag in and drag out of data/files/etc, for starters. In the future, filesystem access to remote data [like SftpDrive...]
- Allow Rails apps to run offline with simple and transparent data synchronization
- Lightweight and customizable - we want you to make the decisions about exactly how your app runs, not us.
How this it’s done:
We started by developing application shells for both Windows and OS X that provide a consistent and stable binary environment in which to run Rails apps. One nice thing about the Rails community is that most developers are already developing their application in “offline” development mode, usually on a Mac. Similar to the Locomotive framework on OS X or the Instant Rails application on Windows, we make it easy to bring your custom environment into a stable well defined shell that you can customize in any way necessary. Gems, binaries, auxiliary worker processes - whatever. You have full control.
On top of this, we have a customized browser that runs without any of the traditional dressing [address bars, buttons, etc] of a web browser. This allows much more intimate access to the application and to the host operating system. By controlling the browser and extending it, we can build a bridge into the OS. A developer can easily tie together existing data import<->export controllers within their existing application directly to normal OS data transport mechanisms like the drag and drop interface, the clipboard, and eventually the filesystem. This is all done without modifying any of the compiled code, and is OS independent. Also, your app is still available from any browser in the world, just like it was before.
A good example of why this is important can be seen by looking at Joyent’s Strongspace. Right now if you want to upload multiple files you browse for each individual file, one by one, hit upload and wait on a page until it finishes [unless of course, you're using SftpDrive]. With Slingshot, you grab a bunch of files, and drop them onto Strongspace, and they are uploaded in the background. That was easy. Drag out - it’s the same thing, but in reverse. Drag a file from Strongspace directly into Photoshop. Awesome.
Offline mode is cool, so is integration with traditional desktop apps, but it is all somewhat worthless without an easy way to synchronize data with your live server. Slingshot data sync is designed to be extremely powerful while still being lightweight and flexible. We provide controllers and code to handle data serialization & transport in both directions. As the developer, you merely need to aggregate all the ActiveRecord objects that particular user needs to have access to offline. Slingshot does the rest. Same goes for upsync, and we have similar methods built in for files and other data types. The only extra work for the developer is deciding who gets what.
We’re quite proud of Slingshot and are very happy to be working with the fine guys at Joyent. The goals of Slingshot are quite similar to the goals of SftpDrive. Both applications target facilitating a highly connected user experience with transparent and ubiquitous data access. SftpDrive is designed to provide a more networked experience for all traditional applications speaking the one API they all speak - the file system API. Slingshot takes centrally hosted applications that are accessible from anywhere in the world and make them available with or without an internet connection along with integrating them with powerful traditional applications.


March 22nd, 2007 at 11:05 pm
Great job. This makes me about 1000 times more excited than Apollo.
March 23rd, 2007 at 7:08 am
Sounds amazing! This sounds a lot like my original plan for Locomotive - but actually implemented and much better sounding!
Really looking forward to trying it out,
Ryan
March 23rd, 2007 at 7:38 am
Slingshot sounds great for rails developers. But I just thought I would clarifly a few of your apollo comparisons.
apollo is not just for flash. It is also designed to allow javascript/ajax programmers to write desktop apps.
flash is not just flash. Actually, the newest version of flash, which is what apollo is all based on, includes flex, which is a very easy programming environment for traditional programmers. In fact it is more like java or javascript than ruby, making a very easy to learn language. The MXML language also makes it incredibly fast to build UIs. But it is true that flash without flex is not intuitive for regular programmers. You just probably havent seen flex yet.
3, because apollo will be distributed through the flash platform, most users eventually have the runtime on their systems, giving developers the benefit of immediate runability of web sites with the benefit of most of the code already running. So I would say slingshot is a way for rails programmers to write desktop apps, which is valuable, but these would be more traditional apps with a regular download, than like the apollo where you, at some point, will be able to assume everyone has it.
March 23rd, 2007 at 7:56 am
Slingshot looks great - inevitable question; Any plans for a Linux version?
March 23rd, 2007 at 8:06 am
[...] Technical overviewScreencast [...]
March 23rd, 2007 at 9:06 am
[...] Une très bonne description du produit peut être trouvée ici et une démo vidéo ici Informatique , Techno [...]
March 23rd, 2007 at 9:50 am
Kudos on releasing Slingshot.
Though I have to wonder how runtimes like Apollo and Slingshot are going to improve the computing experience for users and future programmers.
There are already a wealth of open-source technologies for rapidly developing desktop applications. Ruby already has facilities for interacting with web services and it has bindings to a great cross-platform GUI toolkit: GTK (which in turn, I suspect, has better access to native OS widgets and chrome). Combine with Ruby2exe and the user doesn’t even have to install the interpreter. The options for the developer don’t end there… Python, Perl, and even PHP can be used in this way.
What will Slingshot do that will be better than the above approach?
March 23rd, 2007 at 12:21 pm
Technically, you dont have to re-write a flex app to make it run in Apollo. A few small changes and its done.
March 23rd, 2007 at 12:26 pm
[...] There’s a great product and technical overview of Slingshot here, and a screencast here. [...]
March 23rd, 2007 at 12:49 pm
[...] Eine hervorragende technische Übersicht von Slingshot gibt es hier, sowie ein Screencast wie es dann auf dem (Mac OS X) Desktop aussieht. [...]
March 23rd, 2007 at 2:18 pm
[...] Magnetk and Joyent have created Slingshot, a tool that enables you to do offline Rails applications. [...]
March 23rd, 2007 at 5:02 pm
Sounds interesting. One thing I’d like to know is does it run natively on Windows/Mac, etc. and does the source code stay readable?
I can definitely see the requirement for an application like slingshot, but companies may be reluctant to actually use it if their intellectual property remains viewable.
March 23rd, 2007 at 6:00 pm
[...] Slingshotについて、サービス面それに技術面の概観がここにまとめられている。スクリーンショットはこちら。 [...]
March 23rd, 2007 at 6:29 pm
[...] Magnetk and Joyent have created Slingshot, a tool that enables you to do offline Rails applications. [...]
March 23rd, 2007 at 6:39 pm
[...] Apollo, Firefox 3 e Ruby: tutti offline Tags: Adobe, Apollo, firefox 3.0, gran paradiso, Internet, rails, Sviluppo, web2.0 Magnetk e Joyent hanno creato Slingshot, un tool che permette ad una applicazione Rails di funzionare offline! Contemporaneamente è stata rilasciata la Alpha 3 di Gran Paradiso, ovvero FireFox 3, anch’esso pronto a sfidare questa nuova frontiera dell’offline. Possiamo affermare senza esagerazione, almeno da quanto si legge sulla rete, che è iniziata una vera e propria competizione che vede schierati Adobe Apollo, FireFox 3 e nuovi contendenti come Slingshot. [...]
March 23rd, 2007 at 6:45 pm
Hi there, what HTML rendering engine are you using ? Webkit? Gecko?
Thanks
March 24th, 2007 at 12:08 am
@Justin - WebKit on OS X, IE control on Windows
March 24th, 2007 at 2:55 am
Slingshot seems to be super cool option for Rails developers! But… Why IE?
March 24th, 2007 at 3:04 am
[...] . [...]
March 24th, 2007 at 2:17 pm
@DEkart : “Why IE?” -> Integration.
March 24th, 2007 at 2:17 pm
how is this different/better then dojo offline storage? if you visit the page it cache’s the js/html/css files. u edit it save it. then when u connected to the internet and visit the app it automatically sync’s back up.
when firefox 3 comes out i bet dojo and other js libraries will make that automatic so you won’t have to tailer your code for ff3 just update the dojo js library.
March 24th, 2007 at 3:28 pm
[...] Slingshot Another framework to push web apps to the desktop, in this case Rails. (tags: application web) [...]
March 24th, 2007 at 11:57 pm
[...] Я ранее упоминал Apollo от Adobe, так вот Slingshot обещает составить Apollo серьёзную конкуренцию. И дело не только в том что появляются возможности создавать настольные приложения так же как и веб, хотя по такому принципу давно уже работают различные виджеты. А в том что это позволит разработчикам приложений Office 2.0 выбить почву из под ног классических офисных приложений. Гибкости больше, а аргумент что интернет может быть недоступен теперь не проходит. Подробнее о технической стороне пожно почитать в блоге Magnetk, их партнёра. [...]
March 25th, 2007 at 12:25 am
[...] Я ранее упоминал Apollo от Adobe, так вот Slingshot обещает составить Apollo серьёзную конкуренцию. И дело не только в том что появляются возможности создавать настольные приложения так же как и веб, хотя по такому принципу давно уже работают различные виджеты. А в том что это позволит разработчикам приложений Office 2.0 выбить почву из под ног классических офисных приложений. Гибкости больше, а аргумент что интернет может быть недоступен теперь не проходит. Подробнее о технической стороне пожно почитать в блоге Magnetk, их партнёра. [...]
March 25th, 2007 at 12:32 am
[...] Magnetk - We’re just living off the land more detail on the Slingshot news (tags: Joyent Slingshot offline browser Firefox) [...]
March 25th, 2007 at 8:13 am
[...] Vendo o video fica mais fácil de entender a idéia. No blog dos criadores do Slinghot explica melhor também. [...]
March 25th, 2007 at 10:35 am
testing
March 25th, 2007 at 12:35 pm
[...] Genau richtig zur Veröffentlichung von Adobe Apollo, stellen Magnetik und Joyeur ihr Slingshot vor, was im großem Ganzen etwa die selben Ziele verfolgt wie Adobe Apollo. “A cross-OS runtime that allows developers to employ their existing web development skills (Flash, Flex, HTML, Ajax) to build and deploy desktop Rich Internet Applications.” [...]
March 25th, 2007 at 3:02 pm
[...] Continue for more info…. [...]
March 26th, 2007 at 1:18 pm
What perfect timing. We are getting ready to start working on Instant Rails 2, which is going to be cross-platform rather than just for Windows.
We are planning to implement the manager app as a Rails application. To do this we were going to implement a one-solution that would let us run the Rails app as a desktop application.
But now we can just use Slingshot!
March 26th, 2007 at 1:19 pm
That should have read “one-off solution”. :-(
March 26th, 2007 at 1:20 pm
So, wait… is this just an environment with an embedded web server and decoration-less browser widget?
If so, I’m not sure what is so innovative about it. This has been possible with Java for quite a while (years). There aren’t many people that do it, but it has been done. (Not to turn this into a Java v RoR thing… I’m not knocking Rails at all, I love Rails).
Or, is this something more impressive? Is it the additions to the backend framework that allows for syncing or file based storage? Am I missing something?
March 26th, 2007 at 1:24 pm
I still think you’ve got a great product, but I forgot to check the licensing first, and I now realize that this is a commercial product that I won’t be able to use for Instant Rails.
March 26th, 2007 at 1:59 pm
[...] Magnetk and Joyent have created Slingshot, a tool that enables you to do offline Rails applications. [...]
March 27th, 2007 at 12:04 am
[...] Une très bonne description du produit peut être trouvée ici et une démo vidéo ici [...]
March 27th, 2007 at 2:50 pm
[...] A quick tour is here and some technical insights are here. [...]
March 27th, 2007 at 4:44 pm
[...] En la página del anuncio hay más detalles, y en Magnetk hay más información sobre la tecnología. [...]
March 28th, 2007 at 3:15 pm
[...] A Magnetk e Joyent criaram Slingshot, uma ferramenta que habilita o uso offline de aplicações Rails. [...]
March 31st, 2007 at 4:20 pm
Are there any safeguards in place to prevent people from downloading and viewing the source code for these apps?
April 4th, 2007 at 9:30 am
[...] magnetk, the creators of SftpDrive, a tool I love, and joyent have developed a platform which you can use to build Ruby on Rails apps that can run both online and offline. It’s called Slingshot, and sounds to me like competition for Adobe’s Apollo, which allows you to build offline Flash applications. [...]
April 19th, 2007 at 5:46 pm
[...] Next is SlingShot from Joyent and Magnetk. I love Ruby on Rails, so this product is very interesting to me. They basically have taken the all-in-one desktop server approach of Locomotive and turned it into an application runtime. Its a great idea, and one that opens up a lot more power to the local application than Apollo. Downsides are a lot of potential security issues (no sandbox?), the fact that the entire source of your application is distributed to the world whether you like it or not, and the fact that it is limited to Ruby on Rails applications. More disturbing, though, is that it sounds like Joyent will be charging a royalty for distributing applications based on their runtime unless you are a customer for their hosting service. Maybe they just plan on charging a flat fee for the SDK. Either way, this is much less open than the Apollo model where the SDK and runtime are both free of charge. [...]
April 26th, 2007 at 12:32 am
[...] There has been quite a bit of buzz lately about Adobe Apollo. It’s a framework that allows you to, using Adobe dev tools, create Web-based applications that can also be run in an offline mode on your desktop. How does this work? The key is in the ability to sync online data to a local cache on your machine so it’s accessible even when you aren’t connected. Even more exciting is how Rails fits into all of this. Two points of interest for anyone wanting to develop offline Rails apps are Joyent Slingshot as well as this speech at RailsConf. Since I wasn’t able to afford the registration for RailsConf this year, I’ll just have to hope that a video is posted online ASAP after the event. If you are a Ruby on Rails developer and you aren’t excited about this, you may want to check your pulse to ensure that you aren’t a mindless zombie. [...]
April 26th, 2007 at 4:20 pm
This will be a tool I can definitely see employing for culinari.us
May 9th, 2007 at 1:12 pm
@ Jeff: any thoughts on bundling a renderer? fwiw, i really think it should be Gecko.
note: i’ve also posted this issue to the joyent blog and the slingshot mailing list (let’s discuss this there): http://lists.joyent.com/mailman/listinfo/slingshot
July 14th, 2007 at 6:17 am
[...] Joyent Slingshot, which we helped develop, has just been released to the public as an Open Source project under GPL v2. Along with Slingshot, Connector is being made available too. Grab the source, help make it awesome. [...]
September 14th, 2007 at 12:27 pm
Really nice article. Keep Up! very helpful for my work. Greatings
November 21st, 2007 at 7:04 pm
[...] various frameworks (JQuery, YUI, dojo, etc), and of trends such as AJAX on desktop apps (Adobe AIR, Slingshot, Silverlight, Prism [...]
December 8th, 2007 at 12:37 am
I gather always different opinions about web 2.0 and how to market with the different mindset of the \”new\” Internet. Will social interaction and networking really make the web different? Thanks for your thoughts on this!
February 4th, 2008 at 3:43 pm
have you watched the new Paris Hilton sex tape BBB…
Recently leaked footage of the new Paris Hilton sex tape…