Codefest Grant - RubyGems cleanup and enhancement

Curt Hibbs wrote:

James Britt wrote:

Curt Hibbs wrote:

This is probably not feasible, but I'll throw it out there anyway -- I'd
like to see a GUI front-end to RubyGems... a RubyGems browser

of sorts. Rich

Kilmer started on one, but I don't think it got finished (if it

did, I would

already have it in the One-Click Ruby Installer).

Isn't that what RubySlippers is?

Have you tried it? I would call it a primitive web front-end, and pretty
clunky at that.

I've used it, and it's not bad, but not the native-OS app I would prefer.

James

<snip>

> > This is probably not feasible, but I'll throw it out there anyway -- I'd
> > like to see a GUI front-end to RubyGems... a RubyGems browser
> of sorts.

<snip>

> I have no idea where my little mockup went, but it only took an hour
> or so to do, so if someone wanted to, it wouldn't take them long to do
> their own over again.

Did you use FXRiuby? Anyway, I knew it was a long shot, but it would be
great if they decided to pick this up.

Curt

Yeah - FXRuby. If I wasn't so swamped with school stuff I'd be more
than happy to make a little mockup again... it wasn't that hard... an
FXTreeList on the left side, with some textfields and stuff on the
right for packet specific info...

Like I said though - it was a pretty poor mockup. I really hoped they
would take it to a much higher level (which is probably why I've been
content waiting...).

Maybe I shouldn't wait any more... it would be fun... grr... I _have_
to concentrate on school... This couldn't wait until the end of April
could it? I'd have ~20 a week free time then...

-Rich

···

On Sun, 13 Mar 2005 01:08:43 +0900, Curt Hibbs <curt@hibbs.com> wrote:

This is not meant as an attack.

of course not

