I attended Merb Day Atlanta this past Saturday. The day consisted of a tutorial before lunch, and talks afterward, culminating in Merb lead developer Yehuda Katz‘s closing keynote (slides).
The tutorial was given by Merbists Michael Ivey and Matt Todd. Considering there were 60+ people following a live coding session, it went pretty well. I heard a few complaints about the depth of the material, but I think they covered the basics well and got as in-depth as they could given the time and environment constraints. One reason it went well was their use of Git. In fact, there was a git repository setup for the entire conference. Each speaker was free to put their code, notes, slides, and whatever else into the repo, and with a simple `git pull` there it was on my local machine. I don’t know if Merb Day was the first conference to use Git and Github like this, but it’s a great idea and I hope every conference I attend from now on does the same.
Myself and a couple others also setup repos for Merb Day. Mine has my notes and the code from the tutorial, which I preferred to type in myself. I learn better that way than just staring at someone else’s code. My notes are probably not that helpful, as the slides for most presentations are available in the main git repo. One thing to note is that schulty’s repo has haml translations of the tutorial erb views and sass translations of the stylesheets.
The best part of the conference for me was being seated next to Yehuda. I was able to ask him a couple questions, and more importantly I got to listen in as others approached him with questions between sessions. I’d also like to acknowledge that the conference was well-organized and the facilities were top-notch. Before the conference I had some issues getting a room, but conference organizer Luigi Montanez steered me in the right direction and got me a discount to boot. Even today, 3 days after the conference Luigi sent me a followup email to make sure I got my Merb In Action book. So, thanks Luigi. As far as the facilities, they were comfortable, the network worked well, the power strips were plentiful, and the drinks and snacks were all free. Georgia Tech Convention Center FTW.
If I have any criticism of the conference at all, it’s that there wasn’t a talk about DataMapper. But the content that was presented was well-done and I encourage you to poke through the slides and code available in the main conference git repository.
Okay, so enough of the lovefest. What about Merb itself?
Merb’s codebase is beautiful and well-documented. If you want to learn Ruby by looking at some solid open source code, my first recommendation would be Merb. Just go look at it. I feel pretty confident that with source like that, I won’t be so dependent upon other documentation when I get stuck.
I’m intrigued by the modular approach Merb takes. While there are some definite benefits to a full-stack, opinionated approach to web frameworks, I think the modular approach forces you into decoupling and providing clean APIs. (It all comes back to clean code, doesn’t it?)
Even though I haven’t really had a need for JRuby, I’m psyched that Yehuda and the Merb team take JRuby integration seriously. I don’t ever want to go back to coding Java for a living, but there are several exciting things happening in the JVM space. (Clojure anyone?). I’d definitely feel a bit cornered in my future career choices if my favorite technology didn’t run on the JVM.
The focus on speed is another Merb strong point. If I had a dollar for every time Yehuda mumbled “because it’s faster that way” during the conference, I’d have walked out of there at least ten bucks richer.
Finally, I’d like to address the whole Rails vs. Merb thing. Rails has been way too good to me these past few years. I’m a happier person and a better programmer because of Ruby and Rails. I still write Rails code every day and getting out of bed to do it hasn’t become a chore yet. There’s no such thing as Merb without Rails trailblazing the path. But, like all software, Rails has its pain points. Merb was initiated as an attempt to address some of those pain points. And that pushback has in turn improved Rails. Competition is, on the whole, a good thing. Merb inspires Rails to become thread safe. Sinatra and Camping inspire Merb to provide a very-flat single file app option. The ecosystem improves for all of us. I’m one of the many developers that came for the Rails and stayed for the Ruby, and I’m still pretty excited about what I see in the future of Ruby web development.