The moat around the .NET programming community has long been difficult to cross from either direction. Developers from both sides see IronRuby, an open source implementation of Ruby for the .NET platform, as a possible crossing point.
To open those doors, IronRuby is designed to appeal to both the Ruby and .NET communities. "[Ruby developers] love it because it expands their worth," said Jimmy Schementi, program manager at Microsoft and a core member of the IronRuby team. "We're pretty sure we can say to Ruby developers that you don't have to turn down the job at the ASP.NET shop."
"On the other side are .NET developers. Part of [the appeal to them] is saying there are these new languages coming out and the .NET framework is powerful enough to support them" Schementi said." You can pick the right tool for the job."
IronRuby has been in development since 2007. IronRuby Version 1.0 Release Candidate was released in November, 2009, and IronRuby 1.0 RC3 was released March 12. New release candidates appear about every two months. IronRuby is built to run on Microsoft's Dynamic Language Runtime (DLR) along with implementations of other languages, such as IronPython.
IronRuby not yet in step with Ruby, but offers new options
While IronRuby can appeal to both .NET and Ruby communities, Ruby developers have not been quick to embrace it. One reason for this could be that IronRuby lags behind current Ruby trends. "It's still a ways off, I think, from keeping up with current Ruby implementations." said Bazinet.
"The Ruby standard right now is 1.8.6. That's the current version Microsoft is targeting" said Bazinet. He suggests, though, that 1.8.6 may soon be out of date. "The biggest framework used on Ruby is Ruby on Rails. The big push now is for Ruby on Rails 3.0, which requires 1.8.7 and above. [It] does not run on 1.8.6."
IronRuby can be made to work with earlier versions of Ruby on Rails. "Rails does run on IronRuby," said Bazinet. "It seems to run decently. I've been doing some testing."
IronRuby nevertheless offers some interesting use cases for Ruby developers. "The most important [use case], in my opinion, is Silverlight," said Friedman. "It is the first time ever that Rubyists can use their own language to develop RIA (Rich Internet Applications)."
"Next in line is IIS," Friedman continued. "Since IronRuby eventually runs on top of the CLR, it is capable of integrating with IIS very naturally. This capability enables Rubyists to deploy Ruby on Rails Web applications to IIS more naturally than before."
Still, some Ruby developers may be too far removed from the .NET programming environment to consider IronRuby. "For a lot of reasons most Ruby developers are on Linux," said Mike Gunderloy, a Ruby developer who formerly worked for many years with .NET. "I would guess that fifty-percent of Ruby developers don't even test their stuff on Windows."
For his part, Mike Gunderloy is happy to stick with Ruby. "If IronRuby was perfect it would not tempt me to go back to Microsoft," he said.
.NET developers use IronRuby for testing, look forward to growth
Ruby developers may not be ready to fully embrace IronRuby, but .NET developers have found several advantages to using the implementation. One prominent use case is using IronRuby to test .NET applications.
"The Ruby language has some incredible testing frameworks which do not have equivalents in the .NET framework, such as RSpec, Cucumber, and Watir," said Friedman. "As a result of the permissive nature of the language and the powerful syntax, the Ruby language is a natural choice to write tests in general, and with IronRuby, write tests for .NET code."
Ivan Porto Carrero, author of IronRuby in Action, agrees with Friedman. "It's easier to test with," said Carrero. He mentioned that Caricature, a project that aims to make interoperability between IronRuby objects and .NET objects easier, can be used to create a mocking framework to mock out .NET type classes.
Carrero also said that IronRuby can sometimes replace XML in.NET application configuration. "I could write an app in C# and keep the bits that need configuration in IronRuby instead of XML," said Carrero. "That gives me a nice DSL for configuration."
IronRuby has not fully matured, and there are still some issues to address over the coming months. "In the next year, there will be more focus on getting those external libraries to run on top of IronRuby," said Carrero. "There is a vast network of Ruby libraries that are proven to work."
Those closest to the implementation believe it is headed in the right direction. "Iron Ruby has improved tremendously in the last few versions and it is constantly getting better," said Friedman. "We're on the road to 1.0," said Microsoft's Schementi. "There's no target date yet, but we're getting close."
IronRuby a big step for Microsoft in open source community
Given a history of maintaining proprietorship over its products, Microsoft's decision to make IronRuby open source is notable. "The fact that we got the okay to do it is remarkable," said Schementi. "It's a big step for Microsoft's participation in the open source community."
Schementi believes that, though remarkable, the decision to make IronRuby open source was a sensible one. "We made IronRuby open source because Ruby itself is open source," said Schementi. "We thought it would be wrong to take Ruby and proprietize it. It was a very rational decision."
While community participation is encouraged, Schementi acknowledges that IronRuby is not a free-for-all. "As far as accepting contributions we're a little more strict to the core base," he said.
The way in which IronRuby is managed may give it broader appeal. "I have run into dev teams that refuse to work with open source projects and ones that work solely with open source projects," said Friedman. "I think that IronRuby appeals to both. It is an open source project that takes contributions from the community but it still has Microsoft backing it."
While it is a noticeable step for Microsoft's open source efforts, IronRuby may also affect the more established open source community around Ruby. "Having another Ruby implementation may drive the community to standardize what Ruby is," said Gunderloy. Having additional, well funded [implementations] are only going to be good for Ruby as a whole; for settling down and being more portable from platform to platform."