I'm asking an honest question,
hopefully of the RPA developers. Is the RPA still under active
development? It seems to have slipped off the public radar. (Or
perhaps it's just my radar.)

yes it's still alive, though Mauricio and others have had holidays and
daytime work, we'll be in full steam again soon.

discussions, coordination and all that's rpa-related happens in #RPA
on irc.freenode.net

cheers,
                             vruz

While I'm on a roll with questions that could get me in trouble (again, I mean no offense): Was the RubyGems team aware of this Codefest project before it was accepted?

Yes

Will any RubyGems members be at the actual event?

They're more than welcome, but I can't speak for their plans.

PGP.sig (186 Bytes)

···

On 14 Mar 2005, at 16:14, James Edward Gray II wrote:

--
Eric Hodel - drbrain@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

This is not meant as an attack. I'm asking an honest question,
hopefully of the RPA developers. Is the RPA still under active
development? It seems to have slipped off the public radar. (Or
perhaps it's just my radar.)

The port/package manager (rpa-base) and the incipient infrastructure
(repository, VCS, wiki) are unsatisfactory under our (admittedly severe)
criteria. They will undergo major restructuring.
Had they been deemed adequate, RPA would have been proposed for
widespread public consumption long ago, but it was in a testing phase
for a reason.

As for

Combining RPA and Gems is probably not going to be done during our
Codefest.

and

Is there any chance you could start this process a little bit? Choose
some of the main features of RPA that are missing from RubyGems and find
a way of integrating them?

Comparing RubyGems to RPA is akin to assimilating rpm to FreeBSD. It
doesn't really make that much sense. I understand that you mean one of
(1) RubyGems (the installer) could take some features from rpa-base
(2) RubyGems (the project) could grow in scope and try to reach some of
    the goals expressed by RPA (making it a sort of RPAlite?)

Regarding (1), some things like proper DATADIR support, installation
into sitelibdir, transparent operation, compatibility with native tools,
etc. are hardly doable in RubyGems due to some fundamental implementation
choices.

As for (2), it is hard to tell which are exactly RubyGems' goals because
AFAIK there is no public manifesto comparable to
http://rpa-base.rubyforge.org/wiki/wiki.cgi?RpaManifesto

I would really appreciate if Chad, Jim, Gavin, ..., clarified the
situation. Especially since there have been some talks as of late about
RubyGems replacing RAA altogether, RubyGems being the only repository
for Ruby software, etc.

I'm looking forward to the results of this codefest. Happy hacking to
the Seattle.rb brigade :slight_smile: I'm very interested in the outcome of that
event, for I don't really know how effective codefests can be in
practice. Since I know the problem space ((re)packaging) and the
concerned codebase (RubyGems) fairly well, I hope I'll be able to draw
some conclusions.

···

On Tue, Mar 15, 2005 at 09:11:07AM +0900, James Edward Gray II wrote:

--
Hassle-free packages for Ruby?
RPA is available from http://www.rubyarchive.org/

Everyone STFU about RPA vs Gems. It is completely and 100% OT to this
thread. We were mining for data and you guys introduced pure noise.

Is STFU an acronym for yet another packaging system ?

I'm confused. _What_ goes for writing a whole GUI frontend?

You're going to write a frontend for 'gems'? The _first_ release
should be entirely possible in one weekend with a couple of good
developers.

I'm curious so that I know if I should bother to start thinking about
it on my own or not...

... on the other hand...

If you're telling me to STFU about discussing the fact that I think a
GUI for the whole 'gems' concept would be an enhancement (since you
asked for our ideas on possible enhancements), then I'm really
confused...

I guess I just think that STFU is pretty harsh for a list like
'ruby-talk'... and as a possible point of interest: I personally
decided to try and live without RPA since one of the 'developers' had
such bad PR. I'd really hate to see 'gems' go the same route.

Thanks for contributing! I hope I can contribute too.

-Rich

···

On Wed, 16 Mar 2005 04:48:49 +0900, Ryan Davis <ryand@zenspider.com> wrote:

On Mar 14, 2005, at 9:29 PM, Ryan Davis wrote:

> On Mar 14, 2005, at 12:23 PM, Ben Giddings wrote:
>> Eric Hodel wrote:
>>> Combining RPA and Gems is probably not going to be done during our
>>> Codefest.
>> Is there any chance you could start this process a little bit?
> no

Lemme clarify a bit more.

Everyone STFU about RPA vs Gems. It is completely and 100% OT to this
thread. We were mining for data and you guys introduced pure noise.

Just for total clarity, here is the original email:

> Seattle.rb will be hosting a RubyGems cleanup and enhancement codefest!
>
> We would like to solicit your ideas on what you want to see cleaned up
> or enhanced in RubyGems.
>
> For our Codefest we do not plan on making large changes to the way
> RubyGems works. One thing we would like to focus on is making the gem
> command more friendly when you hit ^C, for example.
>
> Combining RPA and Gems is probably not going to be done during our
> Codefest.

We'd like to show up w/ a prioritized list of things we'd like to do
and maybe even some already failing unit tests so we can be on task
from the very beginning. Instead, we are weeding through a bunch of
dogmatic crap that we didn't ask for and are not much closer to having
said list. I've flagged a couple of email for ideas, but they are a
vast minority thus-far.

P.S. That goes for writing a whole GUI frontend as well. We are meeting
for ONE WEEKEND.

Thanks! I was too lazy to 'm-w.com' it.

-Rich

···

On Tue, 15 Mar 2005 22:55:42 +0900, Martin DeMello <martindemello@yahoo.com> wrote:

Richard Lyman <lymans@gmail.com> wrote:
> synaptic), no method of 'making packages available' is going to appeal
> to the general populous (sp?) until then... anyway...

'populace'

martin

Ben, I reckon the best way to handle 'stable' and 'unstable' is to have
a website dedicated to Ruby packages (like an improved RAA; I know
that's been discussed recently). Allow user reviews, tie it in with
Rubyforge and RAA, allow categorisation as stable or unstable, etc.

Then people can browse the information as they please, and the 'gem'
command-line app can take advantage of the information as well (through
a web service or DRb or whatever).

It's crucial to keep the data separate from the metadata, IMO.

Cheers,
Gavin

Richard Lyman wrote:

> Did you use FXRiuby? Anyway, I knew it was a long shot, but it would be
> great if they decided to pick this up.
>
> Curt
>

Yeah - FXRuby. If I wasn't so swamped with school stuff I'd be more
than happy to make a little mockup again... it wasn't that hard... an
FXTreeList on the left side, with some textfields and stuff on the
right for packet specific info...

Like I said though - it was a pretty poor mockup. I really hoped they
would take it to a much higher level (which is probably why I've been
content waiting...).

Maybe I shouldn't wait any more... it would be fun... grr... I _have_
to concentrate on school... This couldn't wait until the end of April
could it? I'd have ~20 a week free time then...

Well, it sure seems unlikely that anyone else is going to do it befoe then,
so I'd say go for it!

Curt

···

On Sun, 13 Mar 2005 01:08:43 +0900, Curt Hibbs <curt@hibbs.com> wrote:

> While I'm on a roll with questions that could get me in trouble
> (again, I mean no offense): Was the RubyGems team aware of this
> Codefest project before it was accepted?

Yes

Yes, and we whole-heartingly approve!

> Will any RubyGems members be at the actual event?

They're more than welcome, but I can't speak for their plans.

Heh, I doubt I will be able to be there. But depending on when the event is,
I plan on making myself available online as much as possible.

···

On Monday 14 March 2005 07:50 pm, Eric Hodel wrote:

On 14 Mar 2005, at 16:14, James Edward Gray II wrote:

--
-- Jim Weirich jim@weirichhouse.org http://onestepback.org
-----------------------------------------------------------------
"Beware of bugs in the above code; I have only proved it correct,
not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)

Chad has hinted that he may be able to show... as for actual specifics... we don't even have a date yet. We will gladly take his schedule into consideration when coming up with tentative dates.

···

On Mar 14, 2005, at 4:50 PM, Eric Hodel wrote:

Will any RubyGems members be at the actual event?

They're more than welcome, but I can't speak for their plans.

Comparing RubyGems to RPA is akin to assimilating rpm to FreeBSD.
It doesn't really make that much sense. I understand that you mean
one of (1) RubyGems (the installer) could take some features from
rpa-base (2) RubyGems (the project) could grow in scope and try to
reach some of the goals expressed by RPA (making it a sort of
RPAlite?)

Regarding (1), some things like proper DATADIR support,
installation into sitelibdir, transparent operation, compatibility
with native tools, etc. are hardly doable in RubyGems due to some
fundamental implementation choices.

Sorry, Mauricio, but I disagree. Nothing about RubyGems *prevents*
any of the above. Nothing. The gemspec can be translated into
"native" tools, and the RPA-base layer could be implemented on top
of RubyGems as a platform (e.g., making the sitelibdir and DATADIR
support work), and since Matz seems to have indicated that RubyGems
will become part of the core when it's ready, then it will work
transparently.

I have further indicated in several places how RPA "version-sets"
could be done with RubyGems -- and the latest version of RubyGems
appears to include something that supports this, although it does
require some additional code at the moment.

As for (2), it is hard to tell which are exactly RubyGems' goals
because AFAIK there is no public manifesto comparable to
http://rpa-base.rubyforge.org/wiki/wiki.cgi?RpaManifesto

Again, this isn't really true. There isn't anything currently
available aside from the project description:

  RubyGems is the Ruby standard for publishing and managing third
  party libraries.

It is *intended* to be the Ruby standard for publishing and managing
third party libraries, certainly. Much as there's a standard layout
and Makefile form for Perl that makes things Just Work, so RubyGems
is intended to be, while solving certain real problems.

I would really appreciate if Chad, Jim, Gavin, ..., clarified the
situation. Especially since there have been some talks as of late
about RubyGems replacing RAA altogether, RubyGems being the only
repository for Ruby software, etc.

Um. No. RAA isn't going away. That HAS been made very clear.
RubyGems may become the preferred way of packaging projects, with a
RubyGems site and/or RubyForge becoming a preferred location for
distribution -- but not precluding alternative distribution sites.

-austin

···

On Tue, 15 Mar 2005 10:44:36 +0900, Mauricio Fernández <batsman.geo@yahoo.com> wrote:
--
Austin Ziegler * halostatue@gmail.com
               * Alternate: austin@halostatue.ca

Hi Mauricio,

I'm not sure I completely understand the analogy comparing RubyGems and RPA to rpm vs. FreeBSD. I understand the basics however. RPA doesn't care too much about the package format, it's more focused on the process, and making sure that there are consistent, documented libraries that are production-ready (that's what your manifesto says anyhow). This is like how the FreeBSD ports system works (or so I understand). The packages are audited, repositories are maintained, etc. RubyGems on the other hand *seems* to be an attempt to create a package format, a repository and a basic package manager, with new features added as they become necessary. This is like the rpm package format and the rpm commandline tool. On the other hand, there's no attempt made to see if a given foo.rpm is any good.

