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