Git Hub Serves More Ruby Gems Than Rubyforge(gist.github.com)
gist.github.com
Git Hub Serves More Ruby Gems Than Rubyforge
http://gist.github.com/119751
8 comments
Every time I go to RubyForge to make a gem, I always get stuck on the first page, where they make you name the project, fill out the project purpose and summary, and so on. Then I realize I'm not ready to make it a gem yet, and push the repo up to GitHub.
Thanks, guys, for making sharing code so easy!
Thanks, guys, for making sharing code so easy!
When will Github do the same thing for CPAN modules? I would love to not have to release modules, and instead just tag my project as stable and let the toolchain do its thing.
An API for this would also be acceptable; then I can implement this for them.
An API for this would also be acceptable; then I can implement this for them.
We were talking tonight about CPAN modules, Python eggs, and PEAR... pears?
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.
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.
(The indexing algorithm isn't much more than this: http://github.com/jrockway/metacpan/blob/be78711a6f12afd3b71...)
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...)
I wish there was a standard package management protocol. Why does every language have to reinvent package management? They could still write the package manager clients (and servers) in their language, as they all seem to love to do.
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.
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.
Python may be a bit more difficult than you'd expect. The tools -- easy_install, pip, etc. -- are built around a core which, though it can use alternate sources to look for packages, happens to have things like heuristics for screen-scraping pypi.python.org hard-coded in.
Does anyone else find the idea of a package installer that /screen scrapes a website for download links/ deeply and fundamentally disturbing, or is it just me?
It's obviously impossible to write bad code in Python, so clearly everyone else is wrong. Guido said so, and he works for Google!
Luckily the documentation explains clearly those heuristics and provides examples so you can appease them yourself :)
[deleted]
This is something to be proud of, and github is great work.
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.
http://gist.github.com/120207
It's 3140 as I write this, not 4766.
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.
http://gist.github.com/120207
It's 3140 as I write this, not 4766.
Forks aren't gem-enabled by default. Meaning, the forker had to go out of their way to indicate there is something different about their gem. Is it possible there isn't unique code on some of these gems? Sure, but I wouldn't discount them outright.
Github server gem as authorname-projectname so duplicate of same project should be removed from this counting.
That will give actual number
3131 fyi. Here's the top 10:
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 -10Why?
Gem publishing is opt-in. Even for forks.
Gem publishing is opt-in. Even for forks.
Fantastic. I love Github so much more than RubyForge when dealing with gem creation. Now all it needs is to become a default source for rubygems.
[deleted]
What are the download stats?
GitHub soon will be the new operating system for coders: repository, product wiki, tech blog, issue tracker, collaboration, messaging