Distributing libraries

Hi all,

I’m in the process of starting to integrate a new library into my
main project, Puppet[1]. I need to tightly control external
dependencies in the Puppet client, because Puppet will normally be
responsible for installing all software (it’s a configuration
management tool, and does things like create users and install
packages), so I’m trying to decide on the best way to distribute the
library with Puppet.

I’ve verified the license of the library (GRATR[2]) and discussed it
with its author, so there’s no problem there.

I’m currently distributing another library as part of Puppet, but
it’s a small library with just a few files, so I changed the
‘require’ lines to point to ‘puppet/’ instead of just
‘’; GRATR has enough files that I think this would be a pain
to maintain, especially since I expect to provide plenty of patches
and feedback to its author.

Puppet is currently distributed in at least 5 packaging formats,
excluding tarballs – sun, .deb, rpm, ebuild, and gem – and I can
basically guarantee that none of these except gems have a package for
GRATR, so I don’t think it would work very well to have just use
package dependencies, keeping in mind that Puppet is the tool used to
install packages for its users.

Is there a kind of standard way of distributing other Ruby libraries
with a Ruby project?

1 - http://reductivelabs.com/projects/puppet
2 - http://rubyforge.org/projects/gratr/