PoC with the Farcry CMS
Brian LeGros | September 30th, 2007 | programmingSo recently at work we have been trying to rewrite an application that is pretty content heavy with some sparse functionality and place it into a CMS. Our motivation in going with a CMS over a custom solution was the hope that we could get the most of content reuse and benefit from the experience of domain experts creating CMS software. Ultimately, I wanted to find a solution that we could hand over to our customers, so changes to the content of the application would not longer require developer/designer resources. I think this is the goal of a majority of people who seek out a CMS as a solution.
Since we’re still a ColdFusion shop in the web-tier, I naturally thought to check out Farcry CMS. From what I read about Farcry on blogs, the tutorial videos, the developer guide, and the product documentation, I was extremely motivated to do a PoC with it to show management the potential in using a CMS. We decided to try out the Farcry 4.0.8 beta (which it appears will be what goes out as some type of release candidate eventually) with SQL Server 2005 Express Edition since I had issues getting Farcry running with Oracle (even after consulting the Google Groups).
On paper Farcry offered a lot of the features that I felt would make it a good candidate for the PoC. A few of the ones I found vital were:
- Developer extensibility in the form of custom content types (in our case identifying business entities such as Resorts).
- Flexible layouts using templates, containers, and rules.
- Structured draft and approval system for content changes.
- Built in role-based authorization system
- Built-in friendly URL’s and RSS feed support
In fact, the biggest draw to Farcry for me was the notion of custom content types; these seemed like a great solution for content re-use in the context I wanted.
I spent about 1 week working on the PoC in Farcry and I think I may have set my expectations too high for the product. That being said, let me preface my comments by saying, Farcry is a solution which could have met my initial goals for this PoC, but I chose not to go forward with it due to the struggle I felt I’d encounter by implementing the entire site. The main struggle I saw was due to usability as the framework is extended. Let me first give a description of the content and relationships I needed:
I wanted the ability to group content into three specific areas: Resorts, Destinations, and Amenities. A Resort has a name, address, city, state, zip, country, phone, fax, image info, etc. A Destination is a custom grouping of Resorts (eg - Central Florida) which had a name, description and some image info. An Amenity has a name, description and image info as well, but was associated with potentially many Resorts; a Resort also has multiple Amenities. The prototype of the application had different layouts we needed to create per instance of Resort, Destination, and Amenity (based on the Resort to which it belonged).
On the development side of things, the biggest usability quirk was documentation and the options left to me as a developer when I couldn’t find any. As with any OSS project, sometimes documentation is lacking, I can accept that. Farcry does have a bit more documentation than I expected, but it’s usually with respect to the same use cases. In building the relationship between Resort and Destination, I had to undergo trial and error to realize how to create the correct form component. For example, I needed to select the Destination to associate with a Resort from a predefined list, rather than typing it out (”ftType” and “type” set to UUID ending up working). Another difficulty came when learning to create custom content types. Custom content types are created by extending the Types or Versions class in your own CFC and adding <cfproperty> tags to the component as metadata which can be introspected by Farcry. The <cfproperty> tag had a set of custom attributes that I couldn’t find documentation on, so I tried to explore the parent classes from which I was extending for more information. I hoped to find code that I could use to programmatically configure my custom content type. Unfortunately, the parent types are intended for use within the context of the CMS framework extension, so the custom attributes were the only means of configuring a content type. If documentation isn’t going to be readily available, it would have been nice to have alternatives for configuration so that I could use tools like code insight in my IDE to create the classes I need. Additionally, I know the product is still in beta, but it didn’t seem like too much changed on the developer side from version 3 to 4 based on the docs in the wiki. The Google Group (farcry-beta) also wasn’t terribly active and majority of the threads were on installation and release notes rather than extending the framework, so I didn’t find much help here either.
Another developer usability quirk I ran into was the creation of a Rule; this one is probably me just being picky. Rules are used to query the content you’ve entered into the application and associate a means by which to display the result of that query with what eventually becomes a portion of your site’s layout. Farcry touts its ability to create scaffolded tools for your custom content types to avoid the developer having to get into the DB. From what I could tell though, when creating a Rule you have to dig back into the database to make the query to retrieve the data you need from your content types. Recently we’ve begun to use a lot of ORM solutions at work and one of the prerequisites for the solutions, that take SQL completely out of the picture, is a way to query using the ORM w/o using SQL. The way Farcry stored the content types in the DB wasn’t terribly difficult, but if we ever moved the application DB from SQL Server to Oracle (which is a very real possibility), the potential exists for me to have to re-write some of my custom Rules. This seemed like a feature that would have been a good finish to FourQ, the ORM that Farcry uses.
On the end-user side of things, the Farcry Admin left me quite confused when it came to working with my custom content types. Here are a couple items that caused discouragement:
- One-to-many mapping tools - Once I had my Resort content type created (I set it up to use a 3-step wizard) I tried to associate multiple Amenities with my Resort. From how I had setup my Resort class, the wizard showed a tool with 4 buttons: Open Library, Select All, De-select All, and Remove Selected. Initially these buttons, except for Open Library, do nothing. So I clicked “Open Library” and a new window opened with two columns; the left was empty, the right had all of the amenities I created listed. First thing was there was no way to select multiple Amenities, each list item was text. You have to grab the text in the right spot and drag it into the left column to add the Amenity to the Resort. Once its dragged over, however, you have to wait for the Amenity to appear in the empty list in the parent window (the window containing the wizard being filled out) before its “saved” to your draft. I had 21 Amenities to add to my Resort; it took me quite a few minutes to add them all, one at a time. I’m not sure why a basic list box in the wizard itself wasn’t an option. I wasn’t able to find a way to change this. On a side note, I was able to add duplicate Amenities to the Resort that would generate CF errors on the parent window and then disappear; this was probably a bug, but I didn’t look to see if it was reported already for the beta.
- One-to-one mapping tools - The same tool mentioned above had to be used when selecting a single Destination for the Resort. Again, why wasn’t a drop-down box feasible to use? And again, maybe this is something I missed.
-
Content Re-use Between Site Map and Scaffolded Tools - I liked the fact that I could create a page in the site tree which was a single instance of one of my custom content types; this was particularly useful due to the layout requirements of the prototype. From a usability standpoint what threw me through a curve, was that I can only add the content type via the site tree, I could not use the scaffolded tools. I can definitely see an end-user getting confused in this scenario. I’m possibly the worst end user there is, so I know. I worked to import all of my content into custom types into Farcry using the scaffolded tools. When I went to add the pages to the site tree using the data I had entered, I ended up creating duplicates of the information. I was unable to find a way to import the data I had added under the “Custom Content” tab into the site tree. To solve this issue, I deleted all of data I had previously entered and re-entered it via the site map. Reentering the data sucked, but what frustrated me the most was the fact that I lost my tools to do things in bulk. Now I didn’t have much luck getting the bulk tools to work, but I’m willing to hack that up to the product still being beta.
Although this review may come off as negative, please understand that I did a PoC to meet a particular deadline. Others may not run into the same issues I’ve had, have more time than I had, or find better solutions than I have found. Many may even say that I’m being too hard on a product for being a beta. I’m definitely open to any feedback the community has on my perspective and options which could allow me to consider Farcry more seriously. I admire the dedication and drive it takes to put together OSS, so I applaud these guys for getting as far as they have in their domain and wish them nothing but luck. For now, however, I’ve begun looking into commercial ColdFusion CMS solutions to see if any of them can meet my expectations; it is possible that I’m setting my standards too high and I might end up coming back to Farcry.
Stayed tuned to see my failure … :’(
Tags: cms, coldfusion
Related posts

Discussion
October 5th, 2007 at 9:05 pm
Just a quick note on one-to-one / many-to-one mapping, you can use asimply drop down list by using the right formtools attributes:
fttype=”uuid” ftrendertype=”list” ftjoin=”yourTypeName”
October 7th, 2007 at 10:44 am
@Justin - Thanks for the tip. Does Farcry have the ability to give you a simple muti-select list box? From your site it looks like you’ve definitely played a lot with the new version of Farcry, so I appreciate the tip.
I’m currently looking into Savvy’s CMS product which seems to have a lot more polish and potentially a lot simpler interface for end users. Do you have any opinion about the product?
October 10th, 2007 at 10:43 pm
Sorry I only had a minute to reply the other day. Yes you can do multi-select lists by adding ftSelectMultiple=”true” to the attributes I mentioned above. I couldn’t remember the attribute at the time and I was in a rush
See the documentation here:
http://docs.farcrycms.org:8080/confluence/display/FCDEV40/Library+Properties
Regarding the dynamic content / site tree content issue, I’m really not sure if there is anything to allow you to attach existing dynamic content records to the site tree. There are maintenance tools for orphaned nodes, and no doubt you could poke around in the database (if you knew which objectID’s you wanted to attach to which node), but to be honest I have never tried so I’m not sure that there is any nice way to do it currently. It would be a good feature request though.
And I haven’t tried Savvy CMS - I’ve only browsed their site - so I can’t be of much help to you there!
October 11th, 2007 at 8:42 am
@Justin - Thanks for coming back and helping with my questions. From what we can tell the Savvy product isn’t as robust as we had hoped in terms of content reuse (presentation of the content and the content itself are very tightly coupled). I’m going to try and revitalize my FarCry PoC and see if I can improve upon it any.
Thanks again for all of your help.
October 15th, 2007 at 2:46 am
Hey Brian, just came across your post. Don’t let the quietness of the list hold you back from posting questions or problems. Although you might have more luck with the farcry-dev list (http://groups.google.com/group/farcry-dev). The list has a bunch of great guys ready to lend a hand, including few here at Daemon.
October 15th, 2007 at 2:52 am
PS If there are particular topics you think should be covered better in the wiki feel free to say that too
The perspective of the core development team doesn’t always help us see what the community needs.
Add A Comment