Let's say that I was writing a closed sourced commercial piece of software which was to be deployed in the following situations: Windows Desktop App built on .Net, ActiveX control, Windows Netscape plugin, Mac Desktop App built on Cocoa, Mac Netscape plugin, Java applet hosted in browser. Would it be viable in terms of code sharing to write my model and controller classes in shared Ruby source files and use MacRuby, IronRuby and JRuby to integrate into the various runtimes? My view classes would presumably be written to use WPF on Windows, Cocoa on the Mac and whatever was appropriate on Java (SWT?).
From my point of view, the most important thing here is long term maintenance of the codebase, and it seems as though Ruby is as close to being a first class language on the three platforms I have to target: .Net, Cocoa and Java, as any language. Am I mistaken in this?
Second in importance is to avoid any viral license requirements on our code. I see where JRuby is released under various licenses; am I right to assume I can distribute binaries and the licenses do not apply to any Ruby files I write for my own application (as opposed to modifications of their framework.)
Has Ruby been used in any well known desktop applications? Has this been done before?
Hmmm....if the question is "How can I create a maintainable product using Ruby and make it available to all of these end points (web, desktop, and java-based mobile)?"
Then in my humble opinion, using ruby AND the three flavors (jRuby, IronRuby and MacRuby) would result in many more maintenance problems than not. You'd have to understand or at least employ experienced developers on all three platforms, and you'd spend a lot of time creating really abstract code, unless you plan to use ruby just for database access.
You're probably better off sticking with one of the platforms (Java & jRuby is probably the most portable option) and using its various packaging options to distribute the product.