From: Pedro Del Gallego Date: 2007-03-22T03:42:03+09:00 Subject: [OT] Google Summer of Code proposal. Hi, Three days ago, i have send this sketch proposal to the ruby-talk mailing list, but i do not obtein to much feedback. I would like yours technical and community opinions. Its rspec the correct tool or maybe its better test::unit? Its usefull for the community? (or why not?) What must be "core" of ruby? What do you think i must add to the proposal ? Any other opinion its really welcome. Thanks ---------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------- == Cover the core of Ruby with RSpec == === Abstract === There are a number of Ruby implementations available today. The "standard" implementation is the original C-language-based implementation, written by Yukihiro Matsumoto, and now maintained by him and a number of contributors. In the last year, emerge different Ruby Virtual Machine (VM), YARV, Rubinius, JRuby, Gardens Point Ruby .NET, XRuby or cardinal are some good examples among others [1]. The goal of this proposal is create a common set of specification (using rspec) for the Ruby core, that verify the correct and same behavior of the different virtual machines and implementation. I would like the specs be usable for any virtual machine implementation or implementation. The goal in writing a spec is to describe the expected behavior from the objects. Each specification should describe one facet of the behavior. Specs should prefer clarity and understanding over any other principle. Test Driven Development (TDD) has you define the behavior of your system by writing small tests that precisely define some small piece of your system's behavior. Then you implement that behavior. Then you clean up & improve your design. === Benefits to the Community === The goal would be to have a single specification that different ruby implementations can check against it. If the community have a well defined and reusable specification to check against it. === The scheme : === * language is for specs that describe language-level constructs. * core is for specs for any of the built-in classes in Ruby. These are documented at http://ruby-doc.org/core. The ruby core set : * language : assignament, class, expression, method, operators, variables. exception * core library : array, proc, bignum, hash, range, binding, integer, regexp, class, io, signal, comparable, kernel , sprintf, marshal, string,dir, matchdata, struct, enumerable, math, symbol, errno, method, threadgroup, exception, module, thread, false, nil, time, file, numeric , true, objectspace, unboundmethod, fixnum, object, float, process. * core/literals :numbers, string, block, hash, regexp, symbol === Development plan === 0) Before start the projects. Improve my skills reading the rspec mailing list. Read specs code form open source projects that already use rspec. 1) Identify/define the core in the Ruby implementation. And document their behavior. - Discuss in each vm or implementation mailing list, what primitives, structures and libraries must been in the core of ruby. - Discuss in the ruby-core mailing list the correct behavior. 3) Write the rspec for language. 4) Write specs for core/literals 5) Write spec for the rest of the core. 6) Write documentation. Bibliography : 1 : http://headius.com/rubyspec/index.php/Ruby_Implementations -- ------------------------------------- Pedro Del Gallego Email : pedro.delgallego@gmail.com