Git Hub Serves More Ruby Gems Than Rubyforge
gist.github.com
gist.github.com
GitHub soon will be the new operating system for coders: repository, product wiki, tech blog, issue tracker, collaboration, messaging
Thanks, guys, for making sharing code so easy!
An API for this would also be acceptable; then I can implement this for them.
We'd love to take what we've learned serving Rubygems and apply the knowledge to any other languages that have a solid packaging system.
Basically, CPAN modules are just archives (usually tar.gz). There is a program called the "PAUSE indexer" that examines the archives, and generates a mapping of module name => archive file. The CPAN client fetches this file, and then knows what archive to download to install the named module.
All github would need to do is maintain this index file; the rest is handled client-side.
(The indexing algorithm isn't much more than this: http://github.com/jrockway/metacpan/blob/be78711a6f12afd3b71...)
We (the ServerJS pseudo working group: https://wiki.mozilla.org/ServerJS) are currently looking at package management solutions for server-side JavaScript.
Using Rubygems with other languages like JS is one possibility, then we would get the Github integration for free.
And there's JSAN (http://openjsan.org/).
Kris Kowal hacked together one that pulls zipped repos directly from GitHub (or potentially any HTTP server) (tentatively named "tusk", implemented on "narwhal": http://github.com/tlrobinson/narwhal/tree/integration). One neat thing about that is you can create new versions just by tagging.
It's not really accurate, though because this lists every user's fork of a gem as a distinct gem. Here's a script I put together to get a different count, which I believe is more of a "real" count.
It's 3140 as I write this, not 4766.
Gem publishing is opt-in. Even for forks.
18 webrat
18 will_paginate
20 god
29 rack
30 sinatra
31 twitter
33 integrity
37 merb
48 dm
71 ruby
gem list -r -s http://gems.github.com | cut -d- -f 2 | cut -d " " -f 1 | sort | uniq -c | sort -n | tail -10