RadiantCMS customized

Kolob Canyon greenery

We are working on a very interesting project right now that allows us to adapt RadiantCMS to serve several different functions in a big picture system.

Radiant is a powerful content management system that has very good design for factoring out redundancy in your web content. Think of the Don’t-Repeat-Yourself principle applied to the web content, where we unfortunately put up with duplication far too often.

I was impressed with the hierarchy of web content in Radiant: layouts, snippets, ways to bring this together with tags. The tags reminded me of JSP work in past projects, but in this case it feels like borrowing a good idea and making it do more.

The extension design is interesting and allows us to focus customization work outside the core of the system. There are also a lot of interesting extensions already available.

Radiant runs as a full rails application. Extensions live under vendor/extensions/ and can be thought of as mini-rails applications that are laid over the main application. These extensions have a place for their own first-class rails plugins, migrations, etc. I believe Radiant doesn’t help with conflicts between migrations. For example, if two different extensions both use the same plugin, migrations for that plugin need to be enhanced with bulletproofing to check to see if the migration has already been applied through another extension. I think this is the only place where the mini-rails-app extensions idea gets a little messy.

Overall, it’s a great system to work with and I recommend you use it in your rails projects that need to deal with content (even mostly static) in a sane way.

Thanks to Marcus Derencius for sharing the photograph. He took this on our hiking trip we took just before Railsconf09 in Las Vegas. The physical activity of hiking about 10 miles each of the two days was a great complement to the focused intellectual intensity of the conference.