Excellent. Please send me an email (jon AT jrock.us) and I can give you more detail (and help you implement).
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.
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...)