Up until recently, content management systems were big business. Unless you wanted to pay for a commercial system, many companies built their own. This is a pretty big investment, and it makes you compete with other CMS products. With the huge growth of WordPress, Drupal, and Joomla, it doesn’t make sense to throw resources at developing and maintaining a proprietary CMS. You get so much out of the box with a stock WordPress install, there’s so many plugins available, and lots of developers versed in WordPress if you need something custom.
A company called BrowserMedia took a bold approach with their proprietary CMS: they rewrote it in Ruby on Rails, and released it as open source. You can watch their presentation about BrowserCMS from acts_as_conference 2009. Patrick Peak and Paul Barry really seem to understand the real world requirements of a content management system. Tactica (where I work) is quite similar to their company in a lot of ways, and I really agree with their approach.
Basic requirements of a CMS
There are some basic things that I consider a requirement in a CMS.
- Creating and editing pages (duh)
- A “what you see is what you get” (wysiwyg) editor
- Attaching images and file downloads
- Organizing pages in a hierarchy
- Displaying the page hierarchy as a menu
- Permissions on content – eg: don’t let the public view the sales reports
- Permissions on features – eg: don’t let regular staff users delete accounts
- Trash bin – people always seem to need to restore something they’ve deleted
- News feed
- Events feed – clients can have vastly different needs in this area
- Categorization of content
Nice features to have in a CMS
Most of the time these features are never used, but we are often asked for them by clients.
- Revision control – be able to see the changes made to content over time
- Workflow control – changes to content needs to be approved by a supervisor
- Creating custom content types – eg: a recipe would have special fields such as “number of servings”, and “calories”
- Content scheduling – automatically post and archive content on the site
- Editable blocks – It’s nice to be able to edit things that aren’t in the main content area – eg: the footer of the template.
The highly unpublicized state of CMSes in the Ruby on Rails word
This section was initially titled “The sorry state of CMSes in the Ruby on Rails world” until I was notified of a couple other CMSes by Pascal Rettig of Webiva. I’m really not sure why I haven’t come across these last two, but I’m glad to have more choices. Please leave a comment if you have experience developing in any of these CMSes!
- Radiant CMS – this is one of the top CMSes built in Rails, which is really unfortunate because it is very rudimentary… but the term they use is “no-fluff”. You can try out a live demo for yourself, but prepare to be underwhelmed.
- Rubricks – I’ve heard this has some really good features, but have yet to try it out.
- Webiva – also has some modules for blogging, commerce, and social networking. Their website also has a live demo feature — I hope to try this out soon. Thanks to Pascal Rettig for pointing this one out!
- Refinery – another that I’ve yet to try out. They also have a live demo.
Getting started with BrowserCMS
So, I’m excited about BrowserCMS – it handles just about everything in my basic requirements list… Trash bin seems to be missing, and I’m not sure if I’d want to use their built in search functions (pretty rudimentary). I installed it on my computer and it took about 10 minutes, but only because I had some issues with install SQLite.
Like most CMSes, BrowserCMS manages permissions based on groups. You can create new groups and grant them access to certain pages, and functions. The user interface for this feature is simple and intuitive, although it would become more complex if you need to manage permissions for more things on the site.
One interesting decision they made is to distinguish between CMS Users, and Public Users. I think this is a good feature because it’s simple to understand, and it ensures that you don’t accidentally allow public users access to edit the site.
The WYSIWYG editor is CKEditor… a pretty good choice for an editor. I haven’t figured out how to attach files to a page, though.
Organizing pages within the sitemap has a nice drag & drop interface, allowing you to put a page within another page, and change their ordering. It could use some UI improvements, as it’s difficult to see whether you’ve set the page to be before/after/within the target page.
Another feature is something called a portlet, which I would personally call a widget. These are blocks you can put in your site’s layout which allow you to do things like list out the most recent 5 news items. The neat part is that you just use standard Ruby code inside these. I’m not sure how much I would use these — I’d rather have this saved in a file, rather than in the CMS.
One thing to worry about when picking a CMS is that the developers will stop working on it. I don’t have an idea yet about what the community around BrowserCMS is like, but I should be finding out soon enough. The Rails community seems to avoid becoming too fragmented, so I’m hoping people will rally behind this one project. Rails really does need a good CMS.
Here are some links to more information:
- The main BrowserCMS website
- The source code repository on GitHub
- @browsercms on Twitter – not a huge following at this point
- irc.freenode.net #browsercms
- Reference Documentation
- API Documentation
- Bug tracking
- Google group
Adding machine photo by Aaron Kyle