BT

JRuby Team members doubtful about IronRuby

by Werner Schuster on Jun 04, 2007 |
Microsoft's announcement of IronRuby, a Ruby implementation that runs on .NET has caused a lot of debates in the Ruby space. Ola Bini, JRuby team member, kicks of another one by expressing doubt about the feasibility of the project. He bases this opinion on one crucial problem behind IronRuby: the developers supposedly cannot look at Ruby's source code due to copyright or license issues. Another problem is Microsoft's refusal to accept outside code contributions. Ola explains:
I am going to make a bold statement here. Under the current circumstances, I don't believe it's possible for John Lam and his team to create a Ruby implementation that runs Rails within at least 18 months. And frankly, that's not soon enough. As I said above, I have all confidence that John can do great stuff if he has the right resources. But creating a Ruby implementation is hard enough while having all the benefits of the open source community.
Ola's solution is to focus on speeding up the work on a full Ruby specification:
The two points I want to make with this point is this: The Ruby community must damned well get serious about creating a good, complete specification and test suite. It's time to do it right now, and we need it. It's not a one-man job. The community needs to do it. (And yes, the two SoC projects are a very good start. But you still need to be able to run RSpec to take full advantage of them; and let's face it, the RSpec implementation uses many nice Ruby tricks.)
The specification effort is already going on:
 While Ola seems to believe IronRuby could become a full, compliant Ruby implementation, if only Ruby was specified in enough detail, Charles O. Nutter is pessimistic:
Having run the Ruby gauntlet and brought JRuby from not running anything to running Rails almost 100% perfectly (in just over a year, I might add), I will confidently say there's no way with current specs and tests that anyone could create an implementation of Ruby from scratch that will run Rails unless they can look at the existing implementations. I simply do not believe it's possible.
Charles also suspects a lack of determination on Microsoft's part:
This is a good friend's belief, but he's won me over: we don't believe Microsoft would ever willingly allow IronRuby to get to the point of running Rails, since that would directly compete with their ASP.NET server, software, and tool offerings. What would be the benefit to them of a free runtime running a free language implementation that runs a free web framework? Probably zero.
This is a surprising statement (to say the least) coming from a developer employed by Sun to work on JRuby. Sun employs two full time developers to work on JRuby and two more to work on the Netbeans Ruby tools. Yet, Sun won't see a single dime in return of this investment directly, since JRuby is an independent project (it's not a Sun project) and the Netbeans tools are free of charge. Actually, using Charles' reasoning, Sun would not want a JRuby capable of running Rails, because developers using JRuby on Rails won't use JSP, JSF or any other Java technologies. So, unless developers or companies use JRuby on Rails on Sun hardware or use Sun's software support services for running on Sun software, Sun doesn't earn any money from this effort. So, by Charles' logic, there shouldn't be four Ruby runtime and tool developers on the payroll. Yet there are.

Another flaw in this logic is the view that every developer using Rails on .NET must have switched over from ASP.NET, thus incurring a profit loss for Microsoft. But this is not necessarily the case. Switching an experienced ASP.NET  team to using a different language and  framework incurs retraining costs. The advantages from switching to Rails must be considerable for a particular project for that to happen. There is also the question, whether all .NET developers would see the benefit of this, when they can chose from a host of technologies from Microsoft. Aaron Erickson, a .NET developer, explains  his perception of the the Microsoft platform at the moment
Having spent the better part of 14 years doing Microsoft based development, there has never been a time where I was more proud to call myself a Microsoft platform developer. The stuff coming from Anders Hejlsberg and the C# team, let alone the stuff coming out with the DLR and Silverlight, is some of the best innovation this business has seen in years.
If more .NET developers think like this and are fully satisfied with the technologies and tooling that Microsoft provides, then there is not much chance of mass migrations from .NET tools to Ruby.

The group of developers that would drop their tools and switch to Rails are the same that did this on the Java platform, the people who ditched Struts, JSF and Co to work with Rails. This is a group that is either dissatisfied with the old ways of solving problems or developers new in the web space who aren't used to the old ways yet.
The availability of a full Rails version on .NET would ensure that developers interested in Rails could stay on the .NET/Microsoft software stack, and retain most of their experience (with Windows, IIS, Visual Studio, etc). If Rails is not available, then there's a chance that this group will wander off to use a Non-Microsoft stack for Ruby, maybe switch to JRuby on Rails on another Operating System and Web server. With a full Rails implementation, Microsoft can keep developers on the .NET/Microsoft software stack, and with good tool support, it could attract new ones. This results in a direct benefit for Microsoft: companies using Windows and Microsoft server software and tools will pay license fees for this software, not to mention support contracts or training courses. As for IDE support, Ruby in Steel already offers state-of-the-art support for Ruby and Rails in Visual Studio.

