This post originated from an RSS feed registered with Ruby Buzz
by Daniel Berger.
Original Post: Avoiding the Second System Effect
Feed Title: Testing 1,2,3...
Feed URL: http://djberg96.livejournal.com/data/rss
Feed Description: A blog on Ruby and other stuff.
Before I discovered Ruby, I was fairly excited by the prospect of a Perl 6. I wasn't expecting too much. I just wanted hash slice syntax cleaned up, the default scoping made sane so I didn't have to type "my" everywhere, some changes to the object oriented features, and an easier approach to writing extensions.
Things quickly went awry. I believe it was Exegesis 6 and the subroutine syntax where I decided that Perl 6 had jumped the shark and I gave up all hope for good. But, by then I was getting heavily into Ruby and the question of Perl 6 had become moot anyway.
A rather acerbic thread has started over at use.perl with regards to the Perl Foundation. In a nutshell, some are wondering why they should give money to a long delayed Perl 6 project that has fallen into the SSE trap, and doesn't appear to have any real milestones. I and others have already moved on to greener pastures. Why wait for Perl 6 when Ruby and Python are ready and waiting to go? But I digress.
So, how will Ruby avoid SSE? First, it has gotten plenty of feedback from the Ruby community. Second, our benevolant dictator will ruthlessly quash anything that seems too un-Ruby-like. Third, Ruby 2.0 has a fairly defined plan:
* Thread safe interpreter (and thus native thread support) * Keyword arguments * Virtual Machine (speed) * AOP Hooks (pre, post, wrap) * Some scoping changes * Different, and better, regex engine (already in 1.9 I believe) * Better UNICODE support
That's about it. Note that there are few new features on the list - keyword arguments and AOP hooks, with the latter generally aimed at advanced programmers only. The rest are things that simply need fixing, tweaking and will be mostly invisible to you, the end user.
This, to me, is a testament to the elegant and clean design of Ruby - there just isn't that much that needs to be changed in a "major" rewrite. The most difficult piece will be the virtual machine and Koichi's YARV project is showing promise there. Otherwise, you can already tinker with some of the 2.0 features in the 1.9 branch.
And that, to me, is how you ultimately avoid SSE. Change little. Only fix what is actually broken. Add features sparingly.