This post is over a year old, its content may be outdated.

Matt Wilcox

Web Development

Articles Jul 19th 2014

Craft CMS; A first impression

I've been playing with Craft for a short time, like they promised on their website – I love it. Maybe you should try it.

Background

You ought to understand where I'm coming from with this mini review.

This site, in one form or another, has been around for 12yrs or more – I built my own PHP/MySQL CMS for it purely as an exercise to learn PHP (this was before WordPress and the like of it existed). My CMS sucked in terms of usability, and as this was before PHP had Object Oriented capabilities I only ever learned functional programming – but I knew how it worked, and it did things the way I wanted them done. I like knowing how things work, and I like them to work logically, efficiently, and flexibly. I've long needed to replace that CMS; but I don't have the time to learn the skills required to write a really good one of my own. I just don't do much 'back end' programming anymore, I haven't for many years, so it's not worth my time to learn in-depth. So I started looking for a third-party CMS I could be happy to use.

What I want in a CMS

I've tried various CMS's over the years, and none has felt right for personal projects like this website. I needed something that Did Things Right (because I care about that sort of stuff) but was also flexible enough to let me implement any custom behaviour I might want. I wanted something that feels considered and well executed on all levels. I wanted something that was easy to use and did complex things well, but that didn't 'feel like magic' or 'turtles all the way down' when you looked into it. I wanted something that felt like I could trust it over a long time, without it becoming messy.

The options prior to Craft

For a long time I couldn't find anything that suited those requirements. Out of desperation I've been running WordPress for the last six months purely so I could start writing again; but I really dislike it. WordPress has good user-features, really very good user features; but it feels like such an incredibly hacked-together and convoluted bit of software from a developer point of view that I just couldn't stand it. Almost everything about it feels like it's a hack or work-around because of what the software used to be vs what it really ought to be.

We've used ExpressionEngine at work for a number of years, and I can't begin to describe to you my disdain for that CMS, I don't think a single member of our team would willingly go near it ever again.

Perch is decent enough but not what I was wanting for my own site, Perch isn't really geared up for serving blog-like content – especially 'multiple blogs', and this site is mostly a blog and likely to become 'multiple blogs'.

Enter Craft

I've found a CMS that solves all of those issues, and makes me enjoy bilding 'back-ends' again.

Craft has been on my radar since it was first announced (then called Blocks). It promised a new way of thinking about content and content management (one quite similar to something I'd started mulling over, so naturally I was curious), and I've been looking to try it out for ages. It's taken quite a while to get around to it, but I am very glad I have.

The buildwithcraft.com homepage.

I'm currently developing my first two projects with Craft, neither are complete, but I can already tell this is a truly excellent CMS. Let me put it this way; given that you now know my background and rough skill level with back-end duties, and given that this is my first time using Craft – it's taken me roughly 16hrs over two work-days to create the functionality for a website that has:

  • Support for multiple environments; development, staging, live.
  • A few basic 'pages' such as About, Privacy Policy, etc.
  • A blog section including archive and detail pages, with multiple entry-types (much like Tumblr).
  • Public user registration with accounts that have correctly limited permissions.
  • Automatic page creation for those users once their account has been verified.
  • A public-facing users directory where only the owner of a page can edit the page.
  • Members can add their own galleries on their pages, with assets stored in their own user-specific directories.
  • A contact form.
  • Multiple language support on all of the above (English and Welsh)

The page-creation on registration functionality involved me making my own plug-in for Craft. So I've managed all of that, including making a simple plug-in, from scratch, with my limited skills. In two days. With no third party plugins.

Craft is an excellent CMS. It really does live up to its name; the thing has been crafted. It's obvious that a lot of thought, effort, and time has gone into pretty much every aspect of the software. If you'd like an example of just how much, have a look at how the auto-update system works (oh, Craft has an excellent and very welcome auto-update system by the way).

Craft doesn't assume you'll be wanting a blog, or that you'll want to work in one particular way. It just provides a really solid, flexible, intuitive, and well documented set of tools to let you build your own thing, and that is exactly the sort of thing I want from a CMS. The backend control panel is neat, quick to load, easy to navigate, and responsive. The templating language (Twig) is a joy – no need to use any PHP in your templates, and the syntax makes a lot of sense. 'Real world' development is made easy because Craft provides a simple method of configuring your site to behave in different ways on different domains; so you can switch 'dev mode' on for your local address, and ensure that all system-sent emails go to your own development address, etc, and not need to worry about forgetting to turn all that off when you push live; it does that itself, along with a bunch of other stuff if you want. Craft's error reporting and handling is excellent. Errors with your templates are so informative they'll show you the block of code that contains the error, and highlight the line the error was on! What a complete contrast to ExpressionEngine's approach with which I'm depressingly familiar ('you have a blank white screen, good luck finding what broke. Or even turning error reports on.'). Craft will also log errors and other actions in one log file for your inspection should you need to get deeper into things.

Two star features of Craft that shouldn't be overlooked are the development and support team, and the community around the product.

How's this for a company with confidence: on the default control panel install, on the dashboard, there is a form to directly contact Pixel and Tonic (the people who make Craft) to ask a question if something's broken for you. If you want, it will send them your database, error logs, and templates along with the request!

On Twitter they've been fast and helpful whenever I've asked general questions, there's a great Stack Exchange community for Q&A, and a couple of third-party websites covering Craft development. Updates are one-click affairs (as noted previously) and come out, on average, 1.7 times per week.

All in all, I like it so much I've happily dropped £120 or so on the 'Client' version to re-do this site; which for someone very into Open Source is in itself a statement. We've also offered at work to help get the control panel itself translated into Welsh to augment the other languages it's available in.

But, for me, the number one feature of Craft is the attitude and competence of the people who make it. It gives me great confidence in the future of the software. I'd never felt enthusiastic to use a CMS until I started using this one.

Congratulations, Pixel and Tonic.