It's been a fun day today, the pre-conference warm up day for RailsConf.
Over breakfast with Surj Patel and Matt Biddulph, we got to talking about debuggers and poking around inside Rails applications. With Rails being so new, I was intrigued in what happens when you hand a Rails application over to somebody. Does all the Rails magic help or hinder their ability to understand what's going on?
What kind of ways are there, beyond documentation (which nobody writes), to communicate the workings of a Rails app? We thought that what might help would be some kind of graphical illustration of the flow of control, linked to a source viewer, that showed requests being processed. Rails is built in a convenient way for instrumentation and introspection, by virtue of the aggressive use of DSLs and Ruby's language features. Based on these, are there tools we can write to help people understand what a Rails application is doing?
I've not yet had enough experience of either handing off, or being handed, mature Rails apps to say for sure what's needed. But it's going to be a problem we all face when Rails sneaks further into the system. Java's redeeming quality in the enterprise is that it's damn hard to write anything one might consider idiomatic. As a consequence, there are predictable ways in which one can approach code written by somebody else, all other factors being equal. Will Rails idioms cause trouble for long-term maintainability?
Lunchtime included an interesting exchange with Rich Kilmer. Rich used to work for DARPA on RDF and OWL stuff, and has apparently written all manner of interesting Ruby code that processes RDF. It's a crime I'd not come across his work before, but it's all open sourced in the Semitar project. The project web page looks modest, but if Rich's description is anything to go by, it sounds a wonderfully appropriate way to approach programming for the semantic web.
Finally, I notice that, as the day finishes, IBM developerWorks have published my Introduction to Rails for DB2 developers.
RailsConf proper starts tomorrow.