When it comes to CMSes you could say I have a fair amount of experience. Practically every site I have ever worked on has had some aspect of content management, most of which I or my ex-team has built from the ground up. You could say that I am a big fan of bespoke content management systems.
The reason I am such a big fan is that when it comes to adding content management you can make a fair bet that an off the shelf package or an open source CMS would only work for 90% of the sites functionality. What you end up having to do is customise the packaged CMS for your purposes or have to compromise on functionality for the site. Customisation is usually in the form of a plug-in, and these come with their own headaches. Your upgrade path is compromised, security is even further out of your control and the quality of plug-ins is rarely as high (or low) as the original package.
This is all well and good if you have budget to play with, but in my experience 75%+ of the time content management is overkill for a site and never actually used by the client. They pay the bills though and usually against advice it is required, and on every page! Can I add a CMS for every page, you bet I can and with the use of a good MVC framework it is a lot simpler and quicker to implement than it used to be. But lets face it its tedious, of no technical challenge and budget could be better spent elsewhere on the UI.
This is obviously an issue which isn’t confined to just me and one I guess a number of people have tried to fix. What I need is a simple CMS that can be quickly implemented for a simple site. Step into the light Perch.

Perch has been developed by edgeofmyseat and its tagline is
a really little content management system
I’ve heard good things about this off the shelf package so on a recent project after debating whether I would find myself having an awful time wrestling with yet another system which didn’t do what I wanted I decided to give it a go. Lets just say I wasn’t disappointed.
Lets also be clear from the start the use-case for this was a very simple site with what amounted to one template over a fixed number of pages. I didn’t need the ability to add new pages, I controlled the layout, and the template was fixed into three types, a heading, body content and an image/video.
After buying a very reasonably priced license I set about installing the system. Given I am very comfortable in using frameworks, wordpress, drupal, joomla and the myriad of other similar packages the installation was very simple. A config file, a slight customisation to the URL and the CMS was installed. Total time from starting to having it up and running 12 minutes. Even in comparison with wordpress that was quick!
Now I had the system running I needed to see if it did what I needed. Having already built the site template I looked at the example page the CMS came with and amazingly it satisfied 2/3rds of my needs. Copy and paste later and the page was defined. Visit the page in my browser and Perch picked up on this installation and displayed the content to be edited in the admin screen. Simple as that. I won’t go into details as to how it worked as the documentation does a much better job than I ever could.
So far everything had been ridiculously easier but the last part was not an out of the box solution, the dammit I wish I could do this moment I had been dreading. The requirement was to be able to upload either a video or an image to display next to the content.
Perch has certain types of content, and templates which define collections of content types. I decided to create my own template that utilised the file and image types with a conditional to define which one to use. My first thought was that I could use a radio button to determine which of the two types to display, unfortunately I couldn’t work out how to target a specific content value through the conditional tag, it seemed only to define if the the option had a value of any type. I changed it to a checkbox which meant the page defaulted to an image but could be overridden with a video.

The template was defined like this (content has been slightly mangled by the syntax highlighter):
<script src="/js/flowplayer-3.2.6.min.js"></script>
<script>
flowplayer("player", "/flash/flowplayer-3.2.7.swf", {
clip: {
url: "<perch:content id="file" type="file" label="Video" order="2" />",
autoPlay: false
}
});
</script>
This was saved as template and could then be assigned to the content region when I added it to the page. This worked very well for me and I had essentially finished the CMS in less than 2 hours! What more could I ask for than that. Well I would of course have preferred my original template implementation, and the ability to restrict the file type for upload would also have been nice but I could trade-off these requirements for the speed of implementation.
So would I recommend Perch? In a word yes, in a sentence it would be yes if your use case hits the demographic its aimed at? My use case was simple, very simple and even with a custom template it practically worked out of the box. If your CMS requirements are more complex I would think twice about using Perch. Now that’s not to say Perch cannot but manipulated to your needs, its got a great API and some great looking plug-ins but then you are back to where you are with most off the shelf CMSes. If you need a lot of custom pages and custom CMS flows then I would probably go back to bespoke in a flash. Maybe thats because I haven’t had the chance to get deeper into Perch and perhaps I should.
However if you get a chance to use Perch I would highly recommend it.