I'm back in Seattle after an excellent RubyConf in Orlando, FL. These events are always a treat, and this year's was no exception. Last year the dominant theme was alternate implementations, and this time around it has become an ingrained assumption rather than something that needed to be stated. Distributed version control has also graduated to something that can practically be taken for granted—at least half the slide sets referenced github repositories.
But the big theme for the year was concurrency. A number of talks were given on the topic of going distributed, map/reduce-type strategies, how to deal with threads/fibers, etc. Particularly interesting was Dave Thomas's keynote. To encourage new developments, he said, we should spin off forks of the language (not necessarily the implementation) where incompatible changes can be experimented with freely without worrying about cluttering up mainline Ruby. Parallelism and reducing the number of built-in (and hence inextensible) mechanisms were the main directions he suggested. I like the idea, but such a project would be able to attract more contributors if it were based on Rubinius instead of MRI or YARV, so it may be best to wait until that's closer to completion. The talk on NeverBlock was also very interesting; they seem to have a way to harness the benefits of an event-driven approach without the twisty execution flow logic that regular EventMachine requires.
As I mentioned earlier, the Seattle Ruby Group presented a bunch of our projects near the end of the conference. I got to introduce Bus Scheme in ten minutes, so it was a very cursory look. Aaron performed a "historical re-enactment" of the group's history that had to be seen to be appreciated.
As usual, a lot of code was written during the conference. One of the things that I got to help with was the addition of support for prerelease versions in Rubygems. The lack of such support has been shown to be particularly annoying with the impending release of Rails 2.2, since they are using 2.2.0 as a prerelease version number and calling 2.2.1 their first stable 2.2 release. It'd be better if Rubygems allowed 2.2.0.a to be treated specially as a prerelease version that would be superceded by a later real release, and that's what Josh Susser, Alex Vollmer, and myself worked on. I'll post more about this when it's complete.
Lots of thanks are due to the RubyCentral team who are somehow able to consistently pull off these amazing events. I'm also really looking forward to Confreaks posting the videos of the conference so I can catch the talks I missed; thanks guys!