Up until recently I had admired the Radiant Content Management System from afar but hadn’t had a chance to really dig in to it. While the Terralien website runs on Radiant, a lot of the power of Radiant doesn’t come to the fore until you want to extend it, and our website’s needs are very vanilla. So when an opportunity came along for us to do the back-end for a content heavy site for Ignite Social Media, I jumped at the chance to put Radiant through its paces. In particular I got to do a bunch of Radiant extension development, both writing an extension from scratch as well as doing heavy hacking on some existing extensions, and I’d like to talk some about that process as well as highlighting the (all open source) extensions that came out of it.

First, a little about the site we built: it’s a marketing site for a newly launched product, and we were tasked with taking comps from Ignite, implementing them in Radiant, and hooking up the various dynamic pieces of the site. Those dynamic bits included a quiz visitors can take, blog comments, various mailer forms, site search, a site map, etc. All fairly standard stuff, but the goal was to build out exactly the back-end that was need for the project rather than using a CMS that provides everything and the kitchen sink and ending up with a cluttered, confusing admin interface. Of course Radiant being Rails-based was also a big draw: almost every project needs to “draw outside the lines” at least once, and we think it’s ever so much nicer to do custom development in Ruby than it is in PHP, the lingua franca of most popular CMS’s.

After getting Radiant up and running on our staging server – a completely painless process – work commenced with the quiz extension which I wrote from scratch. The experience was mostly painless, but there were two aspects I think can be improved on. First of all, the available documentation is a bit spotty, and while this didn’t bother me too much (I’m an avid code reader) I could see it causing issues for some folks. The other thing I found somewhat disconcerting when getting started was the lack of direction on how best to implement the mechanics of an extension. Some extensions post back to a custom page type, some extensions provide their own controllers, and error handling is all over the map. I think some of the issue is just that generic component-based development is hard, but that doesn’t mean that a “best practice” extension style couldn’t be adopted and encouraged. I ended up settling on a particular style that I think works well, but it still has some significant drawbacks, and I’ll definitely be continuing to noodle on the issue as I work on future extensions.

After the quiz extension, I moved on to some areas that already had existing extensions available, in particular mailers and comments. Github was the star that stole the show here, since I ended up forking both of these extensions and hacking on them extensively to get them working like I wanted. Since the comments extension was already on Github I was then able to submit the changes to it right back to the original author, and he incorporated them in to his repo. Currently you can only get my mailer changes from my Github hosted fork, but a little birdy has told me that Radiant will be moving wholesale to git in the near future, and when it does I’ll be contributing my changes back.

Of course, we also used a bunch of extensions completely as-is, in particular the Copy Move extension, the Reorder extension, and the Search extension. Thanks so much to the authors of these extensions as well as the ones we forked: you saved us so much time!

And we’re not done yet: in the works we have a “ratings extension”, and we’ll also be doing some serious hacking around WYSIWYG editing and asset management. You can keep up with the latest by watching my Github page, or I’ll try to post an update when we push out our next batch of extension-y goodness.

In the meantime, have you tried out Radiant? What did you think of it? Any cool extensions you’ve found whilst poking around the internet that we should be sure to take a look at? Have you written an extension yourself? I’d love to hear your thoughts!

Posted by Nathaniel on Jun 18th, 2008

You can still contact Nathaniel at nathaniel@terralien.com