“Matz is nice and so we are nice.”
This is the much-repeated mantra of the Ruby community and it could often be heard at RubyConf 2012. Matz is the creator of Ruby and he has been working on the language for the last 20 years. He gave the opening keynote of the conference where he talked about the origins of Ruby, his motivations for creating it (and motivations in general) and the future direction of the language into 2.0 and beyond. (Matz is now over at our partner Heroku as the Chief Architect of Ruby.)
While Matz’s talk wasn’t technical, it was well received and set the tone for the rest of the conference. (After all, everyone loves Matz.) This was my first RubyConf and it was awesome. I enjoyed seeing the multi-faced tentacle monster of the Ruby community in action – the many demands and requirements of the Ruby community, and how the community itself responds to these urges.
The remainder of the conference was on a much more technical tone. And hands down, this was the most technical conference I’ve attended. As Ruby has grown in popularity, the requirements for the language have also expanded outside its original scope. The pain points that once only affected larger companies are becoming more commonplace throughout the community. This, coupled with Matz’s vision for the direction of the MRI (Matz’s Ruby Interpreter), were the most talked about topics at the event. Many sessions gave love to JRuby and Rubinus for addressing these enterprise problems. (And everyone gave love to Matz and his team.) While Rubinus is a fantastic project that should appeal to any Rubyist, it seems clear that JRuby will become the standard for Ruby in the enterprise.
Concurrency, Streaming & Other Big Issues
Concurrency was a hot topic at RubyConf. Both Mike Perham (Sidekiq) and Tony Arceri (Celluloid) did a great job of presenting the tools they developed for the community. And Aaron Patterson (Rails Core, Ruby Core) gave a very engaging presentation on salami and modifying Rack to support streaming.
These sessions — coupled with JRuby and Rubinus both supporting real multi-threaded applications – illustrates the effort being invested into other Ruby interpreters and tools to pick up the demands of the community. The Rubinus team suggested it was time for a Ruby standards body, who would act as a single group to decide new Ruby functionality and react to the needs of the community.
Two more subjects of interest were concurrency and streaming. Both are elements that are lacking in Ruby/Rails (in varying degrees), but are amply provided by other (read: competitive) frameworks. That these were popular and recurring topics reinforces that the Ruby community is receptive to the web ecosystem, and is invested in keeping feature parity with competing languages and frameworks.
“If you have four groups working on a compiler, you’ll get a 4-pass compiler” – Conway’s Law
Communication & Organization
Sarah Mei from Pivotal Labs gave a well-received keynote on the importance of formal and informal communication within a team. The Ruby community prides itself on being accessible and this talk was an in-depth look into some of these principles applied into practice throughout her career. Her main point was that communication and organizational structure have a dramatic impact on you application. (When I put it this way, it sounds so obvious!)
Following up on her keynote, several sessions focused on code organization, service oriented architecture (SOA) and refactoring.
My only complaint with SOA presentations is that I wish they had more meat. It’s a hot topic right now at meetups and conferences, but no one seems interested in talking about their dirty laundry in their specific implementation. That said, Chris Hunt gave a great talk on how Square approached SOA.
It was a damn good conference …
* Chris Hunt (Square) – Service Oriented Architecture
* Brian Ford (Engine Yard) – Towards a Design for Ruby
* Ben Orenstein (thoughtbot) – Refactoring From Good to Great
* Mike Perham (The Clymb) – Asynchronous Programming for Fun and Profit
* Aaron Patterson (AT&T Interactive) – Real Time Salami
* Sarah Mei (Pivotal Labs) – The Insufficiency of Good Design
* Tom Lee (New Relic *cough*) – Rapid Programming Language Prototypes with Ruby & Racc
The common theme of the conference was that the Ruby community is experiencing growing pains. The number of talks focusing on scaling, concurrency, code structure, and streaming imply that Ruby applications are being large and cumbersome. People are beginning to look for best practices from within the community, showing they have outgrown the conventions Rails provides.
As I said before, this is the best conference I’ve been to. Technically, the talks hit all the right notes — they weren’t pandering to newcomers (too much), and there were a lot of outstanding smart and opinionated people talking about how to move Ruby forwards. JRuby and Rubinus got a lot of love. And it was great to see Matz, but it was equally great to see the community tackle problems not on his agenda.
It seems like the Ruby community is trying to grow up = )