On Fri, 4 May 2001, Colin Steele wrote:

>
> David Alan Black writes:
>
> 	"there are discussions and comments there [on RubyGarden] that
> 	do relate to what I mean, but the wiki itself is not what I
> 	mean...
>
> 	The same is true of Colin's Ruby Cookbook.  These are very
> 	useful things, but what I'm clumsily groping for is something
> 	that has more to do with actual code production and
> 	execution."
>
> Let me try to restate what I *think* you're asking for, David, and if
> I'm wrong, just say so. :)
>
> Your first post - the one starting this thread - posited the need for
> a solution to the problem of saving Ruby code for reuse that was
> inappropriate for either an RCR or the RAA.

Not exactly saving.  More the reusing process itself.

> Your lastest post, excerpted above, when read in conjunction with the
> comments on RubyGarden to which you refer, seems to outline a somewhat
> different issue.  To wit, that the Ruby community needs a resource for
> the colloborative development of code, which also facilitates its
> archival and distribution (read: reuse).

Yes, something like that.

> Am I near the mark with these two restatements?
>
> If so, then I think that there are a couple of solutions out there for
> the first need you've identified.  (Though there's room for
> improvement.)
>
> The second issue is intriguing, however, and I can't think of anything
> that solves this problem... but perhaps it would help if you
> elaborated a bit.

OK :-)

Each one of us can make certain decisions, at the level of the
behavior of the language, in writing a stand-alone Ruby program.  I
can decide, for instance, that I want Array#sort! to return self
instead of nil on non-change.  I go like this:

   class Array
   alias :old_sort! :sort!
     def sort!(&b)
       old_sort!(&b) || self
     end
   end

and it does.  Moreover, I can do this (obviously) based on my own
taste, whether or not this ever changes in the core language.

Now, what happens if a bunch of people all want Array#sort! to work
this way?  Everyone could of course write the above in some kind of
prologue to every program they write that uses Array#sort!.  But I
don't find that answer satisfying.  Also, that's why the Cookbook and
rubygarden aren't exact fits for this.  One can certainly use code
from those sources, but at the stage of actually writing and running a
program, there's no sharing and no distribution.

So... the idea would be to have some way to get at things at this
level of implementation, and this level of size.  Of course the flip
side of all of this is that, given the compactness of Ruby, it's not a
*huge* disaster if several people write the same three lines of code
:-)  However, I would love to find a way to have these tiny but
non-trivial methods available more systematically.  Such
systematization might have to include dependency-checking, among other
non-trivial things.  (Thanks to Dave Thomas and Guy Hurst for some irc
feedback along those lines.)

One thing that's important, in case it isn't clear from what I'm
saying, is that I am not talking about branching off different
"Rubies".  The whole point is that this kind of language-shaping power
is already available in the language, so it then becomes a question of
what one wants to do about it.  Also I'm not just talking about
reimplementations of existing core Ruby methods.  It's more the scale
(small) that unites these things.  And it's really just a matter of
abstraction: instead of writing a bunch of in-house methods, being
able to tap into them.  I don't know -- maybe we should all just
contribute our personal little libraries to RAA.... but, again, that
somehow doesn't strike me as the best fit for Ruby.


David

-- 
David Alan Black
home: dblack / candle.superlink.net
work: blackdav / shu.edu
Web:  http://pirate.shu.edu/~blackdav