aboutsummaryrefslogtreecommitdiff
path: root/content/posts/2004-08-25-thoughts-on-rubyforge-rubygems.html
diff options
context:
space:
mode:
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.html89
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>
+