Lucy in the Sky with Ruby
October 27, 2009As you are probably aware, Microsoft is hard at work preparing for the birth of its very own version of the famous Ruby programming language for the .NET Framework. Like its ferrous older brother, IronPython, this nascent incarnation of Ruby(called IronRuby)is based on the Dynamic Language Runtime (DLR). In addition to other things, this means that IronRuby source code isn’t pre-compiled into byte code and encased neatly in a crunchy .DLL shell but is instead interpreted at runtime at the time the code is parsed.
There is a lot to say about the DLR, IronRuby, and dynamic languages in general, but right now I am mostly interested in exploring the transformative experience the recent exposure to this exciting new (to .NET) technology has touched off for me, and how that same experience may hypothetically play out in the larger community.
I once claimed that NHibernate, like Marijuana, was the gateway drug for .NET developers, a taste of an alternative perspective on software development that would inevitably lead to experimentation with and ultimately adoption of a different set of .NET tools and software development methodologies than they might otherwise have tried. Well, if NHibernate is Marijuana getting you in at the gate, then IronRuby is surely LSD, plunging you down the Rabbit Hole. For the uninitiated, and when taken with an open mind, the Ruby language presents an entirely different dimension of technical consciousness that is both beautiful and strange, and comes complete with its own culture and thriving community of passionate, intelligent people. An odd people; they call themselves Rubyists, speak of "The Ruby Way", and count among their sages highly enigmatic and brilliant eccentrics.
Metaphorical hyperbole aside, I do believe that Microsoft’s inclusion of a Ruby interpreter as part of its official toolkit (as well as the peculiar space made for dynamic languages in C# 4.0) will tear a hole in the sky big enough for adventurous .NET programmers to climb through and discover a fascinating new universe on the other side. As IronRuby matures over time and becomes capable of running more and more mainstream Ruby frameworks and libraries the boundaries that tie .NET programmers exclusively to the Windows platform will begin to dissolve. For example, rather than choosing between ASP.NET or ASP.NET MVC to front a service oriented .NET system, a .NET development team may be just as likely to choose Rails, or Sinatra, or some other pure Ruby framework via IronRuby, and thus Windows may begin to shift subtly away from requisite platform and towards deployment detail (with a little help from Mono) for certain applications, or application components, particularly web based user interfaces or middleware that rely on HTTP services as a backend rather than the database.
Of course, whether or not the .NET community at large will ultimately enjoy this experience depends quite a bit on the way in which IronRuby gets adopted. If use of IronRuby is relegated to being little more than a fancy way of scripting your C# application or automating routine development tasks, IronRuby’s mind altering, paradigm shifting potential will remain largely unrealized.
What Microsoft will ultimately get out of all this and how they will sell IronRuby is hard to say. On the one hand, significant exposure to the "Ruby Way" will certainly lead otherwise loyal .NET programmers to experiment with mainstream Ruby frameworks and libraries and begin to interact with the communities that support them. That means day trips to the Linux side of the river, and who knows where that will lead. Interbreeding and funny looking quad-colored penguin children probably. On the other hand, a truly first rate Ruby implementation on .NET may entice Rubyists to pack some .NET in their pipes from time to time, particularly if elegant, dynamic, convention based Ruby frameworks begin to emerge for compelling .NET technologies like WPF.
In any case, I myself am thoroughly enjoying this mind bending adventure. Apropos of nothing, for a physical demonstration of what it feels like to discover something like Ruby, or .NET, or SOA or EDA or whatever it may be, try a few 3D Stereo Cross-eye photos. I think the experience you go through when viewing these photos is a perfect, visceral representation of undergoing a technical paradigm shift: taking otherwise well known concepts and by blending them with some new, often subtle change in perspective and WHAM! suddenly realizing amazing new depth in the world along a dimension you never knew existed. Here is one of my favorites. There are hundreds of these on Flickr, but be careful they can be addicting.
Instructions on how to view these photos can be found here.







Recent Comments