Geoff Bowers on the FarCry FrameworkBy Kay Smoljak
Although it’s better known as an open source content management system, FarCry is in fact a powerful framework for building ColdFusion applications. Geoff Bowers, CEO of Sydney-based Daemon and self-styled "benevolent dictator", lets us in on what makes FarCry tick.
SitePoint: Geoff, can you give us your elevator pitch? Summarize the essence of FarCry in a sentence or two.
FarCry Core is a web application framework based on the ColdFusion language. FarCry CMS is a popular content management solution built with FarCry Core. As a community, we provide support for the framework, CMS, and a host of community plugins including libraries for Google Maps, image manipulation, free text searching, and many more. The FarCry Community was formed in April 2003, when Daemon open sourced the underlying FarCry Core framework and associated FarCry CMS solution. Since that time, FarCry has grown into one of the largest ColdFusion code bases, with an active community of developers around the globe.
The community comprises of a cross section of individuals, web development firms, and larger corporate, government, and education institutions. Although code contributions come from a large spectrum of the community, primary feature development is driven and managed by a close-knit team at Daemon, and a small coterie of additional core committers.
SP: Let’s dig a little deeper: tell us more about the main features.
I’ll talk about FarCry Core — the framework. By extension, FarCry CMS has all of these features and more, wrapped up in a sample solution that installs out of the box.
FarCry Core is a toolbox for building web applications that contains, among many other things, a roles-based security model, an object relational mapper (ORM), an in-memory caching broker for both objects and views, a fully configurable administration webtop, a "formtools" engine for rapidly building user interfaces, a totally flexible templating environment, and a extensible plug-in architecture for sharing code. It’s difficult to explain in a sentence or two, but each of these features represents years of work that developers can leverage.
One of my personal favourites is "formtools," an engine that builds your ui dynamically, based on the attributes that you attach to the properties of your underlying component. We’re not talking basic HTML forms — it’s a really rich ui library that can be tweaked mercilessly to work just the way you want. Formtools makes life easy for me, but at the same time, it gives me the low-level access to write my own interface, for those one-off or unique ui elements I come across.
For those who just can’t get enough, we’ve put together a more complete list of features from a business (as opposed to technical) perspective.
SitePoint: How did FarCry come about, and what was the reason for creating it? How are you involved?
Back in 2002, Daemon had to make a decision about what do to with our code base: sell out to another vendor, ramp up the marketing and compete as a commercial vendor, or build a services-focused business around an open source code base? We didn’t want to risk the financial investment required to ramp up marketing, especially in the middle of the "dot-com bomb." We really preferred our code base over the variety of vendors who approached us for a buy out, and we couldn’t bear the thought of seeing our solution tossed on the scrap heap for the sake of a lesser offering. In April 2003, we released FarCry CMS under the Common Public License, and had a crack at building an open source community.
FarCry Core became a distinct framework code base for the release of v4.0 when we decoupled the content management solution from the underlying framework, and added a sophisticated plugin architecture. The CMS itself is now a very popular, but optional, plugin.
Interestingly, the name FarCry comes from the old English term for when criers or messengers were sent to the far ends of the kingdom to deliver a royal proclamation. It seemed like a fitting name for a web application delivery platform!
As for how I’m involved, I’m what you might call the "Benevolent Dictator." I’m no longer the lead developer on the project, but I’m still the final arbitrator for what ultimately makes it in and what doesn’t with respect to functionality changes and enhancements, if there’s ever any dissent in the community. I dabble in the code base regularly, but spend most of my time looking after the community, writing documentation, and managing the bug database. Recently, I’ve been putting together a bunch of great open source plugins for blogging and Picnik integration, just to name two.
SitePoint: When should a developer seek out FarCry? What has it got going for it?
Most developers seek out FarCry CMS as a means to an end: they want a comprehensive content management solution. It’s only after they’ve had a bit of a play and built their own extensions that they begin to realize just how powerful the underlying framework actually is.
Developers should consider FarCry Core, the framework, for any web application — it’s not "just a CMS." In fact, FarCry is being used to build complex web applications all over the place, including CRM systems, ecommerce solutions, online TV guides, intranets, directory services and more. And with the growing list of available plugins, it’s becoming even easier to hit the ground running with any number of sophisticated solutions almost "out of the box".
SitePoint: What are the prerequisites for using FarCry? Is there any prior knowledge that would help new users? Does it use any other frameworks that could simplify or complicate things?
There are no real prerequisites for FarCry, although knowing how to program in ColdFusion obviously helps. As with any framework, you need to do things the "framework’s way". FarCry Core describes an approach to organizing your code, leveraging the underlying services available in the code library and addressing different sorts of problems. If you fight against the "FarCry Way", you’re going to get frustrated. The framework does a huge amount for you, and if you can bring yourself to "let go," you may suddenly find yourself being super-productive. FarCry can be an absolute joy to work with.
Unlike other frameworks in the ColdFusion community that work with each other to form a more complete offering, FarCry kind of does it all. There’s an ORM, a comprehensive caching engine, a roles-based security model, a nested tree model, a templating engine, a categorization engine, plugin architecture, and more. While we think our own code base is pretty cool, there’s some great functionality on offer in other more specific frameworks, such as Transfer ORM and ColdSpring. To better leverage these libraries, we’re planning a series of plugins to hook up third-party frameworks and make them more readily accessible within the FarCry environment.
SitePoint: What sets FarCry apart from other frameworks?
The current trend in ColdFusion frameworks is to force the developer into a very object oriented mind-set. Under the bonnet, FarCry relies heavily on OO concepts, but does its best to present developers with a less intimidating interface — a more "ColdFusion-esque" way of doing things.
Take webskins for example; these are analogous to the View in your classic MVC pattern. If you’re comfortable building in HTML you can build a FarCry webskin. Just drop your template into the webskins directory and it’s automatically registered. It comes complete with all the data for the specific object you’re rendering, access to all the functions of the parent content type, a library of custom tags to assist in building your user interface, and is automatically cached in memory. And then there’s "formtools" — the engine that dynamically builds rich user interfaces for adding and updating content without a single line of code. Of course, in all cases, if you want to get your hands dirty and code in a more object oriented style, you can.
SitePoint: Are there any great examples of FarCry "in the wild"?
Too many! Here are three recent projects Daemon has been involved in that I think are pretty special:
- The Mayo Clinic – This enormous medical site is the public facing view of the famous Mayo Clinic, and averages around 2 million page impressions a day. It’s built end to end in FarCry and a fabulous example of ColdFusion writ large. Phil Truesdale from the Mayo team will be in Sydney to speak at the webdu developer conference in June.
- Bluescope Steel – Bluescope Steel, one of Australia’s top 20 companies, uses FarCry throughout its various web assets. The Australian Products web site is probably one of the best manufacturing/industry web sites I’ve seen. It has tremendous depth of content, rich cross references throughout, beautiful images, interactive tools, video, Google Maps integration, and is hooked direct to their call center. It’s also the hub of several branded subsites, which leverage exactly the same content but are presented completely differently. Bluescope is seriously committed to its online presence.
- SelecTV – SelecTV is very competitive alternative to pay tv provider FoxTel here in Australia. The company’s site is built in FarCry and is closely integrated with the backend Websphere client subscription engine. We recently put together a full-blown online TV guide, complete with personalized guides, print, and PDF delivery options, and SMS/Email reminder alerts. The FarCry framework is used from the import of XML channel feeds right the way through to the membership services and rendering of the guide itself.
SitePoint: What about licensing, community, support, and documentation?
FarCry is licensed under the Common Public License 1.0. You can create derivative works and share or not share as you like. Unlike other open source licenses, this is something that’s commercially friendly.
We’re always doing our best to get folks involved in the FarCry community, and to that end we’ve invested heavily in making FarCry available on all sorts of systems:
- FarCry runs on Adobe ColdFusion, New Atlanta Bluedragon, and Railo, incorporating a range of ColdFusion application servers, from commercial options, to those that are free for community use.
- FarCry supports Linux, Solaris, Windows, and OSX (basically anything you can get a ColdFusion server running on).
- FarCry works with mySQL, Postgres, Oracle and MS SQL database servers.
The community itself is a vibrant and friendly place. We provide as many services as we can to help people learn, participate, and see what’s going on in the code base day to day:
- bug tracking
- fisheye for code tracking
- crucible for peer code review (running under fisheye)
- documentation wiki
We’ve recently released Daemon’s entire FarCry Developer Course (130+ pages) under Creative Commons. We hope this will go a long way to helping developers become familiar with the platform quickly.
And of course, Daemon provides a range of commercial support, development, and training services for companies investing in FarCry as a platform for their online business.
SitePoint: What’s coming up in the future for FarCry?
Big news: "Fortress", the FarCry v5.0 release, is due out in March 2008 — we’re just in the final stages of beta testing. Fortress rocks! There are so many new features in Fortress, one of the biggest being the security theme, its namesake. And we’ll be following up this massive release with a series of plugins that leverage and showcase many of the new, underlying services of the Fortress build.
SitePoint: Where can people find more information about FarCry?
The best place to start is always the community site, and the developer forums. But if you want to kick back and listen to an overview of FarCry, there are several upcoming presentations that might be of interest:
FarCry Core Framework
cf.frameworks online workshop
27 March 2008 6-7PM (Sydney time)
Using FarCry with ColdFusion
Adobe Pacific eSeminar
4 April 2008, 2-3PM (Sydney time)
Workshop: FarCry 5.0 Jump Start
webDU Developer Conference
11 June 2008, Sydney Australia
Full Day Workshop