Posted on Feb 7, 2009

Building Ruby: The background

As you guys may know, As maintainer of One-Click Ruby Installer, decided dump current builds of Ruby for one using MinGW (GCC) compiler back late 2007. This adventure turned into a quest and want to share the progress made in it.

Building Ruby is not for the faint heart

While we all enjoy the beauty of Ruby syntax and functionality, building Ruby is the opposite of it. It doesn’t matter which Operating System platform you’re using, there are lot of caveats and tricks that you need to be aware before jumping into this process.

This gets a bit more complicated on Windows, of course, but nothing that can’t be solved. To serve as example, I’ve presented back in October at Rails Summit Latin America part of this effort, which Fabio Akita documented in his blog.

All that work can be download from our GitHub git repository here

A short list of the caveats that we faced:

  1. No default compiler is installed with Windows
  2. Ruby dependencies can be a real nightmare get working
  3. Building Windows Installers packages is a major pain

Get people involved is hard

Sometimes is hard to get people interested in projects, even more harder on Windows.

While RubyInstaller (One-Click Ruby Installer at RubyForge) list as one of the tops downloaded software, getting people contribute both time and code for it is hard.

Most of the times, people decide to complain, but no suggestion, alternative or code to get that issue solved is provided, making hard to fix these issues and make everybody happy.

Even the above negative comment, a few people stepped in: Gordon Thiesfeld, Lars Christensen and Roger Pack contributed with code, feedback and lot of suggestions that helped the project and define some objectives for it. Fabio Akita which showed lot of interest and generated attention from the community. Many others who got in touch by email or IM and showed support and helped out somehow.

I just wanna say thank you all for everything!

Is hard to please everyone out there

One-Click Installer was aimed to reduce the painful experience getting started with Ruby in a Windows environment could be.

I took the maintenance responsibility for this project since I met both of the requirements needed for it: being a Ruby user and a Windows user.

My needs at that time were really small, since I wasn’t doing lot of Rails or similar stuff, and using Ruby internally as glue tool for my developments.

Now that my involvement with Ruby have change, also changed my needs from this Project.

Because of that, I started to see lot of problems both Ruby developers and Windows users faced, and tried to work on solve those somehow.

Part of that work has been reflected in rake-compiler, a project designed to help Ruby developers out there building C extensions for Ruby.

Even all that contributed work, people is still unsatisfied, both Windows and non-Windows users.

Is hard to make progress without help

And here lies the big problem. While we had our dosage of contributions, exposure and feedback, we are alone.

The objective I set for the sandboxed environment was to let anyone, with or without strong knowledge in C, compilers and others get the everything running to be able to contribute back.

Even the usage of GitHub made forking and integration of contributions easy with one and simple commit policy: fix or enhance something, you get commit rights to the project.

Yet still no major release come out of our work there.

Now that Ruby 1.9.1 got out, is hard to make people keep interest in 1.8.6 work done over GitHub, they want everything, by yesterday.

This falls also in my lap, part of this was me being dragged by work and real life, feeling unsatisfied by the idea of the playground I’ve built and used in a daily basis.

Maintaining a project is more than just deliver new releases. Is about leadership and constantly pushing the limits of what you did before.

So, what now?

Is time to start introducing what I’ve been doing in my spare and free time for the past months.

I’m about to merge my work into a new branch of RubyInstaller project at GitHub.

Keep an eye there and this blog for more details about it.