There are certainly areas of overlap -- the package management tool, the repository, and the specific packaging requirements. These are the things that an end-user would interact with. Given that, it's completely understandable that people see them as competing projects. It just seems like RPA has a lot more depth in what it's trying to achieve.

I think the reason that RubyGems has a bigger "head of steam" is that it's easier for people to wrap their heads around it. All you have to do is convert your package to a Gem and get it in the repository. For RPA there seems to be a much higher barrier to entry, and (speaking as a developer) I don't exactly understand what I need to do.

I may be wrong, but it seems to me that there's something missing from *both* projects: stable vs. unstable.

In RPA it seems like *everything* is stable. That's good, but it's also limiting. I haven't used FreeBSD but I use Gentoo and Debian, and although the "stable" branches of both of those distributions are full of qualified, stable packages, they also have an unstable area, where the packages are in the appropriate format, but other than that, no real checking is done. I don't know about other people, but if I could only use the stable packages, I'd have a lot of trouble.

RubyGems is almost the opposite. In RubyGems *nothing* is stable, because there is no concept of stability. As DHH mentioned, you can use different gem repository URLs to have stable vs. unstable gems, however that's not a real solution. Once a gem is installed, as far as I know the system has no way of knowing whether it was tagged as stable or unstable. As far as I know, you can't track the 'stable' and 'unstable' gems separately.

