Hobo, a collection of Ruby on Rails extensions designed to streamline Rails development, recently announced its 1.0 release. InfoQ spoke with project creator Tom Locke about the milestone:
We stopped adding features and focussed on documentation and stability until we felt ready to say, OK, all sorts of people can feel comfortable using this now. We've also made a commitment to not make major breaking changes without a grace period of warning messages.
Hobo builds on top of Rails to address common patterns in web application development. For example, a default Hobo application provides for user signup and login; out of the box an application comes with a user model as well as controllers and views for registration and authentication. Search is another feature supplied to Hobo applications by default.
Hobo may be thought of as a set of cooperating extensions to Rails' model, view, and controller layers. For example, Hobo provides for model-centric permissioning. When a model declares which actions may be performed by which users, controllers will allow users only to perform authorized actions, and views will not show form fields for information a user does not have permission to edit. A Hobo model might also declare a lifecycle; corresponding actions are automatically created in the controller layer and user interfaces in the view layer.
Locke cautioned against thinking of Hobo simply as a scaffolding framework:
Scaffolding frameworks are very useful in situations where rough-and-ready is good enough. For example, as a stop-gap while you're working, or in an admin site that your public users won't see. Hobo is for your whole app. You can start with the out-of-the-box UI, which is already closer to a usable site than you might expect, and from there you can gradually tweak anything and everything until you have exactly the user-experience you're after.
[...]
We've worked very hard to make sure you can always go 'under the hood' and can change anything that you could with regular Rails.
This philosophy of reuse and extensibility can be seen in DRYML, Hobo's tag-based templating language, which allows developers to create their own tags in a simple, lightweight manner. DRYML allows "context-over-consistency" tweaks to be applied to the output of a tag each time it is used:
Its main strength is allowing view-code fragments to be packaged up for re-use, without sacrificing flexibility down the line.... You can remove that breadcrumb link, inside that latest-news widget, inside your blog's index page, without ever having to repeat any of the intermediate HTML code.
The project has seen several thousand downloads and is approaching 500 members on its mailing list. Two books, Rapid Rails with Hobo and Hobo at Work, are available as PDF downloads at the Hobo Central site:
Hobo is a big project. There's a lot to learn, but you only need to learn a little to be up and running and productive. The more particular you choose to be about fine-tuning your app, the further along that learning curve you'll need to go.
Work on Hobo is sponsored by Barquin International:
The project had already been going for about two years when Owen Dall of Barquin spotted us and decided to get on board. To be clear, we're not talking about VC-like funding here, with a long line of zeros. Barquin supported myself, and later Bryan Larsen, to work on the code and still be able to pay the rent. Progress accelerated a great deal compared to fitting the project in on the side.... More recently, the project to create the Hobo books came entirely from Barquin. Some of my words were used, from documentation I'd written already, and for that I got authorship credit, but in truth the books happened entirely because of Owen and Jeff over at Barquin.
What lies in Hobo's future?
To be honest I feel that this is now up to the community. There are a million ideas to explore, but which ones get done depends on what people want, and what people are going to contribute. We've just had a fantastic contribution to the internationalisation support, and to be frank that wasn't on my radar at all. It's great to see the project gain its own momentum like that.