diff options
Diffstat (limited to 'content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html')
-rw-r--r-- | content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html b/content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html new file mode 100644 index 0000000..73db4ae --- /dev/null +++ b/content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html @@ -0,0 +1,89 @@ +--- +date: "2004-08-25T14:44:12Z" +title: Thoughts on RubyForge/RubyGems +--- + +<p> +In order to post a <a href='http://rubygems.rubyforge.org/'>RubyGem</a> +at the moment, you have to create an account on <a +href='http://www.rubyforge.org/'>RubyForge</a>, then create a project, +<em>then</em> upload the gem. <a +href='http://www.rubyforge.org/'>RubyForge</a> gives the same things +that <a href='http://www.sourceforge.net/'>SourceForge</a> does; a web +site, a <acronym title='Concurrent Versioning System'>CVS</acronym> +repository, a file area, forums, mailing lists, kitchen sink, etc. +Pros: <a href='http://www.rubyforge.org/'>RubyForge</a> is prettier, +simpler, and more stable than <a +href='http://www.sourceforge.net/'>SourceForge</a> (although I've seen +Windows 95 machines that are more stable than <a +href='http://www.sourceforge.net/'>SourceForge</a>, so that's not saying +much). Also <a href='http://www.rubyforge.org/'>RubyForge</a> doesn't +have 8 gadzillion dead projects on it, so it's significantly faster than +<a href='http://www.sourceforge.net/'>SourceForge</a>. Cons: No +automated interface (<acronym title='eXtensible Markup Language-Remote +Procedure Call'>XML-RPC</acronym>, <acronym title='Simple Object Access +Protocol'>SOAP</acronym>, email, smoke signals, etc... <a +href='http://www.freshmeat.net/'>Freshmeat</a> has an <a +href='http://freshmeat.net/articles/view/1048/'><acronym +title='eXtensible Markup Language-Remote Procedure +Call'>XML-RPC</acronym> interface</a>, so this isn't an unrealistic +request), no quick way of creating a minimalist project (for example, a +project that just classifies itself in the <a +href='http://rubyforge.org/softwaremap/'>Trove</a> and posts a <a +href='http://rubygems.rubyforge.org/'>gem</a>..ie, what I want to do), +and no integration with <a href='http://raa.ruby-lang.org/'><acronym +title='Ruby Application Archive'>RAA</acronym></a> or <a +href='http://www.freshmeat.net/'>Freshmeat</a>. +</p> + +<p> +I want to elaborate on the last one a bit, because that's a problem with +both <a href='http://www.rubyforge.org/'>RubyForge</a> and <a +href='http://rubygems.rubyforge.org/'>RubyGems</a>. Let's look at the +steps I take when I release the latest version of a <a +href='http://www.ruby-lang.org/'>Ruby</a> binding: +</p> + +<ol> +<li>Sanity check, make sure the thing still compiles</li> +<li>Run whatever testing script I have written, make sure I haven't broken anything crucial</li> +<li>Update the documentation (README, TODO, BUGS, etc)</li> +<li>Tag the release in <acronym title='Concurrent Versioning +System'>CVS</acronym>. If I'm incrementing the major or minor number, then I create a new branch as well.</li> +<li>Export the specified tag to anohter directory (I've got one called releases/ on my workstation).</li> +<li>Double-check everything again to make sure things are where they should be (I catch a lot of stupid mistakes here, by the way).</li> +<li>Run <a href='http://rdoc.sf.net/'>RDoc</a> to generate the developer documentation.</li> +<li>Tar the release up.</li> +<li>Sign the tarball with <a href='http://www.gnupg.org/'>GnuPG</a> (everyone should be doing this; shame on you if you aren't).</li> +<li>Upload the tarball, signature, ChangeLog, and API documentation to <a href='/'>Pablotron</a>.</li> +<li>Update the links, version number, and possibly the blurb on the software page.</li> +<li>Post an entry to the front page briefly describing the release.</li> +<li>Update the binding's entry on <a href='http://raa.ruby-lang.org/'><acronym title='Ruby Application Archive'>RAA</acronym></a>.</li> +<li>Update the entry on <a href='http://www.freshmeat.net/'>Freshmeat</a>.</li> +<li>Post a short message to <a href='http://www.ruby-talk.org/'><code>ruby-talk</code></a>.</li> +</ol> + +<p> +If I'm using creating a <a href='http://rubygems.rubyforge.org/'>gem</a>, then we have to add the following items to the list: +</p> + +<ul> +<li>Update <code>gemspec</code>.</li> +<li>Create <a href='http://rubygems.rubyforge.org/'>gem</a>.</li> +<li>Upload <a href='http://rubygems.rubyforge.org/'>gem</a> (and possibly release tarball, signature, etc), to <a href='http://www.rubyforge.org/'>RubyForge</a>.</li> +<li>Update project information on <a href='http://www.rubyforge.org/'>RubyForge</a>.</li> +</ul> + +<p> +Well, if there was some interaction between <a href='http://www.rubyforge.org/'>RubyForge</a>, <a href='http://raa.ruby-lang.org/'><acronym title='Ruby Application Archive'>RAA</acronym></a>, and <a href='http://www.freshmeat.net/'>Freshmeat</a>, a lot of redundant steps could be eliminated. I'm picking on <a href='http://www.rubyforge.org/'>RubyForge</a> here because it's the new kid on the block; <a href='http://www.freshmeat.net/'>Freshmeat</a> has been around since the dawn of time, and <a href='http://raa.ruby-lang.org/'><acronym title='Ruby Application Archive'>RAA</acronym></a> has Ruby's semi-answer to <a href='http://www.perl.com/'>Perl's</a> <a hrf='http://www.cpan.org/'><acronym title='Comprehensive Perl Archive Network'>CPAN</acronym></a> since I started using <a href='http://www.ruby-lang.org/'>Ruby</a>. For example, let's say <a href='http://www.rubyforge.org/'>RubyForge</a> had an <acronym title='eXtensible Markup Language-Remote Procedure Call'>XML-RPC</acronym> interface, and it could communicate with <a href='http://raa.ruby-lang.org/'><acronym title='Ruby Application Archive'>RAA</acronym></a> (via some <acronym title='Remote Procedure Call'>RPC</acronym> interface) and <a href='http://www.freshmeat.net/'>Freshmeat</a>. Now write a script that creates a <a href='http://rubygems.rubyforge.org/'>gem</a> and does the necessary updates to my personal page, then connects to <a href='http://www.rubyforge.org/'>RubyForge</a> via <acronym title='eXtensible Markup Language-Remote Procedure Call'>XML-RPC</acronym> and uploads my tarball, <a href='http://rubygems.rubyforge.org/'>gem</a>, tarball signature, and gem signature, which are then automagically propogated to both <a href='http://www.freshmeat.net/'>Freshmeat</a> and the <a href='http://raa.ruby-lang.org/'><acronym title='Ruby Application Archive'>RAA</acronym></a>. +</p> + +<p> +In short, an automated update interface combined with the ability to +interact with the other existing software indices would allow me to +eliminate half of the steps on my software release checklist and make <a +href='http://www.rubyforge.org/'>RubyForge</a> incredibly useful to +developers, even if they don't need web hosting, a mailing list, or a +<acronym title='Concurrent Versioning System'>CVS</acronym> repository. +</p> + |