The general idea: making .NET more attractive for a wider audience can retain and maybe attract paying customers, without cannibalizing sales of other products.

Unconvinced about IronRuby's chances, Charles mentions another way to bring Ruby to the .NET platform:
Given these facts and the current situation, I'd say it's a better bet for us as a community to get behind the Gardens Point Ruby.NET Compiler project, which is already much farther along than IronRuby...plus it's real open source (you can contribute) and they can look at Ruby's source (and have admitted to doing so for at least the parser). I was wary/skeptical of Ruby.NET last year, but they now seem like the current best hope for Ruby on the CLR.
The Gardens Point Ruby.NET compiler project is an active project to create a Ruby to .NET bytecode compiler. It ships with an executable that behaves just as the ruby or jruby command line versions, but instead of interpreting Ruby Abstract Syntax Trees (ASTs), this will compile Ruby code to MSIL (the instructions set used on the CLR) before it runs.

Debates like this make the first release of IronRuby ever more interesting. John Lam, IronRuby's developer, recently mentioned  the first public release of IronRuby will happen at O'Reilly's OSCON,  July 23-27, 2007.

Hello stranger!

You need to Register an InfoQ account or to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Wow Charlie, why even go there? by Frank Cohen

Kind of a bizzare turn of events to have Charlie talking about Microsoft business motivations. I wonder why even go there? JRuby is an accomplishment by itself. That JRuby compiles Rails applications is outstanding. There's no reason to take anything away from that accomplishment. Not even to denounce a competitor.

I get to ask my one question to Jonathan Schwartz a year at the press conference at JavaOne. I've given up on asking why they continue to fund NetBeans when the world standardized on Eclipse. Their stock answer is "We believe in choice." I don't think so. I see Sun's motivation to deliver an exciting platform that has a whole bunch of technology approaches included. Their stated goals are to monetize the wide spread usage of the Java platform. So funding 4 engineers out of 15,000 on JRuby seems like a good investment.

I would be interested to learn a Microsoft explanation of how dynamic scripting languages fits into the Microsoft platform strategy.

-Frank Cohen
www.pushtotest.com

Re: Wow Charlie, why even go there? by Michael Neale

If you read what Charles said in context, it makes more sense. If you only read what is above you are reading Werner's grandstanding.

Slight differece by Zenrique Steckelberg

Theres a slight difference between Microsoft's languages like C#, VB and other implementations over CLI: the latter allow for an easier migration to/from other platforms. This argument can be used either way too, since people using migrated-to-CLI languages have an easier path to migrate to MS platform. Maybe that's MS reasoning behing IronRuby: once people come to .Net, the chance they'll start using other libraries and languages on it will end up tieing them to their platform. Worse than that: since Ruby doesn't have an official spec, they're free to add/change things "to make things easier to the developer", and create even more tie-in to the platform, like they tried to do with Java. Java has Sun behind it to defend against such attack, who's going to do it for Ruby?

IronRuby == J#? by Thom Nichols

With all of MS's restrictions on IronRuby, I hope it doesn't meet the same fate as J# -- a half-assed, half compatible implementation purely in an attempt to hold on to market share.

Does IronPython have these same copyright restrictions??

Re: Wow Charlie, why even go there? by Werner Schuster

What context? That's a bullet point in the list of arguments - there's some more text that talks about Microsoft's treatment of the NUnit and OSS in general, but has nothing to do with the business aspects. If this is supposed to be a conclusive argument for his opinion that MS isn't serious about IronRuby, then I'm not convinced (my arguments are in the article).

Re: Slight differece by Werner Schuster

Well, you're basically saying that MS want's to introduce a fork. But as the Java space has finally realized (since Java was Open Sourced): forks aren't really a danger.
Think about it: if IronRuby is 95% compatible to Ruby, why would people use it? If you have an existing Rails application, and it fails because of the missing 5%, then you'll stay away from IronRuby. I certainly would - there's nothing more annoying than trying to track down some weird ass compatibility problem. Not to mention that all this will wreak havoc on the reputation of IronRuby.

Now take the other side: IronRuby's 100% compatible to Ruby, but MS has added something.
- .NET specific Ruby Libraries: well, that's not a problem, is it? The JRuby community is busy creating JRuby versions of native Ruby extensions (eg. see rubyforge.org/projects/jruby-extras/ ) or Ruby wrappers for Java libraries. No problem here.
- IronRuby features for handling .NET constructs: well, again: try running "include 'java'" in Ruby 1.8.x and see what happens. Every Ruby implementation has some kinds of platform specific APIs or features right now - but it's not like you're forced to use it. They're there if you need them, and if you do, you'll hopefully make sure they're localized in some code and not spread throughout the code base.

