ExpressionEngine is just that - it’s the engine of our agency. It keeps us on schedule and budget. It gets out of the way so we can concentrate on doing the best work possible. Other CMS’ provide just as good an engine - sometimes better. But there’s yet to be a massively compelling reason to throw away our trusty Honda engine for something else. If our engine starts breaking down, we’ll replace it - but for now, it’s running high and fine.
But why does it work so well for us? Let me try to break that down...
Before we started using ExpressionEngine we were using a mixture of WordPress, Magento, Perch and our own CMS. We used different CMS for different jobs. Each of those systems in themselves were great, but they never quite ‘clicked’. We’re a small team, so developing and supporting websites on all of these systems meant we could never quite master them. Jack of all trades, and all that.
Sometimes it felt like we were making silly decisions and compromises. We would have Magento sites that needed to have WordPress blogs on the side because Magento sucked for content management and Wordpress sucked for eCommerce. I hear a lot has changed since then, but at the time the situation was pretty dire.
ExpressionEngine on the other hand is more of a Content Management Framework (CMF) than Content Management System (CMS). We would add a channel called “Products”, add a channel called “Blog”, build the templates that we needed - voila. All done.
I don’t know how to express how much money, time and stress ExpressionEngine has saved us by giving us one way of working. That one way of working is constantly improving, every day we’re changing it. But regardless - it’s one way. As a small team, it’s invaluable.
I love Open Source. I am a big fan of Firefox, use Apache all day, our servers run on Linux, and Git brings sanity to our development cycle.
I fully buy into the argument that as long as a project has contributors, open source brings innovation, stability and support.
ExpressionEngine isn’t open source. When I started to use it, it felt a bit wrong. Especially after coming from primarily WordPress. But the software was perfect for our needs, so fine. We’ll pay.
Over time, the benefits of it being commercially backed became apparent to me. It was clear that the (small) team at EllisLab have a vision for the product. It has soul. It’s opinionated in what it should be. I like that. ExpressionEngine isn’t right for everybody, but for the people it is right for - and the people who will pay for it - it’s very very right.
We actually found ExpressionEngine long before we started using it. The reason that we were put off from using it was it was commercial. Wordpress and Magento are free, we’ve already built our own CMS and Perch is only a few quid.
“The cost of ExpressionEngine would price us out of the market! We’re only a tiny agency in a town in England that nobody has ever heard of!”
One day a project required ExpressionEngine. And immediately afterwards we started slapping our heads for all the opportunities we had missed by putting it off. The cost of the license was about £200 - but it saved us countless hours. I think we probably made more on that first project because ExpressionEngine made it easier - so it saved us time. And time is money.
When we take on new staff, they become comfortable developing in ExpressionEngine in a couple of days, and very good at it after a couple of weeks.
But to be honest, we would put up with a steep developer learning curve if our customers found it easy. Luckily we don’t need to compromise. Our customers find it really easy. Our training sessions normally take less than an hour.
The ExpressionEngine 2 control panel is ugly (the upcoming EE3’s is a lot nicer). But easy. Want to add a new blog post? Press “Content > Publish > Blog Post”. Want to add an eCommerce product? “Content > Publish > Product”.
That’s kind of it.
The reason it’s so easy for customers to understand is that out of the box ExpressionEngine doesn’t have any content structures. Not even a blog. You make everything (it only takes a few clicks).
Content in ExpressionEngine is smart. You have channels, these are types of content. Things like blogs, staff bios, products, brochures, and offices. You know, "things", not "pages".
Each channel has it’s own set of custom fields. There’s a bunch built in and hundreds more available from third parties.
You need to make your content structure anyway - and ExpressionEngine makes it so simple that you may as well make it perfect for the client. It feels like the CMS was made just for this one site.
ExpressionEngine doesn’t really have the same concept of themes that other CMS’ like Wordpress and Drupal has.
Unlike many professional designers, I think that themes have a place. I see websites as tools, and if something already made solves the problem you have - just use that. It would be weird if everybody bought “bespoke spoons, hand-made to your exact food requirements”.
But plenty of businesses want and need bespoke websites. ExpressionEngine is a great platform for that. As I was mentioning with content, ExpressionEngine doesn’t really care how you design the site. It’s not opinionated about how you design. Technically you don’t even need to use HTML if you don’t want to. Don’t worry about having header.php here, sidebar.php there, footer.php there. It’s irrelevant. Design the site as you want it to be and tell ExpressionEngine where to load in content. Done.
ExpressionEngine is a Create Once, Publish Everywhere (COPE) style CMS. I’ve already mentioned how it doesn’t particularly care about your content structure, and it doesn’t particularly care about your template structure.
When you put those two things together there’s magic. There is a strong separation of content and design. You can break your content down into easy to manage, reusable chunks. You can present that however you like - everywhere you like.
If you have an “Offices” channel to power your “Find your nearest store” feature, you could also use the same data to power an XML feed that uploads to Google Maps. Got a staff bio channel? Use that same data to link into LinkedIn’s API to keep their profile page up to date. Got an iPhone app? Use the photos, prices, descriptions, and reviews from your “Product” channel in your native app.
Create Once, Publish Everywhere. Brilliant.
As well as being capable of COPE, it is also capable of coping with traffic. It powers some pretty big websites. Hop Studios keep a list of the 20 most popular sites that use ExpressionEngine.
Pizza Hut use it, and they make some dough.
ExpressionEngine doesn’t do all that much out of the box. At its core it does content, members and templates. But it has a smart approach to third party add-ons with a vibrant community of open source, free, and commercial add-ons available.
What if we want to add eCommerce? No need to install that Magento store anymore, we have a choice of some really solid tools including CartThrob, Expresso Store and Charge. They work in a coherent “ExpressionEngine’y” way, but have their own spin. We have choice, but the right kind of choice.
Then there’s Devot-ee. The unofficial app store of ExpressionEngine. Think of something you might want your CMS to do, and then search for it on Devot-ee. (Pssssstt: if there’s no results, let me know - I want to develop it!)
ExpressionEngine began as CMS called pMachine in 2002. It’s a very mature piece of software. The question of “is it too early to use ExpressionEngine for this?” is never going to crop up. If it’s possible with ExpressionEngine, it’s probably been done before on ExpressionEngine. It’s fine!
Despite being so mature, it’s still the underdog. It’s got a tiny market share and an even smaller mindshare. It keeps improving. As I type this the public beta of ExpressionEngine 3 was released. I’ve been part of the developer preview of ExpressionEngine 3 and their release cycle has been outstanding. An update a week (sometimes more). Constant communication and listening to feedback whilst sticking to their guns.
Fighting against WordPress and Drupal doesn’t seem to faze EllisLab. Craft on the other hand, that shook them up. When Pixel and Tonic (popular ExpressionEngine addon developers) launched their own CMS, EllisLab proved what they’re capable of. They remade entry relationships to be incredibly powerful out of the box and launched Grid which I believe outperformed Pixel and Tonic’s Matrix fieldtype.
It’s an old dog with new tricks.
The ExpressionEngine community is what I love most about the software. I’ve met some brilliant developers (hi Steve, John, Lodewijk, Christopher, Andrew, Kevin, Mark, and co!) at conferences, meetups, on Twitter, StackExchange and the Slack group. It’s one of the most friendly and helpful digital communities I’ve come across.
Then there’s people like Ryan Masuga going out of his way to write “The Guide to ExpressionEngine® Development” - an outstanding thorough and thoughtful look at how his agency develops using ExpressionEngine. The community supported him by buying $5,000 worth of copies within the first 24 hours.
In short: it’s a nice place to be. And that means a lot when it’s the tool you use 9-5.
There are plenty of brilliant CMS out there. ExpressionEngine is one of them. We’re careful not to be religious about our choice of software, we know it’s not a silver bullet and we know it’s imperfect. But we also know that if we upped and left, swapping over to another system - well - that wouldn’t be a silver bullet either, and that would have imperfections too.
ExpressionEngine is a really solid CMS. And we’re more than happy to keep using it.
What do you think? Tweet us @ryeagency and get involved in the conversation on the #eecms hashtag.