InfoQ

Interview

Eric Hodel discusses RubyGems and his involvement in the Ruby Community

Interview with Eric Hodel by Werner Schuster on Mar 27, 2008 01:49 PM

Community
Ruby
Topics
Package Managers ,
RubyGems
Tags
RubyGems ,
Ruby1.9
Summary
Eric Hodel talks with InfoQ about his longstanding involvement with the Ruby community, focussing on his recent role as the maintainer of RubyGems, the de facto packaging system for Ruby libraries and applications. Eric also discusses his local Ruby user group Seattle.rb and his involvement with the Ruby Hit Squad, creators of the deployment automation tool Vlad the Deployer

Bio
Eric Hodel is a long standing member of the Ruby community. He was one of the founding members of Seattle.rb, and forms part of the Ruby Hit Squad, creators of the deployment automation tool Vlad the Deployer. Eric is currently the maintainer of RubyGems, the de facto packaging system for Ruby libraries and applications.
We are here at RubyConf 2007 with Erik Hodel. Erik how about we start off with you telling us about yourself: what you do, where you are from?
One of you libraries that is very popular that you are maintaining is RubyGems. Can you tell us about that?
Is there a central place where they're hosted or you host your own directories for RubyGems?
What version is RubyGems at right now?
What are the big features of the current, the next release?
The "I" specific or platform specific tools, can they help providing JRuby specific gems or other implementation specific gems?
You mentioned Ruby inline. Can you explain how RubyInline is, are you involved with the project?
But you need a compiler on your platform?
So it's like a shared library that can be shipped with it so you don't have to compile?
Talking about RubyInline and Ryan Davis you work a lot with Ryan Davis. What other project do you share, do you work on?
So is that used for for specification testing, for compliance testing or specific Ruby features?
What other projects are you working on at the Seattle Ruby brigade or with Ryan Davis or with other people?
Could you give a short introduction to Heckle?
The way that Heckle is implemented is it doesn't work on the source, it works with the AST via ParseTree so it can work in a higher level. Another interesting project is SuperCaller. What is that?
So it's mostly a debugging tool?
At runtime? You could change objects or...?
Another big project that you are working on, you are part of the Ruby Hit Squad. What is the Ruby Hit Squad?
Your first target was Capistrano. What were the big problems about Capistrano?
So the approach is basically to go with existing tools?
So that work basically is distributed as vlad the deployer?
So how did you come up with the name?
What other things did you fix in Vlad. I heard that you fixed OpenSSH or you work with OpenSSH or SSH instead of reimplementing it?
What's the future for Vlad will be run along side of Capistrano, might some changes be mixed into Capistrano? What are the ideas?
So any other big features for the next release of Vlad?
What's the problem with Win42? Is that a Ruby Inline problem?
Moving on, many of these projects are part of the Seattle Ruby brigade. What is the Ruby brigade?
How big are these meetings? How many people come?
Are these always the same people or it's a turn-over, with new people?
Organizing the Seattle.rb group or working with the group, do you have any tips for other people who might want to create a brigade, in their own city, in their own area?
Do you rent out a coffee shop?
In the recent weeks what are some of the topics that you or your projects they were working on besides the ones that you already mentioned?
Since we're back to Gems there's actually a big development now in Ruby Gems – they're going to be included in 1.9. How far long is this process?
So you are going to change the require gem instruction or are you going to change it to require?
Will the inclusion of RubyGems cause problems with other package management systems like Debian or BSD Ports?
So 1.9 is still linked to RubyForge or there will be some change, on official server?
To finish up we might mention another library that you are working on that deals with Memcached. What is Memcached?
So is this just a wrapper around some native library or do you talk to the server?
Do you know if any sites that use Memcached via your Ruby wrapper?
This is a great way to end an interview. It was very nice to talk to you Eric. you're a very prolific hacker and a big contributer to the Ruby community. Thank you very much.
show all  show all
Significantly different from all the compared projects. by Eivind Eklund Posted Mar 28, 2008 9:38 AM
  1. There are two things with RubyGems that are significantly different from the projects that Eric Hodel compared to (Debian, FreeBSD ports, MacPorts.) These differences are large enough that it in many ways is just as reasonable to compare RubyGems to a Windows installer or a developer-uploaded tar.gz file with script binaries to extract directly into /usr/local.

    1. All the listed projects are primarily packaging stuff that is developed by other people. This means that each maintainer packages a much higher number of packages, and that the community is focused around packaging to a much larger degree than the people the produce Gems. This also means that there is much more quality control around the packaging process itself (plus often some cross-testing to make sure that various packages work together, and registration of conflicts when they turn out not to do so.)

    2. All the listed projects are strongly tied in with the underlying operating system, and do work to make the packages actually work correctly there. RubyGems does the opposite - it provides guarantees that are in direct contradiction with those many operating systems give, thus making more or less sure that what is distributed as Gems not do fit easily with the rest of the operating system (actually, the "guaranteed brokenness" is only available on traditional Unix platforms. The platform policies of Mac OS X, Windows, Gentoo and some others are reasonably close to Gems.)

    I find the differences between Gems and Ports/Debian/etc packaging to be so large that it is misleading to use the OS packaging systems as an analogy to describe Gems. Instead, say what Gems is: A system for distribution of Ruby programs and libraries, where the author release it and is responsible for making it work everywhere - albeit a bit foreignly - and where the author is responsible for avoiding conflicts.

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.