We've been thinking a lot about our gem strategy here at GitHub, and after a
discussion with Yehuda a number of weeks ago, I'd like to propose a possible
solution that describes how GitHub gems and Rubyforge gems can live together
in peace.
The solution is to add the concept of namespaces to the gem server index.
For example, if I publish my Jekyll gem on GitHub, it would be installed via
Rubygems with the following invocation:

gem install mojombo/jekyll

This command would look in each source, in order, for a gem with the
'mojombo' namespace and the 'jekyll' name. The main benefit here is that the
gem would be installed as just 'jekyll' instead of 'mojombo-jekyll' as in
the current situation. This elegantly solves the problem that stems from a
gemspec declaring 'jekyll' as a dependency, and even though the
'mojombo-jekyll' gem is installed, it is not detected as satisfying the
dependency even though, logically, the user expects that it should. This
also solves the problem of gem name collisions between Rubyforge and GitHub
such as 'net-ssh'.

To maintain backwards compatibility, Rubygems would still support
un-namespaced gems in exactly the same manner that it does today. Rubyforge
wouldn't need to use the namespace feature, but GitHub would, and in doing
so, become a much better participant in the Rubygems world.

Tom

--
Tom Preston-Werner
GitHub Cofounder
http://tom.preston-werner.com
github.com/mojombo
_______________________________________________
Rubygems-developers mailing list
http://rubyforge.org/projects/rubygems
Rubygems-developers@rubyforge.org
http://rubyforge.org/mailman/listinfo/rubygems-developers

Reply via email to