HomeRamblings  ⁄  GeneralRuby Language

What makes a top award candidate, anyhow?

Published: August 01, 2009 (over 8 years ago)
Updated: over 2 years ago

In our local Linux user group mailing list, one of the participant asked the group for recommendations for open source software projects that should be considered for a prominent publication’s top 100 awards. The ensuing discussion got me to wondering: What is the purpose behind doing the awards? Most of what I see talked about are all well-known and well-used, such as git, mercurial, word press, joomla, django, and so on. Usually, when I look at a list like this, I’m looking to uncover new and undiscovered projects that have real potential to make a real impact in my daily life and thus was somewhat surprised that such mature projects are being so heavily promoted in the discussions.

Its not that I don’t think these tools are worthy contenders. Most of them, I have used fairly extensively myself over the years. The suggested contenders are solid and mature projects, but they feel decidedly “old hat” to me much as apache, postfix, vim, bind, and the linux kernel probably feels to the system administrator. In other words, they’re ubiquitous, so why signal them out with some sort of top 100 reward?

These days, I have adopted Ruby as my language of choice, so I have moved away from Python and PHP. While this has largely meant I develop Ruby on Rails applications. However, as my Ruby skills grow, this also means going far and wide in many other ruby-based tools (such as rake, sake, and rack for system-level or middleware tools). I am now using ruby for quick and dirty systems administration tasks (such as the short script I wrote to find all currently assigned IP addresses on our office network), automating deployments (capistrano, puppet, chef), marshaling data from one database system to another, and even with extensive image-processing (resizing, conversion of formats, compressing, etc.).

So what, in my view, warrants a top 100 award recognition? I like to see new and exciting projects on these lists. If a project’s on the list, I like to know that they are extremely active and rapidly gaining mind-share and penetration into the community. I want to know a little bit about how they put a new spin on an old problem and the impact they have been able to make, not only in the project’s direct vertical niche, but across the board. A few years ago, Ruby on Rails arrived on the scene as a game-changer, not only for putting Ruby on the map as a viable language, but as a bona fide development framework for delivering web-based services. Ruby on Rails turned the Java world on its head and forced Java developers to drastically improve their productivity tools then in common practice; they evangelized convention over configuration and brought many fantastic ideals such as Agile development and RESTful APIs to the forefront of many, many developers’ minds.

To my way of thinking, though, Ruby on Rails is now old news. Newcomers will stumble upon Ruby and Rails through word of mouth or simply googling for a solution to some problem they’re trying to solve. That’s the problem I see with top-100 lists paying tribute year after year to the same old mature projects. Whether its Ruby on Rails or Word Press or Joomla or Django, all of these are easily discovered and well-written about by anybody with decent querying skills. So what’s out there today that’s refreshing and hard to find? Yet, is making a huge impact on the community? Here are a few that I think are worthy contenders (and yes, they are a little heavy on the Ruby side)…


Rack: a Ruby Webserver Interface. What I find phenomenal about Rack is its adoption by so many frameworks that are delivering web-based services. Micro-frameworks like Ramaze and Camping and Sinatra were early adopters of Rack and such adoption led to far smaller code-bases in each as well as significant performance boosts and, as if that wasn’t enough, enabled much easier transition from Ruby 1.8 to 1.9.

Inkscape and ImageMagick

Speaking of image processing, I am not sure if many have encountered ImageMagick and the Ruby bindings offered via RMagick, but definitely worth a look-see. As of this year, I do almost all of my creative graphics work in Inkscape and The Gimp and use ImageMagick to automate some pretty impressive transformations of those images outside the GUI. Before Inkscape became mature enough to use on daily basis (which, by my reckoning is only in the last 18 months or so), I was heavily reliant on Adobe’s Illustrator and companion Photoshop apps. I never would’ve imagined two years ago that I could completely do away with these packages, let alone begin to automate much of the repetitive tasks that I put those resulting images through (resizing, cropping, web-optimizing, etc.) with a collection of well-written OSS tools.

Ramaze and Sequel

One last pair of tools I think is worthy of consideration, especially for web-based ruby developers is Sequel and Ramaze. Sequel is an object-relational-mapping library that makes working with SQL databases a real pleasure for Ruby developers. The maintainers seem to have taken the best of the best and rolled those ideas into one coherent and extremely fast library for accessing just about any database out there. I have fooled around with DataMapper and have worked extensively with ActiveRecord and I must say Sequel really is rung or two above these libraries and I look forward to continuing to adopt Sequel.

I ran into Sequel by way of the Ramaze project, which is a micro-framework for building web-based applications. Unlike Ruby on Rails, which tends to generate tons of scaffold/skeletal code for you to begin hacking away on to build your projects, Ramaze takes the opposite tack in that it provides little to no scaffolding or auto-generated code. Instead, the mindset is squeezing the maximum amount of functionality out of every line of code you do write. For a Ruby on Rails developer coming to Ramaze, the feeling is very much like the first time I took off on a bicycle without the training wheels attached. You feel wildly uncontrolled and like you may fall at any moment, but a little encouragement from the warm friendly community gets you going straight and true and the amount of code you’re NOT writing, reading, reviewing, nor specking tests for really begins to jump out at you!

comments powered by Disqus