Posted on Mar 6, 2008

Is Windows a supported platform for Ruby? I guess not

That question is important, and I want to share my thoughts about it with you.

Update: This has been posted 2.5 years ago. There are still things that sucks, but we made incredible progress. Please see newer posts like this one Thank you.

h4. A bit of background

Since I started with Ruby back in 2002 (on Linux at that time), fell in love with the language, the syntax and the simplicity. For several reasons, Python was more mature in the Windows arena, where I needed to be.

Years passed and I was still a Ruby lover, writing scripts to handle simple and not so simple tasks at the office until Rake came out… then I migrated everything to it.

Rails

Moving forward now, before Rails came on the scene, I switched back to using Ruby on Windows (it was a bit more mature, but not bullet proof).

I started to use Rails for internal projects and others back in 2005, and found Ruby still required some attention to the “cross-platform details”, but not as much as before (so that was good).

In 2006 I decided to contact Zed Shaw, since I thought Mongrel will change the Ruby and Rails scene, and decided to invest my effort on having a better Windows support for it.

Then several projects that were used or related to the average use of Mongrel and Rails showed up, some of these platform issues could be solved, opening the door to Windows developers to know, enjoy and love Ruby and Rails methodology.

Back to the present

Since then, I’ve sent several patches to lots projects, some of them collected dust on the rubyforge trackers and other get merged quickly. This simplified a lot of lives (at least, for the poor souls running Windows).

Good things happened, and Curt Hibbs allowed me contribute to One-Click Installer, the best solution for using Ruby on Windows to date (you can say it ships with batteries included for you to play).

Ok, big deal, what is the problem?

Since I want to improve my quality of life using Ruby, I started what I called Get your hands dirty: Help bootstrap Ruby on Windows with the idea of get rid of Visual C 6 (used to build Ruby) and move to a faster and stabler toolset like MinGW (Minimalist GNU for Windows).

In the beginning there was bit of feedback, some discussion, then a helpful patch. But it stopped there.

I started to work on a problem in Ruby that is related to how interface with Readline. I tried to track it down, and posted my comments on Ruby-Core. Like most of my comments on that list, got ignored or just told to “try ruby-talk”. Wait… isn’t ruby-core supposed to be the interface between ruby-dev (japanese mailing list) and the outside world? Was I asking something outside the knowledge of ruby maintainers, creators or developers?. No, but I still couldn’t get an answer from them.

But that left me with a bad taste in my mouth: is Windows a supported platform for Ruby? I guess not.

Time vs. Life

So it’s time for me to consider whether it’s worth invest my life in something when no one cares if it works, it is stable, if it’s faster, or even if it’s usable. Don’t get me wrong, I’m not quitting Ruby, just questioning if it’s worth keeping up working with current implementation.

From my point of view, Ruby on Windows is important. It opens the door to developers that cannot or do not want to switch to Linux or any other OS, but still want to enjoy using Ruby.

MRI 1.8/1.9 vs IronRuby vs Rubinius

Lots of folks ask me if One-Click Installer will switch to 1.9, or IronRuby… and what about Rubinius. Sounds interesting, but there are lot of things that must be fixed before that can happen.

For me, dotNET is not an option, even if I’m tied Windows, that doesn’t mean I must use Microsoft tools for everything. Other folks will disagree, but if you want One-Click for IronRuby, take a look at Ruby in Steel (for IronRuby).

Rubinius looks quite interesting, mostly because the community created around it is more open to changes and is willing to hack Windows support into it (just take a look at the work from Oleg Dashevskii).

Open Question1

Is there anyone willing to join me on the MinGW initiative? If not, should I should drop it, keeping the slow VC6 version and alienating other Developers to switch to Linux?

Or maybe it’s time to be wise and bet for Rubinius on Windows?

1 This is not a rant (at least not like Zed’s ones) but a valid point from someone willing to help, but that cannot perform magic when there is no cooperation from the other side).

