Dr Nic

Ruby.NET goes Open Source … too late?

Once upon a time there were two Ruby on .NET projects – one by John Lam, created in his spare time (RubyCLR) and ultimately he and his code was absorbed by Microsoft (now IronRuby).

The other – Ruby.NET – was created by Wayne Kelly, at the Queensland University of Technology (QUT), in Brisbane, Australia. My city. Where I live. Which is great, because Wayne is going to talk about Ruby.NET on Monday night.


View Larger Map

Above: pointless map to the HQ of Ruby.NET in Brisbane; NOT the location of the meeting. Its just here to space out the text a bit and help you want to read the whole thing.

This Monday 15th Oct, Wayne will be talking at the Brisbane Ruby + Rails Brigade about Ruby.NET, and to reiterate that it has/is to be open sourced.

[/end infommercial for Ruby meetup]

[start of critique on why the hell I don't know tickitty-boo about Ruby.NET, and the perils of Open Sourcing something that no one knows anything about]

RubyCLR/IronRuby and Ruby.NET have the same aim – to allow Ruby to be used to write .NET apps, in addition to the other languages you can run on the .NET CLR (common language runtime) – C#, C++, J# and VB.

So if RubyCLR is now Microsoft IronRuby, and is being shipped with Silverlight and thus/probably with Visual Studio 2008, does this mean RubyCLR won and Ruby.NET lost?

Hint: refer to “I don’t know tickitty-boo about Ruby.NET” above and Microsoft’s $X trillian market cap and pervasive promotion of Silverlight lately.

I can’t compare the two projects technically, but I can compare them from a marketing/community perspective, and with a healthy dose of sarcasm. I also want to ask you for help – even if you haven’t used Ruby.NET nor ever will. Its an anti-Microsoft thing. Read on…

From the get-go, John Lam has talked and blogged about RubyCLR/IronRuby. It even had a fancy website back in its RubyCLR days, with a logo and everything. John will be at RubyConf in Charlotte NC in November, talking about IronRuby.

Ruby.NET doesn’t have its own website – its just a page somewhere on the QUT domain – http://plas2003.fit.qut.edu.au/Ruby.NET/, with updates that aren’t available via RSS.

Ruby.NET doesn’t have a blog, nor does Wayne. Oooh, I found Wayne has a 1995-compliant “who am I?” page, including the 1995-edition yellow balls *.

But, he did do this video with the Ch9 MSDN site.

This isn’t a dig at Wayne entirely – I haven’t met him yet and hopefully he finds the above funny enough that he’ll still talk to me :)

Rather, this is a call for help for getting Ruby onto .NET in a safe, friendly, Microsoft-free, open source way. Its about World Peace.

Ruby.NET maybe open sourced, but as a project and a movement, it needs help: “I am inexperienced at managing this kind of open source project I need your help and advice.” [Wayne]

Lots and lots of Ruby developers are sitting on Windows boxes, and probably a lot of them do/have written .NET stuff. Blending Ruby into .NET means awesome WinForms loveliness with a decent language behind the scenes.

So, on Monday, Wayne is going to show off his wares. If you are in Brisbane, come along. For everyone else, I’ll park the video camera at the back of the room.

Now, before I ask you for assistance, I need to tell this story (blockquoted for dramatic effect):

I was at Web Directions South conference a few weeks ago, which Microsoft helped sponsor, and had a large booth at the front door promoting Silverlight.

I met some of the Silverlight people at drinks and got talking to one guy who was an ex-programmer-come-spruiker, and the conversation degraded as follows:

Him: IE7 was delayed for a long time because 'ajax' came out and it scared Microsoft.
Me: Microsoft of f@#ked up IE7 on purpose?
Him: We have shareholders.
Me: So you did it on purpose?
Him: Yes
[Me: exits the table]

This translates directly into my fears for IronRuby (similarly concerned are Martin Fowler and Ola Bini). Microsoft was persecuted for modifying Java outside the license agreement. Shareholders first, community last, and all that.

