I watched the RubyConf ’08 keynote from Dave Thomas. Starting with his premise that you must work with tools that you love, Dave Thomas wants to improve the Ruby language he’s been using and loving for 10 years. His presentation details potential Ruby improvements, in terms of forks of Ruby.
According to him, time has come to fork Ruby. He presents 4 fork proposals.
Proposition 1: Ruby-Lite
- Stripped-down version of Ruby
- Ruby 1.0 was 2.2 MB; Ruby 1.9 is 32 MB. It’s currently too big!
- Not only the size has grown, but the number of methods too
- Remove some language features
- Remove some built-in classes/modules
- Trim down built-in classes (removing methods in them)
- Trim down standard library (extracting libraries into gems)
Proposition 2: Pruby
- Stands for ‘Parallel Ruby’
- Enable parallelism (akin to parallel assignment: a, b = b, a)
- introducing a parallel operator, e.g. //=
- operations could be done in parallel. e.g. x, y //= calc(1), calc(2)
- Easy Map/Reduce functionality in a few LOCs
Proposition 3: oTuby
- stands for ‘optionally-typed Ruby’
- would help for API documentation
- aid IDEs
- runtime checking (would help performance)
Proposition 4: Cluby
- stands for ‘closure-based Ruby’
- make it easier to create lambdas (with a terser syntax)
- rationalize procs, lambdas and blocks (in order to remove the too similar constructs/features, e.g. is there a need for both Proc.new and lambda?)
Propositions like these are certainly interesting. When put on the table during a keynote like this, they get your brain spinning and encourage both experimentation and innovation.
And I don’t think this kind of thinking is an exception in the Ruby community. Rather, I’d say this philosophy, “to try it and see if it works”, is common in the Ruby community. Ruby’s monkey-patching feature, where you can just open up classes and modify them, is an example of this possibility for experimentation. And if you experiment it, and “it works” for enough people, it will get included in the Ruby core. For example, the Symbol::to_proc method (a monkey-patching of the Symbol class) which was in the Ruby Extensions project back in 2005 will be included in Ruby 1.9.
I have a good feeling for all of Dave Thomas’ propositions, except maybe proposition #3, which I think would denature Ruby, instead of modifying/improving it. But then again, it’s only a feeling, and if somebody thinks it might be worth it, why not try it and see what happens. It is just too easy to experiment it outside of Ruby’s main line. If it “makes sense”, it will attract people naturally and gain momentum.
As Matz said in his own keynote, Ruby is fun and enjoyable. Dave Thomas would add that we should not be afraid of spawning variances of Ruby, and we should rather have fun trying new things with the language proper.