MVC frameworks such as Rails are great for new projects, but they’re hard to integrate with existing databases. Their design reflects more interest in the V than the M. If you have existing data in a relational database that you want to expose to a wider audience, you’re left with the choice of:

  • Using your MVC framework to create a new schema (which is designed for simple CRUD access, and probably less well-suited to your data than your hand-crafted schema) and laboriously load the old data, or
  • Write a tangled gateway script to translate between the framework’s schema and your schema, perhaps through a batch job (which would kind of ruin the vision of consistent, current data).

I heard this perspective from a veteran Perl hacker in the finance industry at today’s Ubuntu Massachusetts InstallFest. It was a nice, low-key event, by the way, attracting several college students who were new to Linux when I was there, along with a couple teenagers. While veterans played with Beryl-driven graphics or tried at an OLPC system, my colleague laid out the general framework problem and described his difficulty adding a modern web interface for naive users to a useful little scheduling application he developed some time ago.

Given that web mash-ups and visualizations of existing data are of growing interest, and that there’s a movement for more access to public and government data, we need to learn ways not just to develop green-field services with new data, but to reflect the richness of existing relational data.