The more I understand about RPA, the more useful I think it could be. I regret not understanding it better before. If the RPA and RubyGems efforts were combined, I could see RPA adding features to support RubyGems... but at this point I don't see how the opposite would work. It seems that because RubyGems was never planned as a system with audited packages, guaranteed-good documentation, multiple package formats, etc. it would be really hard to modify it to include those things.

It is much easier for me to see RPA being able to deliver packages to various distributions as .debs .rpms .tar.gzs, ebuilds and even gems. I think that's a really important feature of a packaging system.

So here's a question for you:

As I understand it, RubyGems is:

1) a package format
2) a repository
3) a package management tool

and essentially

4) a relatively easy way for developers to throw together a possibly unstable, but possibly really useful library and put it somewhere where people can get to it

RPA has all of the above except number 4, I believe. Could RPA also provide that?

Ben

Probably.

···

On Wed, 16 Mar 2005 04:54:49 +0900, vruz <horacio.lopez@gmail.com> wrote:

> Everyone STFU about RPA vs Gems. It is completely and 100% OT to this
> thread. We were mining for data and you guys introduced pure noise.

Is STFU an acronym for yet another packaging system ?

I think Ryan is just asking everyone, in his own sweet way, to "STFU"
about comparisons between RPA and RubyGems because *that* discussion
is completely off-topic for the originally stated purpose of *this*
thread (namely, Eric's question: "What you want to see cleaned up or
enhanced in RubyGems?").

I don't believe that anyone is opposed to the development of a GUI
front-end to RubyGems, but it may be (in Ryan's estimation) too large
of a project for the guys to try to tackle in one weekend, considering
all of the other possible "cleanups" that likely need to be done.

···

On Wed, 16 Mar 2005 07:33:11 +0900, Richard Lyman <lymans@gmail.com> wrote:

If you're telling me to STFU about discussing the fact that I think a
GUI for the whole 'gems' concept would be an enhancement (since you
asked for our ideas on possible enhancements), then I'm really
confused...

We'd like to show up w/ a prioritized list of things we'd like to do
and maybe even some already failing unit tests so we can be on task
from the very beginning. Instead, we are weeding through a bunch of
dogmatic crap that we didn't ask for and are not much closer to having
said list. I've flagged a couple of email for ideas, but they are a
vast minority thus-far.

P.S. That goes for writing a whole GUI frontend as well. We are meeting
for ONE WEEKEND.

I'm confused. _What_ goes for writing a whole GUI frontend?

Not going to happen.

You're going to write a frontend for 'gems'?

No.

The _first_ release
should be entirely possible in one weekend with a couple of good
developers.

Exactly. The Codefest Grant is enough for one weekend, so what's the purpose of spending money on us if what we develop is unlikely to be maintained or finished? (I'm not terribly interested in maintaining it, and I'm certainly not interested in GUI toolkit headaches either.)

I'd much rather see the Codefest Grant money put to a use that will have the greatest benefit to Ruby, and a GUI only falls under the "ooh! shiny!" category for me.

Things like behaving nicely to ^C or a command to remove old gems are much more beneficial and I think the community will get more value for their donated dollars. We're looking for the rough edges and dull surfaces to sand down and polish. (Yeah, I'm going to be spending your money, so I don't want to be producing stillborn projects.)

The idea is to pull off a huge success so we (the community) can point to something and say "look what your donated dollars bought!" This way more dollars will be donated which allows larger, longer projects to be funded.

PGP.sig (186 Bytes)

···

On 15 Mar 2005, at 14:33, Richard Lyman wrote:

On Wed, 16 Mar 2005 04:48:49 +0900, Ryan Davis <ryand@zenspider.com> > wrote:

--
Eric Hodel - drbrain@segment7.net - http://segment7.net
FEC2 57F1 D465 EB15 5D6E 7C11 332A 551C 796C 9F04

'populous' is a word in its own right, so m-w.com wouldn't have been too
helpful :slight_smile:

martin

···

Richard Lyman <lymans@gmail.com> wrote:

On Tue, 15 Mar 2005 22:55:42 +0900, Martin DeMello > <martindemello@yahoo.com> wrote:
> Richard Lyman <lymans@gmail.com> wrote:
> > synaptic), no method of 'making packages available' is going to appeal
> > to the general populous (sp?) until then... anyway...
>
> 'populace'

Thanks! I was too lazy to 'm-w.com' it.

Matz seems to have indicated that RubyGems
will become part of the core when it's ready, then it will work
transparently.

This ISN'T true. And I quote matz here:

"I think there's need for both a packaging "system" and a package
repository. I wish for a sound cooperation of the former (rubygems?)
and the latter (rpa?). I'd happy to merge the packaging system (with
which both teams can agree) in the standard Ruby."

