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.
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.