17.3. RubyForge and the RAA
There are two important sources any Rubyist should go to when looking for a Ruby library or app (anything outside the standard distribution). The first (and older) of these is the Ruby Application Archive, or RAA, hosted on the main Ruby site at http://raa.ruby-lang.org.
The name is a slight misnomer, as most of its entries are libraries, not applications. Furthermore, you should be aware that it is principally a repository for metadata, not for the files themselves. Therefore dead links are a perennial problem for users of the RAA. Nevertheless, this is an important resource because many Rubyists will search the RAA for a solution before trying a generalized search engine on the Web.
Metadata, of course, means things such as the project title and description, the author's name and email, and the URL for the project home page and/or download link. (Obviously it's in everyone's interest to provide as much information as possible and keep it updated.)
At the time of this writing, the RAA contains more than 1,400 items in four major categories and 243 subcategories. The four top-level categories are Application, Documentation, Library, and Ports. The last of these, Ports, is the smallest, because an actual port of Ruby is a nontrivial task; Documentation is not much larger. More than 90% of the RAA falls under Library or Application. Chances are anything you create will fit under one of these also.
The Application category has 94 subcategories comprising 449 projects. Some of the major subcategories are Language, Database, Editor, Cryptography, Wiki, GUI, and HTML. The Library category has 952 entries in 127 subcategories, Some of these subcategories are Audio, Calendar, Chemistry, Filesystems, Numerical, and Telephony. Proper categorizing can help people find your project. There is a search feature, of course, but it's nice to allow people to browse a hierarchy.
Having said that, these subcategories are not always partitioned with complete logic or orthogonality. Make compromises when you need to, or create a new subcategory (with caution).
It goes without saying you should avoid contributing to the problem of dead links. Try to have your project in a stable place when you upload your information. Revisit all your RAA projects from time to time and make sure that you haven't changed hosts or URLs or your email address since then.
The Rubyist's other best friend is RubyForge (http://rubyforge.org), which is a large project repository modeled loosely after SourceForge. RubyForge, of course, is different in philosophy from the RAA. It doesn't just store metadata; it stores the program files themselves, the documentation, and so on. At present, it hosts more than 1,600 projects (more than the RAA) and more than 6,800 users.
RubyForge also has support for mailing lists and such. If your project has many people interested in it, whether users or developers, they can stay in touch through these built-in facilities.
Every project has a download page that is handled pretty much automatically. When you upload files and create a new release, that release is then available to the users who browse RubyForge.
One cool thing about RubyForge is that if your uploaded package contains a gemspec, the gem will be built automatically and served from RubyForge. This is the way the world ought always to work.
Besides the download page, every project can have its own page. Many projects don't take advantage of this; you will often go to a page and it will say "Coming soon!" (which is the default). This might lead you to think that the project is dead or stalled, but in many cases it just means the owner never put up a page there. In case you haven't figured it out, I strongly recommend you do put up a page for your project, even if you have another one somewhere else. They're easy to keep in sync.
Typically the UNIX name, or short name, of the project will be used at the far left of the URL. For an example of a project that actually has a page at such a link, go to http://rmagick.rubyforge.org (Tim Hunter's RMagick library).
Access to your RubyForge project is usually accomplished by using scp and simply dropping files into well-known locations. Many operations such as mailing list management are accomplished through the web interface, of course.
There are command-line tools (and perhaps even GUI tools) for better interfacing with your RubyForge projects. These are not "official" or universally used. I suggest you do a web search to find whether they are still maintained.