Edited for easy reading: (uppercase are RFC-style emphasis, not
irc-style yelling)

"I wish for a sound cooperation of RubyGems and RPA.
I'd be happy to merge the packaging system (with which BOTH TEAMS CAN
AGREE) in the standard Ruby"

Those who want to read carefully without skipping words will understand:

···

--------------------------------------------------------------------------------------------------------

Matz HAS NOT indicated RubyGems will become part of the core.

Matz HAS indicated BOTH TEAMS will have to agree before ANYTHING gets
in the standard Ruby.

Another flawed misconception:
--------------------------------------------
The language has to be modified to accomodate packaging

No decent programming language I have seen on earth has had to be
modified in order to accomodate a packaging system, (whether RPA or
Rubygems is beyond the point) which is ultimately an application level
concern.

Ideally, the Ruby implementation by Matz COULD, (but doesn't
necessarily HAVE TO) implement the needed feature as an extension to
the readily available 'require' statement.

The consequences of something like a pervasive require_gem as part of
the standard could stay with us for too many years to come. Think of
Ruby compilers dealing with that.

Finally as Matz has clearly said:

"I wish for a sound COOPERATION of RubyGems and RPA."

This doesn't mean RubyGems has to absorb RPA, nor RPA absorb RubyGems,
nor any of the other misconceptions that have been widely advertised.
Much less the horrible thought of butchering either project, as
someone has cluelessly said in previous threads.
(something clearly neither the RubyGems team nor the RPA team want)

from the dictionary:

TO COOPERATE:
--------------------------
   1. To work or act together toward a common end or purpose.
   2. To acquiesce willingly; be compliant
   3. To form an association for common, usually economic, benefit

[I write this reluctantly, such a déjà vu]

> Regarding (1), some things like proper DATADIR support,
> installation into sitelibdir, transparent operation, compatibility
> with native tools, etc. are hardly doable in RubyGems due to some
> fundamental implementation choices.

Sorry, Mauricio, but I disagree. Nothing about RubyGems *prevents*
any of the above. Nothing.

It makes these things more difficult ("hardly doable", maybe I should
have phrased it as "hard to do"), to the point that we would have to
work around some of RubyGems' limitations, relative to the problem we
are trying to solve. This is one of the reasons why there's no net gain
for us in using RubyGems.

I must say that I do not really understand why so much pressure is put
on us to dump a custom-made tool, crafted to suit our needs, which does
not compete against RubyGems, in favor of the latter. In global terms,
the existence of rpa-base is positive for RubyGems to the extend that
the latter has reused code from the former.

I don't know why the very existence of RPA's technology, which is not
being imposed on anyone, and is there to fit a particular role, must be
constantly justified. There are reasons to have it; the code works for
us and will work better.

The gemspec can be translated into "native" tools, and the RPA-base
layer could be implemented on top of RubyGems as a platform (e.g.,
making the sitelibdir and DATADIR support work)

That would involve bypassing the services provided by the RubyGems
sublayer and operating directly on the destination FS. The primitives
offered by RubyGems are not sufficient. It wouldn't make that much sense
to have the fundamental operations performed by such a rpa-base layer
far exceed those offered by the "platform" the latter is built on.

As for the conversion of the gemspec, note that this requires access
to the pristine sources. The gemification process is not idempotent,
which is quite unfortunate since RubyGems is meant to be the standard
*upstream* format. Besides, RubyGems packages cannot be converted into
satisfactory native packages in general; there's too much variance and
the modifications upstream has to do to make software work with RubyGems
get in the way.

and since Matz seems to have indicated that RubyGems
will become part of the core when it's ready, then it will work
transparently.

Some things (DATADIR, etc) wouldn't work transparently as of today even
if RubyGems were integrated into the std. library.

AFAIK matz's latest take on this is

I'd happy to merge the packaging system (with
which both teams can agree) in the standard Ruby.

That's fine; maybe some of our ideas can help make RubyGems better.

But what gets into the standard library is not really relevant for the
issue being discussed. I think it is not excessive to claim the right
to use the best tool for the goals we have decided to strive for.
Not surprisingly, we think that the best tool can be one designed
specifically to satisfy those needs.

The alternative would be pestering the RubyGems team until RubyGems
does things the way RPA needs them done. I believe that wouldn't be any
better, and I think most people would agree.

I have further indicated in several places how RPA "version-sets"
could be done with RubyGems -- and the latest version of RubyGems
appears to include something that supports this, although it does
require some additional code at the moment.

I had that idea ~ 1 year ago (it was considered while evaluating
RubyGems, before the development of rpa-base began) but rejected it
because several problems would still remain.

> As for (2), it is hard to tell which are exactly RubyGems' goals
> because AFAIK there is no public manifesto comparable to
> http://rpa-base.rubyforge.org/wiki/wiki.cgi?RpaManifesto

Again, this isn't really true. There isn't anything currently
available aside from the project description:

  RubyGems is the Ruby standard for publishing and managing third
  party libraries.

How is that equivalent to a manifesto? :slight_smile:

> I would really appreciate if Chad, Jim, Gavin, ..., clarified the
> situation. Especially since there have been some talks as of late
> about RubyGems replacing RAA altogether, RubyGems being the only
> repository for Ruby software, etc.

Um. No. RAA isn't going away. That HAS been made very clear.
RubyGems may become the preferred way of packaging projects, with a
RubyGems site and/or RubyForge becoming a preferred location for
distribution -- but not precluding alternative distribution sites.

Austin, I know RubyGems quite well, better than most of its users actually
(better than some of the developers too, there's more code of mine in
RubyGems after all hehe :). *I* know that RAA is not going away.

But I think the RubyGems team could prevent further pointless discussion
in ruby-talk by specifying their goals in something comparable to the RPA
manifesto (which the above one-sentence description is *not*).

The talks about RubyGems replacing RAA, etc, didn't originate in the
RubyGems team but rather in groups of users. So it's up to the RubyGems
team to make sure that people understand what RubyGems is and what it is
not meant to be.

I'm asking them to write a manifesto so we have something to point at
instead of having to write lengthy explanations on ruby-talk every time
somebody starts such a "RubyGems vs RPA" or "Combining RubyGems and RPA"
or "Dump RAA, use Rubyforge, dump RPA, use RubyGems" thread.

···

On Tue, Mar 15, 2005 at 01:15:17PM +0900, Austin Ziegler wrote:

--
Hassle-free packages for Ruby?
RPA is available from http://www.rubyarchive.org/