How rubinius helps the community

So, I’ve officially started accepting donations after Geoff Grosenbach became my new hero and donated $1000. So naturally, questions have come up…

  • Why should I donate time/money to rubinius?

    The answer is simply because you believe that rubinius benefits the community. Therefore getting it to a state where the community can get it is a goal you want to help with.


  • How does rubinius help the community?

    I love the ruby language. Its grace and elegance are second to none in my opinion. But lurking under that beautiful language is a runtime in distress. Even Matz has admitted this by putting the energy of the future into YARV. So, there are features that the runtime and language needs that the current interpreter just isn’t up to: bytecode and native threads being just 2.

    So why not put your money/time into YARV? I’m not putting my money/time into YARV because I don’t believe it’s the right way to accomplish the goals. (NOTE: I’ve tried hard in the past few months to not be critical of YARV and the current interpreter too much. But people have asked, so here’s my opinion) YARV may or may not see the light of day. It’s been in development for 2+ years and while it’s getting close, matz has not committed to it for at the very least another 2 years. So, if we wait for YARV, the community is still a long ways away from a modern VM. Plus, I believe that YARV has a lot of the same problems the current interpreter has. It’s filled with very complicated, undocumented structure that makes working on the core quite difficult.

    I believe that the future of the ruby core is in a simple core and a simple architecture that is easy to modify. Rubinius goes to vast lengths to keep the core parts as simple as possible. Because in the end, it shouldn’t just be me and a few core developers who can dive into the core and change things. I want it to grow and flourish in the hands of everyone, and I believe the only way to do that is to build in that virtue from the beginning.

  • How will rubinius make my life/work easier/better?

    There are a lot of different ways to answer this question. So I’ll say this: rubinius aims to be simple at the core so it can be a lot of things to a lot of people. The longer way of saying that is that firstly, rubinius can be customized to make your life easier. While we know ruby is already highly customizable, rubinius aims to go even beyond that.

    Secondly, rubinius will fit into places the current interpreter won’t. One good example is that rubinius is all driven by bytecode and will even have hooks to further help companies protect their ruby intellectual property. To companies, that means ruby is much more enticing to use. And the more companies that use ruby, the more people, and the community grows. But don’t misread that and think that I’ve only developed rubinius to make companies happy. That’s just an example of where the “simple core, simple architecture” paradigm allows the whole project to remain agile and customizable by everyone that wants to use it.

I hope that clears things up rather than making them more confusing. Please comment on this post and I’ll clear things up and answer any questions people have.

8 thoughts on “How rubinius helps the community

  1. I wont pretend that I completely understand this self-referential magic yet, but I’m definitely a fan of a new implementation of ruby🙂

    I know speed isnt everything – but out of interest, is performance likely to be improved ?


  2. Yes, rubinius is test-driven, but at this stage, we’ll take patches without tests if the condition for the patch can be explained. It should be noted that the ability to write and test a patch probably requires… a test.

    We do take bug reports without tests also.

  3. […] 为什么要开发rubinius: * Why?: The current Ruby interpreter powers many high traffic sites and enterprise projects, but a faster, more maintainable interpreter would be a huge benefit to current and future Ruby projects. * Why not YARV?: Matz has expressed support for other Ruby interpreters and has said that YARV has a difficult task since the specs of Ruby 1.9/2.0 are not finalized yet (mentioned in this interview). Rubinius is targeting the current Ruby 1.8 series and is using the existing interpreter to bootstrap the project. * When will it be done?: There is no timeline. It may take 6 months, 6 years, or never. The idea is to put resources behind this project so progress can be made. […]

  4. To the commentor from Japan (who’s name I unfortunately not read). There are many reasons for a new implementation. The current Ruby interpreter does power many great sites, but it is a) slow and b) exceedingly hard to work on. Evan has stated this already and I would suggest you poke around the site to get more info on what Rubinius is doing. As for putting time and effort into YARV, that’s a tough prospect for an English speaking audience. Also, there’s the issue that YARV has been in development for a long time, seems to be moving very slowly and doesn’t look like it’s going to be a radical improvement in any area except perhaps performance. I really like the idea of the smallest simplest possible core, it’s worked for other systems such as Squeak and I believe it will work here as well.

  5. Thanks for your efforts, perhaps you can post a blurb aout “how it works” up there with the rest of the questions for us mere mortals who are not able to read through the source to divine it for themselves.

    Some questions that arise in my mind when I try to categorize rubinus viz-a-vis other such projects (YARV, X, Y, Z etcetera)

    Looking at the source, I see lots of ruby files. So rubinius is a ruby program which uses the Sydney parser to create bytecodes for something or other? or is it something which creates C code which can be compile by a native C compiler?

    or is it just a ruby interpreter written in ruby? I would love to see a definition of this entity called Rubinius which distills its function to what even novices can understand. For example, Matz’s interpreter can be defined as “A C based implementation of the Ruby interpreter”. Is there an equivalent def for rubinius ?

    Is it a “better” c based interpreter for Ruby?

    Is it a better ruby based interpreter for Ruby?

    Is it a Ruby to C translater written in Ruby?

    Is it a better implemented “VM” for ruby written in X (where X may be “C”)

    Before non hard-core ruby fans can commit some cash to it, I think they’d appreciate a more concise definition of what exactly is it and how exactly does it do its “thang”.

    Thanks for all your work, much needed IMO.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s