Ruby.NET isn’t my project, but I envisage it to be an important project.

But it will be an abandoned trivial project unless it gets a community of users, the corresponding portion of patchers, and a corresponding portion of core developers.

To my mind, Ruby.NET needs marketing help. It needs a website + blog, logo + identity: a place for users to feel proud of, a site they can show their bosses when they are trying to convert their team from C#.NET to Ruby.NET.

You don’t need to use Ruby.NET to be able to help here.

If you can help, please contact Wayne directly.

Alternately, if you have any public thoughts on how Wayne can build a community around the project etc, go for gold below.

NOTE: I’ve never built a large community around any more my projects so I can’t claim any real high-ground over the Ruby.NET project. But I do know I’d rather have choice in my Ruby for .NET implementations, and Ruby.NET is only going to be a choice if it can become a self-sustaining project.

Related posts:

  1. Validate and Save your Ruby in TextMate – with secret Rubinus superpowers In some TextMate bundles, if you save a file it...
  2. Future proofing your Ruby code. Ruby 1.9.1 is coming. Bugger. I’m a Ruby monogamist. I use the Ruby...
  3. Unit Testing iPhone apps with Ruby: rbiphonetest Everything to love about Ruby: the concise, powerful language;...
  4. Using Ruby within TextMate snippets and commands I didn’t know you could run Ruby within TextMate snippets....
  5. The explicit Ruby metaclass you know you always wanted When you define a “static” or “class” method on a...

