Although I generally try to avoid anything in direct proportion to how much hype and attention it receives, I have decided to ignore that policy in the case of Ruby on Rails, the new web framework that is gaining mindshare as a killer app for the Ruby programming language. I’ve got a Ruby book, installed every Debian package with “ruby” in the name, and started working on my first Rails application. Or perhaps I should say… written a mostly-working Rails application in one day that I can now tweak to perfection. So far, I am impressed enough that I plan to use Ruby for future personal projects, perhaps instead of Python.
Ruby on Rails is, in essence, the Cocoa of web applications. Cocoa provides scaffolding for GUI apps with default behavior that is configured declaratively — that is, you build an interface and it does, as much as possible, the right thing, leaving you to develop only your application-specific code. Rails does the same for database-backed web applications. The comparison extends deeper, in my opinion, because both Cocoa and Rails — despite not being the most popular, buzzword-compliant option — take ease of development to a level not equalled by most of the competition. It’s the small details, the tight integration between all parts of the system, the subtle ways it always seems to do the intuitive thing.
Mind you, I don’t believe some of the hype, specifically that Rails couldn’t have been done in any language except Ruby. In particular, I think an equally easy to use web framework could be done in Python — but it hasn’t, yet, and I don’t really want to wait. (In a lot of ways, Rails resembles the sort of framework I was building piece by piece out of a combination of Quixote and my own code. But I gave up on that, because I really don’t enjoy having to build infrastructure when it is in the way of my end result. What can I say, I’m lazy.)
My first Rails application is tentatively titled “NovelSpace”, and it will be a replacement for my current (private) story archive, but with eventual support for multiple users and collaboration. It is essentially a special-purpose content management system, organizing its content into “books” that contain chapters that can be edited individually. Its security model will allow for password protected accounts for writers and readers, it will track revisions, and it will use Textile and Markdown to convert plain, easy-to-write text to HTML for viewing or printing. In a lot of ways, it is an online version of Pyrite Writer, my personal writing tool — and in fact, I will probably integrate the two using a web service, so that when I save something I am working on, it gets posted automatically.
I’m shooting for an actual release of both of these things by NaNoWriMo 2005, and at the rate I’m going right now I could make it with six months to spare…