31 Comments

  • Jorge L. Cangas says:

    Thanks for the point. You are not alone!. I like Ruby a lot, but I fall in love with Ruby thanks to Instant Rails & OneClickInstaller (thanks fo it)… So many developers need working in Windows every day (we need money, you konw). So many don’t like Windows but have not chances to change customers and users. But we want and we can release Ruby apps to our customers. In fact I get money for an app in Ruby on Windows.
    I feel also Windows need better support: MSSql adapter by the way, or how about deploy Rails in IIS?( I hate asp pages!).
    IronRuby is a great oportunity: Like jruby, it is a open door to the customers computers. Moreover IronRuby has the official MS stamp, so customer acceptance has better opertunities: “Dear customer, this is true .Net code: don’t fear!”
    I want say to ruby community:

    windows.should be_a_great_market

    don’t fail the spec!

  • Chris says:

    VC 2k5 Express is free (and freely available). I’ll gladly help in the effort there — I feel like it’s Windows so it should be built with the native son.

    I’ve been building ruby 1.9 & trunk across vc7/7.1/8 and there’s no issue there, just a matter or compiler availability for modules. You can’t even get VC6 on MSDN anymore (but 4.2?), so something definately has to be done.

  • hk says:

    I would have to say – no? Of course it’s not. Why would you even try?

    Windows is not a command-line friendly environment. You’ve got none of the tools, none of the packages, nothing. Why even bother?

    If you want to write Windows games or .NET apps, use Windows. If you want to use open-source software like Ruby, use MacOS or Linux. That goes double for servers. It’s pretty simple really.

    Sorry for being negative but seriously – I don’t know anyone who is using Windows for Ruby work. No-one cares. I disagree that it’s “important”, I think it’s a complete waste of time and I doubt you’ll get any support at all.

    Just use Mac or Linux – what’s the problem?

  • Sammy Larbi says:

    Luis,

    What type of work is involved with what you are trying to do? (Do you have an introduction page?)

    Feel free to send me an email. I couldn’t find a private contact link here on your blog.

  • Charles says:

    Hi Luis,

    Thanks for your work – I understand the frustration at lack of a response.

    Ruby on windows is important to me, and I’m particularly happy to see the move from VC6 to mingw, which will remove a lot of headaches.

    If you need help with testing out the mingw code etc, please send me an email (Despite looking I haven’t been able to locate a copy of VC6 so I’m currently unable to compile extensions on windows :/).

  • Arnaud says:

    Hi Luis,

    I use Ruby on Windows every day at work and it is very useful to me.
    I create command line scripts as well wxwindows or SDL based programs.
    It would be a disaster for me not to be able to run Ruby on windows anymore, I guess I would have to switch to another language…

  • Luis,

    I hear you and feel your pain! I use Linux or OS X when working with Ruby for pleasure (such as hacking on Rubinius), but work would be a lot less fun if I didn’t have Ruby available on Windows. I use it all the time for little time-saving scripts, and have also built several decent sized Rails apps that had to run on Windows servers.

    I believe Ruby on Windows is important, and that this is an important issue. Without knowing the details, my first reaction would be to stick with VC. With the increasing prevalence of .net, it is much more likely for a Windows machine these days to have VC available than MinGW.

    Also, I may be biased, but I’d love to see you put your efforts into getting Rubinius running on Windows – and I’d be willing to help with that. :-)

  • Luis says:

    @Jorge: saw your post, didn’t have time to answer. I agree with you that Ruby, no matter what implementation is soemthing we should have on Windows OS, like it’s available in any other platform.

    @Chris: with VC8/9 you will hit a wall pretty soon. Please read my other post here:

    http://rubyforge.org/pipermail/rubyinstaller-devel/2008-January/000230.html

    @hk: just grow up man. You win the childish comment prize.

    @Sammy: You can see the original thread started here:

    http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/295472

    And you can also find my posts on the rubyinstaller-devel list:

    http://rubyforge.org/pipermail/rubyinstaller-devel/

    @Sammy and Charles: I have your email address, I’ll get back to you. Thank you.

    @Adam: sticking to VC will make our life a real problem. Check my post about VC8/9 on the mailing list. MinGW, on the other hand, is a more familiar environment that most *nix user can user out of the box for their needs.

  • João says:

    Hi Luis!
    I too use ruby on Windows, and would like to thank you for your hard work.
    I too have been bitten by difficulties building gems. I tend to use natively built gems only with cygwin’s ruby, as I don’t have the VC environment.
    I think it would be great to have a MingW based environment, that made it easy to build gems.

  • Mike Berrow says:

    I switch continually between the Linux and Windows environments in the course of the development work I have to do. I need to be able to reach for Ruby as tool whatever environment I am in. I absolutely could not have taken Ruby seriously as a language unless it was âmulti-platformâ. In my view it would not qualify as multi-platform without including Windows. I greatly appreciate the work done by Luis and others on this. It irritates me when the Mac devotees get so snobbish about this. Come on people!! Ruby needs to be kept as a serious, broad-based platform.

  • Ed says:

    I develop on both Windows and Leopard and actually find my windows setup superior for some things (though obviously the windows command line is a pile of crap). As such I’m very grateful for the effort others put in to make my life easier – thanks!

  • Aleksandr says:

    Luis, don’t stop please. I develop rails sites under windows.

  • Richard LeBer says:

    Luis,

    Thanks for your leadership, persistence and hard work. I couldn’t agree with Mike Berrow’s comments more. For Ruby to last, it needs to be cross-platform. Windows may not be respected or popular in many circles, but there are many times more Windows machines installed than Linux/Unix or Mac OSX ones. “Cross-platform” therefore includes Windows, which means Ruby needs to run as well under Windows as it does everywhere else.

  • Dave says:

    Hi Luis – please don’t stop! How can I help?
    Cheers,
    Dave

  • Murmansk says:

    We use Ruby on Windows almost every day.

    We have developed a bunch of scripts that give us something between nagios and capistrano (well.. perhaps not too far!). We can not only monitor our servers, but act when something fails or distribute new scripts for solving problems.

    On desktops, we are installing a Ruby application that dynamically changes the wallpaper, overlaying messages that give information to the user about connectivity, active directory OUs, name, ips, pc profiles… Something like Sysinternals BGinfo, but adapted to our needs.

    I’m absolutly convinced that it wouldn´t have been possible without Ruby, and not to funny to program, sure!. So I have to say you: thanks, thank you very much!

    But on the other hand, I would like to help you and I know that I can´t: I have probably no knowledge, nor time, and the big organization that I work for, will not even think in funding something (sorry, I´m not the boss).

    I will understand if you give up. Working for free has a limit, and starts when all your free time is devoted to it.

    So, the only thing I have to you now is more than 600 servers, and in a few weeks about 16.000 desktops running Ruby applications.

    There’s a place for Ruby on Windows.

  • Brian says:

    Thanks for asking the question. I sometimes wonder, too, if Windows is a supported platform for Ruby. But if it stops being supported, I’ll feel betrayed by Ruby. I started using it partly because it was cross-platform.

    I agree wholeheartedly with Mike Berrow’s comments.

    I started using Ruby last year when I asked a friend of mine to work on a new startup with me. He was excited about the project and his only condition was that we do it in Rails. I spent a week investigating it, found that it seemed useful and fun and met my needs, so I said let’s go for it. One of the needs it met: I can write code on my Windows machine, which is where I like to develop, and he can write code on the Mac he likes, and we can deploy it to Linux.

    We lightheartedly kid each other about the other’s choice of platform (he avoids the Mac bigotry that really rubs me the wrong way).

    My primary complaints so far are about lack of Windows support are (a) for some reason it’s much slower on Windows (my machine is fairly fast)–running tools like rake or autotest is painful–and (b) there are some tools we just can’t use because they won’t work on Windows. For (a), my best guess is the optimization efforts go into other platforms that have different performance characteristics (i.e. different functions are slow) than Windows. For (b), the biggest problem is backgroundrb.

    I have a Mac laptop that I could use. Right now it’s my wife’s machine. But I like Windows more and I find it easier to use.

    So for me, yes, Windows is an important platform for Ruby. But I’m not convinced it is for the whole community. I hope it will get better.

  • David Mullet says:

    Luis-

    Like Arnaud and Murmansk here, I use Ruby on Windows every day, for both end-user desktop applications and admin, reporting, and automation scripts.

    For Ruby to be seriously considered an all-around language, rather than a web-development language, it must fully support Windows.

    I’m not qualified to provide an opinion regarding VC6 versus MinGW.

    But I can tell you that the work that you do is important, and it is very much appreciated.

  • Daniel says:

    I also started using Ruby because it was available on Windows, the platform I’m most productive with. All those Mac elitists telling me that Windows is not a platform for web development… Well, for me it is! And from the looks of it, I’m not alone.

    If you stop supporting Ruby on Windows, the only alternative I’ll have is JRuby, but I don’t know if it’s ready for serious development…

    Anyway, thanks for your efforts man! If it weren’t for you, I wouldn’t know Ruby!

    ¡Ãnimo Luis!

  • CharlesR says:

    Luis, just wanted to show my appreciation for what you’re doing. I love Ruby and use it every day and work and home. I use Ruby at work in a Windows environment. I love my job, I love my environment, love the work I do; Ruby on Windows makes it that much more pleasurable. I’m not a particular fan of Windows and I’m not a hater either – it’s a tool I have to work with. I like Linux and OS X too; great platforms, great systems.

    Robust, agnostic, cross-platform Ruby is something well worth striving for. Just as a healty natural ecosystem has high biodiversity, a healthy computing ecosystem has high platform (and developer) diversity. I applaud and encourage your work. If there’s anything I can do to help I will. I’ve subscribed to your blog and will follow with enthusiasm.

    Cheers man.

  • Lindsay says:

    I use Ruby on Windows at work to create Active Directory users, add and remove users from Active Directory groups, to run corporate Ruby on Rails applications. I work for a big company with over 6000 employees. So this stuff is more mainstream than maybe some people think. I have Rails apps the entire company uses as well as the behind the scenes Ruby on Windows scripts that keep things humming.

    I hope the Ruby leadership sees how important it is that Ruby be supported on ALL the major platforms – including Windows.

  • Tom Agnew says:

    Thank you for your hard work and dedication!

    I have been using the one-click every day at work for many diverse and complex tasks. It is an indispensible tool for us.

    Moving to MINGW is a fantastic idea! This would allow us to more easily use more obscure ruby extensions…. and would match the ease of use on our Linux servers. My vote is +10 !

    Many thanks again for your dedication and contribution!

  • While I can’t offer up help, I will say that I develop ruby on windows, but deploy to FreeBSD or Ubuntu.

    I personally don’t have speed requirements and all ruby gems I use usually maintain a windows binary. Granted I am a developer in many areas so having VC6 around isn’t an issue. I greatly appreciate the work on Mongrel to make it Windows compatible.

    My interpretations are that people develop on their platform of choice, and deploy server solutions to better support Unix platforms.

    I will say that I end up using Python for random scripting tasks, simply because Python is ready and available out of the box on Ubuntu. If someone would smack the Debian package managers upside the head who so completely screwed up RubyGems….

    To answer you question: There is a need I think, but personally I exist quite well as is. I think the question comes down to, who should do the porting? Gems maintainers or the Ruby environment on Windows?

  • James says:

    I think Ruby on Windows is important. What I love about Ruby is that it is one language that I can use on both Windows and linux computers, which is important, since I am a sysadmin for Windows and linux servers.

    So anyway, the better Ruby is on Windows, then the better things are for me. So don’t lose hope, you WILL have a big impact on a lot of people’s experience whether you realize it or not.

  • Luis says:

    @All: thank you guys for your kind words and appreciation of the work being done on this project.

    I’ll like to point everyone to the Progress Report post I made a few days back.

    I’ll keep working on Ruby for Windows, but there are still things that don’t work as expected yet, and I’m trying to track them down (but right now is one-man show) :-D

  • NickG says:

    Without Ruby for Windows, I’d be using Python.
    Unix is a great environment, particularly for large systems, but Macs are something one can take or leave. Nothing clearly wrong with them, but nothing clearly right with them either. They offer frequently elegant high-level design at a consistently premium price, and for more technical aspects Macs suffer from a frequently idiosyncratic learning curve.
    Thank you, Luis, for making Ruby for Windows available. You are truly a hero!
    -Nick

  • Paul says:

    Ruby on Windows is extremely important to me. I’m trying to move beyond the “Windows box” and Ruby is by far the most attractive language I’ve found to do so. Clearly, Ruby will lead me deeper into Linux as well. I sincerely hope you decide to continue your invaluable work with Ruby on Windows, and I thank you for the amazing work you’ve already done.

  • Patrick says:

    I know i’m late but wanted to leave my words of support.
    I came to Ruby on Windows, and had quite some pains to get gems and other magic work, never mind for 1.9.1.

    Your Mingw implementation is what saved Ruby for me on Windows, and altough if there was a choice, I might not be developing on Windows, my target and own work-area is simply on Windows, as I write extensions and tools for games mainly.

    Because of Ruby Mingw, I am able to distribute my applications to thousands of gamers, all with windows, with a fair amount of stability and performance.

    Thank you so much, also in name of all who are enjoying my apps on Windows :)

    Wondering why I am not contributing, well I am too. Hard to start, no c experience or wish to experience it :)
    Other than that I suppose I am happy I can finally develop and make things that work, as opposed to fiddling around for days and not getting anywhere.
    Where to start?

  • Luis says:

    Thank you for your kind words Patrick.

    You can find more about this in RubyInstaller wiki page for contributors here

    Also, read the newer posts in this blog and visit the wiki section of RubyInstaller itself:

    http://wiki.github.com/oneclick/rubyinstaller/how-to-contribute

    Highly recommended you join our mailing list if you want to contribute:

    http://groups.google.com/group/rubyinstaller

    Thank you!

  • iesmatauw says:

    By the time Patrick post his comment, I just started to learn Ruby.
    For people like me who only have access to windows box at work, this simply the best you can get.

    Is Windows a supported platform for Ruby? I guess its a YES thanks to you Mr Luis.

  • Daz says:

    I feel that this problem with Ruby being used on WIndows is what’s holding me back from fully embracing Ruby. I don’t want to use Linux, its a nice OS, but so is my Windows machine. So when I see and come across many pieces of code that just won’t work on Windows I need to ask myself do I really want to program in something that is going to become ‘niche’ and be used on only 1% of computers worldwide? Yep, that’s 1% of supposed market-share that Linux has, or do I want to develop on a platform with over 90% marketshare? Yep, that’s Windows folks!

    Sorry, but perhaps its time for me to throw in the towel regards Ruby, which I really like, and start learning Python.

    Such a pity, but its the truth and its no surprise also that Ruby seems to be one of the programming languages with a steadily declining userbase, certainly when Windows users find it isn’t friendly at all.

    And no, I don’t want a Mac, and I don’t want to use Linux.

  • Luis says:

    Hello Daz,

    You’re reading a really really really old post (2 years).

    Please read newer posts with status update:

    http://blog.mmediasys.com/2010/08/07/exciting-times-for-rubyinstaller-project/

    Thank you.