ironruby

IronRuby è su Rubyforge, un regalo o un esca della Microsoft?

Come promesso ironruby è realtà ed è ospitato da rubyforge, lo stesso hosting di Ruby, Rails e Typo

Il principale programmatore, John Lam ha reso disponibile anche uno screencast su come utilizzare il codice.
La licenza adottata è la Ms-Pl (Microsoft Permissive License), che come la GPLv3, è in attesa di essere considerata Open Source o meno.

Dal punto di vista tecnico il progetto è utile, dal punto di vista etico e legale non ho ancora un opinione.
Se una VM condivisa tra linguaggi dinamici (python, ruby, php, perl) mi sembra una cosa furba, condivido che aiutare Microsoft a diffondere delle tecnologie minoritarie (es. ASP.NET e Silverlight) potrebbe essere dannoso.

Considerazioni su il "ruby" della Microsoft

Guardando la babele dei linguaggi supportati dalle Gtk (lista non aggiornata) viene da mettersi le mani nei capelli. Anche le applicazioni per GNOME non scherzano: Evolution si può estendere un C e C#, Gedit in C e Python, altri in C++, Python, Perl, Java..

Il prezzo della libertà o di una scelta mancata

Ovvero:
(tante librerie Gtk/GNOME) X (i linguaggi supportati) X (Tipo di distribuzione) X (Piattaforma) = troppa ridondanza | spazio | risorse.

Fortuna che arriva la Microsoft ad aiutare l'open source e con IronRuby(IronPython,..) evita di mantenere tutti questi pacchetti, linguaggi e piattaforme.
Certo, le Gtk rimarranno in C, l'utilizzo del linguaggio sarà un po' diverso (così come le librerie), ma se Mono/IronRuby/.. fosse anche sicuro come prestazioni, brevetti e trucchetti, non vi verrebbe voglia di usarlo?

..o forse è sempre la solita storia del divide et impera?

Traduzione in Ruby dell'equivalente in IronRuby.

$ irb
irb(main):001:0> require 'gtk2'
=> true
irb(main):002:0> Gtk.init
=> Gtk
irb(main):003:0> w = Gtk::Window.new "Hello"
=> #<Gtk::Window:0xb73496b4 ptr=0x831a000>
irb(main):006:0> b = Gtk::Button.new "Ok"
=> #<Gtk::Button:0xb733a5ec ptr=0x82feed0>
irb(main):007:0> w.add b
=> #<Gtk::Window:0xb73496b4 ptr=0x831a000>
irb(main):008:0> w.show_all
=> #<Gtk::Window:0xb73496b4 ptr=0x831a000>
irb(main):009:0> Gtk.main