So: as long as IronRuby is 100% compatible when running Ruby applications - I'd say it's fine.
If a developer decides to use any IronRuby or .NET specific features... well, we're all adults, aren't we?

Re: Slight differece by Zenrique Steckelberg

I agree, but what I am worried about is the real intentions that could be behind such changes/increments. Of course every company wants to keep people on their platform and thus drive revenue towards them, the difference is how much this affects their technical decisions, leveraging tie-in instead of platform's merit. MS is infamous for this kind of action in the past (see J#), being much more aggressive than Sun in this regard.

Re: Slight differece by Ola Bini

Werner, I really don't like the way this article is written. It seems to be not an article reporting the different points of view, but those same POV's viewed through your own personal opinions.

Just to nitpick, if you run include 'java' on either MRI or JRuby, it will fail in the same way.

My Motives by Charles Nutter

I am a member of the Ruby community first. I believe that Ruby should exist on as many platforms as possible, and those implementations should remain compatible with the reference implementation. I believe that it's impossible to do this in IronRuby with current specs and tests if you can't look at the reference implementation's code. Therefore, I don't believe IronRuby can produce a fully-compatible implementation given the current state of affairs. Since I would like to see Ruby on all platforms, I currently believe that backing Ruby.NET (which is further along, has already been running Ruby code and Rails tests, and isn't bound by corporate motives) is a better idea than hoping IronRuby will deliver a perfect Ruby implementation from scratch. And it seems Microsoft agrees, since they've licensed Ruby.NET so they'll have some reference code for implementing IronRuby. Perhaps this will be enough, perhaps not. I still believe they need to be able to look at an implementation that actually runs Ruby apps to go all the way.

Now let's assume they're able to surmount this obstacle and produce a compatible implementation. Maybe they'll go the extra mile to get Rails running, producing ActiveRecord extensions that use ADO.NET, YAML extensions to parse YAML, maybe even all the other extensions and libraries Rails needs along with quirky, sometimes counter-intuitive Ruby behavior. But theorizing about whether they'll put in that extra effort right now is practically useless. My personal opinion is that there's no business motivation for Microsoft to make Rails run...however, that opinion may be wrong if you consider that no Ruby implementation would ever be considered "done" until it can run Rails. But I will point out that no major Python apps run on IronPython, even though it's been released for well over a year, "open source", and of very high quality.

So then, what's missing here? I think the ball is in Microsoft's court. Those of us in the Ruby community that believe in OSS don't see what we're hoping to see from IronRuby. And I'm certainly not alone in this...others have blogged the same opinion before I did. I sincerely hope Microsoft decides to really embrace open source rather than paying it lip service...decides to fund and host open source projects rather than shared source projects developed in a vacuum, behind closed doors and source repositories, and restricted from accepting external contributions. I hope it for Microsoft's sake, for Ruby's sake, and especially...for IronRuby developers' sake. Because OSS isn't a one-way street.

Nutter's motivations are clear by Dan Tines

The JRuby team, especially Nutter, have laid their hand on the table. They absolutely hate IronRuby. Why wouldn't they? It takes away from JRuby. Now they've been reduced to FUDing IronRuby and trolling John Lam's blog. It's really quite pathetic. But at least they're out in the open now.

Re: My Motives by Dan Tines

"Those of us in the Ruby community"....Nutter would have us believe that he's somehow representative of the "Ruby community". He's not. He's representative of the JRuby community, and that's it. He's a pathetic, sad little man that can't be proud of JRuby without spreading venom on other implementations.

Re: My Motives by Charles Nutter

Dan Tines: I have absolutely no hate for IronRuby. I've talked and worked with John Lam in the past, trying to find ways we can cooperate. I already cooperate and work with the creators of all the other implementations of Ruby. I'm not tied to JRuby alone, and I've done nothing to prevent other implementations from succeeding. Indeed, I'm trying to help them succeed as much as possible.

What I do hate is the idea that IronRuby may end up a sub-par implementation of Ruby because of Microsoft's stance on open source. That fragments the community. Only by having a fully-compatible, fully-compliant implementation of Ruby on the CLR can Ruby's success be complete.

And as for whether I represent the Ruby community...I doubt you'd find any other Rubyists outside the JRuby project that would be excited about an incompatible IronRuby.

Re: My Motives by Aaron Erickson

@Charles: Microsoft has every reason in the world to see to it that they produce an implementation of Ruby that is as close as possible and compliant as possible.

You guys have created a great platform, with a great ecosystem of very smart people working on it. Microsoft, for what it is worth, seems to have moved beyond the J# days and learned from their experiences. When senior .NET guys go out and talk to .NET user groups - they are demonstrating often IronPython - as much as C#.

It is clear, however, that there are numerous core Ruby guys are fearful of what Microsoft is going to do with Ruby. And they probably have good reason to be - given Microsoft's history of "embrace and extend". In the end though, Microsoft has much more to gain by producing something that works with Ruby, rather than works against it. It is a language, not the internet. The latter was a core threat to Microsoft, the former is simply another way for developers to write software on the .NET platform.

I think the bit that gets me is the whole "Ruby is a community, not a language" thing. It smacks of mysticism - and creates a barrier to entry for those who can't or don't want to join that community. I think Ruby is important, and while I prefer static typing, I can see the other side's arguments, and am willing to let time and science decide for me. What really turns me off about the Ruby community is the smug cloud that comes from any concentration of Rubyists.

Re: My Motives by Werner Schuster

Dan,
I can't lett that pass: Charles has shown an incredible hand for diplomacy, particularly in reaching out to other languages for the JVM and talking to the teams of other Ruby implementations. I think the Ruby community and people interested in dynamic languages on the JVM do owe him a round of beers just for that.

Re: My Motives by Werner Schuster

Aaron,
About Ruby community:
I'm not sure I understand the issues with the word "community". Just as every language nowadays is useless without its standard library, a language is pretty bland without it's community. In the Java space, the "community" provided tools such Spring and Hibernate which caused Sun's 180 on JEE, not to mention all its other tools. Of course, this also includes members of a forum and bloggers, which (besides the occasional smugness) provide a ton of information and support that wouldn't be available otherwise.
A community also comes with its "authority figures", in programming language communities this usual means people who spend a lot of time thinking about the language, experimenting with it and adding major contributions. In .NET/C# these would be Anders Hejlsberg, Erik Meijer, ... er... well, I don't know .NET enough, but there are many. In the Java space, these would be Josh Block, Neal Gafter, James Gosling (I guess), maybe Erich Gamma or Bill Venners etc. In Ruby, these are Matz, Sasada Koichi, David Heinemeier Hanson, whytheluckystiff, PragDave etc.

Hmm... well... I can see that the term "community" might be a bit unclear and fuzzy for this. Suggestions for a better term for this? "Ecosystem"? "Environment"?

Re: My Motives by Aaron Erickson

This is the quote from Fowler's post that got me:

"My colleague John Kordyback pointed out that at the heart of all this is realizing that Ruby is not Yet Another .NET Language but a whole community and attitude to software development. Ruby is a community where open source, agile thinking, and lightweight solutions are deeply ingrained values."

He is saying that it isn't possible to create an implementation of Ruby unless you "have a certain attitude, values, and 'way of thinking'". Others who agree with him have said similar things in various other places.

I disagree. If creation of a compiler and/or interpreter for a language depends on traits (attitudes, behaviors, etc.) of the person building it, to me, that represents that you probably lack an sufficiently detailed language specification. The act of coupling the language to the community (and traits thereof) is nothing more than a cheap FUD technique. If Microsoft tried to pull the same thing, we would never hear the end of it!

Re: My Motives by Floyd Marinescu

Dan, kindly please do not degenerate these threads with character insults. It decreases the experience for everyone.

Re: My Motives by Nick Malik

@Charles,

Fair disclosure: I am a Microsoft employee but not associated with the IronRuby project. I would like to hit on two points that you appear to be making.

What I do hate is the idea that IronRuby may end up a sub-par implementation of Ruby because of Microsoft's stance on open source.


It is clear that you want a good Ruby implementation out of Microsoft. I assure you that everyone shares that goal. Microsoft's "stance" is a reflection of the fact that, unlike many of the contributors to Ruby, we make money selling software language products. We don't want someone to attack us in court saying "Microsoft used the intellectual property of XYZ when they wrote their version of Visual Studio." Fighting a lawsuit is expensive. The cost of forcing a team to jump through hoops to figure out a spec for a spec-less language is far cheaper than the cost of defending against a spurious lawsuit.

Only by having a fully-compatible, fully-compliant implementation of Ruby on the CLR can Ruby's success be complete.


Although I do not know the IronRuby team and do not speak for them, I believe that we would be in agreement that a spec for the Ruby language would go a LONG way. It would answer the question, once and for all, of what IronRuby needs to be compliant with. Creating a spec is difficult. Once such a spec exists and a test suite can test it, then perhaps it would be fair to criticize the quality of one implementation or another. Until then, let's try to judge software only when it has been delivered.

Sound fair?

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

18 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT