John Lam (CLR) wrote:
> Hi Everyone,

Hello John! You're alive!

> I think it would be really useful if we could create a central 
> repository for an official language verification suite. Like a lot of 
> folks, I favor reading code over reading prose, wherever possible. I?ve 
> been working on a little side project where I?m defining language 
> behavior using RSpec. Over the next week or so, I anticipate being able 
> to spend a significant chunk of time working on fleshing out my spec. 
> I?d like to contribute it back to the community, and use it as a 
> starting point for some more serious discussions about the definition of 
> the language.

I hope such a spec would be developed "in the open" from the beginning, 
rather than being developed behind closed doors and only opened much 
later. And perhaps that's what you're getting at with your points below...

> 1)      I think that RubyForge would be a natural place to host the 
> specification project.

That seems reasonable to me, and there's already the RubyTests project 
which has been collecting test suites from multiple other projects. I've 
long wanted that to "reawaken" as the source for a complete test/spec 
suite for Ruby, since it's such a nicely named project and there's 
already a bunch of folks interested in it.

See: RubyTests project on RubyForge

> 2)      I think that the license for the specification project would 
> need to be very open - something like MIT would rock.

Well, of course Microsoft would be interested in something they could 
take behind closed doors :) Seriously though, for the spec/test suite, 
just about anything is fine; I'd be very surprised if anyone were able 
to take a test suite to closed source and do anything evil with it.

> 3)      It would be great to give commit rights to representatives from 
> each of the Ruby implementation projects by default, and to any 
> interested members from the Ruby community.

RubyTests already has committers from almost all the major projects 
(except the CLR-based ones, though they're welcome to come too). And 
we've already contributed our JRuby tests back, eventually to use 
RubyTests as our primary test repository.

You will find it's difficult to get people to work on tests, but with 
the rising interest in JRuby and Rubinius, there seems to be growing 
desire to collaborate.

> 4)      Would it be possible to have RubyCentral act as the owner of the 
> project? Or some other neutral party? Suggestions welcome.

Owner?

> 5)      We should focus our energy on documenting existing behavior of 
> Ruby ? do folks object to 1.8.4 as the baseline?

1.8.4 at a minimum, and we've generally just been going with 1.8.5 for 
test and spec work.

...

And Ola brought it up, but I'll mention it again. The RubySpec project 
is a wiki for community-driven spec/documentation of Ruby. So far it's 
been helpful for our efforts implementing Marshal behavior, and we try 
to update it whenever we can. However, again, this is a tough area to 
get people to contribute given the prevalence of books that answer 
peoples' questions and a general lack of desire to spend time 
documenting Ruby's nooks and crannies.

See: http://www.headius.com/rubyspec
(soon to be moved to a real host on a nice machine)

I believe that a documented spec, even a free-form, community-driven 
spec, is a necessary complement to a test suite. Yes, rspec creates nice 
output. It's not nearly human-readable enough for an implementer to flip 
through it and find some implementation detail they might have missed. A 
test/spec suite also assumes a number of things: namely, that the parser 
and core interpreter are already functional, and that a number of basic 
builtin classes and libraries already work correctly. But how do you get 
up to that point without a grammar, documentation on the interpreter, 
and so on?

See: RubyGrammar project on RubyForge

And as far as compliance with a spec goes, I think almost any 
implementation will be able to comply at an extremely high level. JRuby 
obviously is a completely different implementation on a completely 
different VM, but we can run Rails and Gems and Camping and almost all 
the weirdest and wildest pure-Ruby libraries. And ideally, any Ruby spec 
would include a reasonable level of details, features, libraries, and so 
on that make up Ruby, so there's little chance of someone creating a 
"Ruby-like" language that alters something crucial.

I'd love for JRuby to be taken as the model of how to implement 
Ruby...we have the deepest respect for "matz's Ruby" and consider 
compliance with that implementation of paramount importance. We have no 
desire to extend or alter the language in incompatible ways, and our 
primary focus has not just been "implementing Ruby" but actually being 
able to run real Ruby apps. To this end, I believe a complete 
specification should also include a list of applications that should 
reasonably be expected to work on a given implementation. Is a Ruby 
implementation complete without support for RubyGems or Rake? Or without 
Rails? RSpec? These are staples of the Ruby world.

See: Legion, Pat Eyler's collection of app tests, and JRuby's own 
similar collection of tests

In closing, I'd say I'm 100% behind any effort to form a complete spec, 
and I've been trying to push such efforts in many different places. It 
won't be an easy thing to create, but the value of such a spec would be 
immeasurable.

- Charlie