16 Responses to “Ruby.NET goes Open Source … too late?”

  1. blowmage says:

    Weird. Microsoft helped fund Ruby.NET, and even has licensed pieces of it to spur their IronRuby implementation. The Microsoft devs can’t look at the MRI C code, but they can look at the Ruby.NET code they licensed. Most of the code they took from Ruby.NET is the parser, I think.

    The biggest differences between IronRuby and Ruby.NET is that the latter is a more traditional dynamic language implementation. Meaning, the normal .NET values and objects are wrapped by proxy Ruby classes that support all the Rubyisms. IronRuby, on the other hand, is using (and influencing) Microsoft’s DLR, which is a common type system for putting dynamic languages on .NET’s CLR. This is important because if there isn’t this common type system, then IronPython’s String is a completely different object than an IronRuby’s String, which makes interoperability difficult.

    More to the point, it seems like you are setting out to cast these two projects as competitors. One (Ruby.NET) is for truth and justice, while the other (IronRuby) is an evil ploy to ruin Ruby. As someone who is watching both implementations, I can tell you that is not the case. There is no animosity between the two projects, they are just two different approaches.

  2. Dr Nic says:

    @blowmage [via] – yeah, you’re probably right about MS sponsoring Ruby.NET as they have a MS ‘lab’ over there I think.

    I probably didn’t need to play the “MS sometimes does evil things” card, but I had my “weird Silverlight guy admits IE7 broken on purpose” story to tell. So I think I just wanted an excuse to tell that story :|

    It was supposed to just be an article about: the presentation on Monday and re-iterating the project’s request for assistance.

    Sorry for the unnecessary diversions into IronRuby v Ruby.NET

  3. Ruby.NET is currently developed on Google Code. You can find SVN repository, issue tracker, mailing list there.

    http://code.google.com/p/rubydotnetcompiler/

    Apparently you aren’t in the loop. Well, that’s the problem. People like you who should be in the loop aren’t.

  4. Nic, excellent post. I was initially *so* excited to see the Ruby.NET project get started, then utterly confused to see Redmond taking an apparently different road with Lam and friends. Now I think their left hand just didn’t know what the right hand was doing.

    Your IE7 story is actually, I think, very important, because it confirms that my skepticism – despite my confidence in John Lam and his team – that Microsoft will not simply create a Ruby that works with .NET, but will “embrace and extend” Ruby to entice developers into using new language features that will only work in Microsoft technologies like Silverlight. I hope I’m wrong, but for now, I remain wary and skeptical.

    Thanks for putting out the call to help the Ruby.NET project.

  5. Dr Nic says:

    @jcohen [via] – I probably didn’t need to go down the FUD route per-se, and ultimately it comes from me not following the two projects that closely. Is IronRuby only usable on DLR? (I think yes), and if so, how ubiquitous is the DLR – is it available for WinForms on for normal .NET installations?

    @sanxiyn – I’m certain this article exposes my lack of understanding of the statuses of the two projects; but that is really my point. Where’s the promo + communication? I want to care about projects, but I guess I need it to be exciting for me to remember to pay attention.

  6. Yes, IronRuby requires the presence of the DLR, which in turn depends on .NET 3.0 or 3.5 (I can’t remember exactly which). Vista ships with .NET 3.0, and is available as a download for XP. If you then install the Visual Studio 2005 SP1, and then install the DLR (whew), theoretically you’d be able to use IronRuby inside a WinForms app.

    But, I haven’t been motivated yet to try this myself (I probably will very soon). Most everything I see about the DLR involves Silverlight, since the Silverlight vm includes the DLR; so most people are accessing the DLR from within Silverlight code, not from “raw” Winforms code. There’s a very simple MessageBox example here: http://weblogs.asp.net/scottgu/archive/2007/07/23/first-look-at-ironruby.aspx.

    If and when I get around to setting everything up I’ll let you know what I find out. Of course, it would be very interesting to write raw Ruby code to generate a Winforms app. I don’t think VS2008 will support Ruby-based WinForms apps as a project type; I expect that will come a little later.

  7. Dr Nic says:

    @http://jcohen.myopenid.com/ [via] – it would be interesting to start with one of the jruby/swing ruby wrapper projects that give swing a Ruby-fu feel, and see how far you can push it into WinForms libraries :)

  8. I have to say that anything championed by Microsoft scares the shit out of me (after being a MS developer for too long, and working for them at one point), but for them to get into Ruby or Rails, makes me want to /wrist in true emo style.

    If it happens we will see an explosion of Ruby work, but we will be forced to do it the MS way, which can be sure to differ greatly from the Matz way.

    Thanks for supporting Ruby.Net over IronRuby.

  9. Guy Murphy says:

    RubyCLR is not the same beast as what became IronRuby. As far as I’m aware RubyCLR was a Ruby/CLR bridge, not a Ruby implementation.

    IronRuby is a Ruby implementation built on top of the DLR.

    IronRuby can be built on Mono. So technically requires MS .NET 3.0 or Mono1.2.5 (I think).

    IronRuby is hosted on Rubyforge, and if being developed in a relatively open fashion.

    Ruby.NET was sponsored by MS, and as pointed out MS license chunks of Ruby.NET… which sounds pretty complimentary to me.

    While I admire the enthusiasm of articles like this one, and I’m not trying to be offensive, you have to stand back, look at it and hold your hands up to effective engaging in FUD. You aren’t engaged in technical arguments here, you’re engaged in emotive political ones… and hey, that’s OK too.

    What are the technical merits of Ruby.NET that you believe should encourage people to support it?… That’s a genuine question, not bait, and perhaps the answering would do more to obtain the support you feel desirable.

    IF the goal is to obtain a quality Ruby implementation then the exisiting cooperation between Ruby.NET and IronRuby would seem to drive in that direction. I’m not sure that this article doesn’t just drag up old partisan attitudes.

    Not having a pop at you so much as challenging you gently. I do appreciate your concerns.

    As for IE… IE was held in limbo from IE6 as MS were concerned about anti-trust issues. They needed Mozilla to gain ground so they couldn’t be accused of monopolistic practices. Same reason MS maintained an MS Office dev team at Apple for so long. MS had a compelling interest in Apple remaining alive. The rise of Linux obviated that need and the team got pulled.

    Yes it sucks. However MS had very real and compelling reasons for holding back on IE. They were damned if they did, and they were damned if they didn’t.

    With regard to Sun/Java… Java (or more specifically the JVM) has been extended in all sorts of ways by all sorts of people that make the MS extensions with J++ look trivial. If the shoe were on the other foot MS would have been lambasted for restrictive practice with regard to a competitor over their closed source, non-specced language…. Very similar interestingly enough to Netscape/JavaScript years before. Netscape held the trademark to JavaScript and denied use of it to MS who had to call their implementation JScript. This alarmed a lot of people (and the W3C/TBL never really liked Netscape) hence we wound up with ECMAScript.

    When the shoe was on the other foot with CLR/C# MS did open the spec and we’re watching the Mono team, Boo, Nemerle and others moving with the platform in all sorts of interesting ways.

    See there’s a lot of things that appear black and white… and as and old school OS/2 fan, I still resent MS… but reality is normally all sorts of shades of gray.

    MS is doing interesting things *technically* with languages at the moment.

  10. blowmage says:

    RubyCLR is a Ruby to CLR bridge written in Ruby and C++. This was John Lam’s project before he joined Microsoft. RubyCLR has nothing technically in common with IronRuby or the DLR.

    The Dynamic Language Runtime (DLR) is an extension to the CLR (.NET Framework) that is intended to provide a common type system for dynamic languages to interoperate. The DLR has been open sourced with the MsPL license, and will be added to Mono.

    IronRuby is Microsoft’s implementation of the Ruby language and runtime on the DLR. Ruby.NET was started before the DLR was announced, and is written for the CLR.

    I understand the concern over IronRuby being a “real” implementation and the distrust of Microsoft, but so far those things haven’t happened. IronRuby is being developed in the open, on RubyForge. Can we keep the FUD in check until we have something that Microsoft has actually done wrong?

  11. Dr Nic says:

    Again, sorry about the FUD. My bad.

  12. blowmage says:

    Sorry Nic, my last comment was aimed at James and not you. My bad. I don’t think you were necessarily FUDdy, and I certainly believe your heart is in the right place. The more eyes on Ruby.NET the better!

    That said, I’ve been seeing alot of FUD from the Ruby community lately about Microsoft and IronRuby, and I’m getting kinda sick of it. When/if Microsoft steps out of line with respect to Ruby I’ll be the first in line to call foul. But I haven’t seen it yet. Expressing concerns is one thing, spreading fear, uncertainty, and doubt is something else.

    I honestly believe that Ruby has so much to offer the average .NET developer that I’m committing myself to make Ruby on .NET successful. My worst fear is that some in the Ruby community become a hindrance to adoption. That’s not the Ruby community I know and love.

  13. Glenn Gillen says:

    From following the thread John has posted on the rubytalk list in the past, I’m led to believe that IronRuby will eventually be fully open sourced also, but at the moment it can’t due to the state of the CLR/DLR.

    I could have interpreted that wrong though.

  14. blowmage says:

    Glenn, IronRuby is already open sourced using the MsPL license. You can get the latest from RubyForge now. If Microsoft isn’t doing the right thing with IronRuby, we can fork the code. Or move to Ruby.NET.

    Also, Microsoft is allowing contributions from the community back into IronRuby. And not just allowing contributions, encouraging contributions. This is a huge step and shows their commitment to having the community involved and trying to do the right thing.

    The DLR is also open sourced using the same license, although contributions aren’t allowed to it because it will eventually be part of the CLR.

  15. John Lam says:

    Wow. Lots of commentary here. I think that Mike (aka blowmage) has clarified most of the technical details in the comments.

    Folks who want to work on IronRuby are more than welcome to contribute to our libraries. We need you to sign a contributor agreement and assign copyright to Microsoft, but that’s really no different than any other well-run Open Source project (well with the exception of assigning copyright to Microsoft :)

    BTW, I have no idea who the random Silverlight guy was, but I doubt he was on the product team. Don’t believe everythng you hear :)

    Thanks,
    -John

  16. Dr Nic says:

    @John – the Silverlight guy was a marketing guy here in Australia in the MS team that runs booths @ conferences etc. I doubt he was speaking with authority, it was just a wacky thing for MS person to say :)