Forest header image

Symfony Finland
Random things on PHP, Symfony and web development

Bolt CMS is WordPress done right(er)

WordPress is like the bumble bee. Computer Scientists that studied the core code have concluded it is a miracle it works at all. It's clearly a product that taught the original developers how to work with PHP and MySQL. And it shows.

Over the years, cheeky kludge functions and inside jokes have been left in place as Poetry™. The core team stubbornly refuses to keep up with the times and adopt modern PHP development standards.

Superb skills in WordPress are like a country only exporting bananas. It gets you nowhere in the long run. So do you self a favour and save yourself from WordPress!

Thumbnail

Yeah, I've read a few of those articles as well - or at least participated discussions like that. While all of the rant of it's pretty much true - it does not really matter, now does it? Maybe not for the almighty dollar, but for you as a developer it might.

Regardless of what is said about it, WordPress is a multimillion business and won't dissapear: Working with WordPress: An Industry of Millions, Built on One Platform

My WordPress Story

A while back it was somehow trendy to share your WordPress lovestory. So let me share mine real quick. I started working with WordPress in 2005. I Iaunched my first major site, www.pelastustoimi.fi, for a government body in 2006. The site had quite a bit of content and functionality and averaged some 40 000 weekly users.

Between 2005 and 2007 I did quite a few of sites with WordPress, the most complex one was a Canon EOS photo campaign site where the users could upload pictures themselves with MMS or using a stripped-down version of the WordPress admin. Admins moderated those images before publishing. I felt everything was possible and it was straightforward to develop new functionalities. I loved WordPress.

Since that time I moved to jobs where I worked with custom web applications and more "heavyweight" CMS tools like Drupal and eZ Publish. I did some WordPress fixes here and there, but not a lot of actual new work.

I did struggle a lot with Drupal, eZ and Web Frameworks - they often were (and are) harder to develop with and overly complex for what people really needed. In many cases WordPress would have a been far more efficient tool.

Back to WordPress?

In the last few years WordPress has risen to new heights in the Finnish market. I hear things like "I've never heard of a WordPress project failing", "WordPress is the greatest thing since sliced bread", "I wonder if WordPress can be used as a real CMS", " WordPress is the platform of the future realtime web"

The buzz is pretty overwhelming and it seems you can sell anything just by piggybacking on the popular WordPress brand. Or how about that "PowerPoint Killer" powered by WordPress? All while even the community acknowledges that WordPress offers very little for application development.

So I decided to take another closer look at WordPress in the Fall of 2014. It all seemed pretty awesome, we had all the things I had dreamed of like multilingual support, multisites, flexible content model, etc. I was lead to believe all the features I had gone looking for from other systems were available with plugins like Posts 2 Posts.

Then it hit me. It's all the same as it was in 2005. While there has been incremental technical improvements, leaps in usability, a huge ecosystem, etc. the back office (including the DB schema) itself was still the same.

Overstating it, I felt I would need to forget the things what I had learned in a decade and just learn to select the best plugins. And add more hacks on top.

WordPress is a very efficient tool for building websites and all sorts of systems. A lot of talented people create useful things with it. And while WordPress does not in any way limit your learning, it is very capable and I can imagine it'll be hard to leave that comfort zone.

A quote from Is WordPress Becoming an Enterprise CMS Contender sums it well:

"WordPress’ reputation as a platform glued together with sticky tack has some truth to it, but with the right combination of extensions it can deliver on a lot of enterprise needs. Go too far with plugins, however, and you can end up with a fragile, insecure and brittle web site."

Comparing WordPress to Windows seems valid. Both are far from the Epitome of Cool, but remain very popular and thus have to maintain an absurd level of compatibility. Criticism is easily trumped with the large market share card: "Look at the numbers, clearly we must be doing something right". But geez, Windows 10 will run Microsoft Word 95.

I would not have the skills I have today had I stayed with WordPress. I recommend everyone to take a peek over the fence once in a while, even if the grass does not seem greener. At least take a look at the shared components the PHP community offers.

Bolt is fun and built right(er)

Early in 2013 I started working with Silex, a PHP microframework, and also compared Content Management Systems built with it. I found Bolt to be the best of of the bunch and have had a few sites (including this one on HHVM and HTTP/2) running on it ever since.

It is a fun tool to work with - you'll get a lot done very quickly. The editor experience is very good and the development practices and technical solutions common and easy to grasp.

Bolt is in spirit very close to WordPress - the administration interface and installation is very easy and straightforward. You'll be up and running a decent looking site in minutes. Configuration, however, is developer focused as you edit YAML files directly via an online editor. This applies to menus, which pale in comparison to the superb menu editing capabilities in WordPress.

Bolt is feature complete with contemporary WYSIWYG editing, flexible content types, user management and an excellent media library. Creating and modifying themes easy and there are already quite a few quality extensions available on extensions.bolt.cm. Backwards compatibility also seems to be on a good level in my experience.

Bolt is quite recent and has been born after the inception of the PHP ecosystem we've got today. While it's still quite new and built from ground up, it actually builds upon a foundation way beyond what you would've thought a PHP-CMS-from-Scratch used to be:

Silex is a PHP microframework for PHP. It is built on the shoulders of Symfony2 and Pimple and also inspired by Sinatra.

Using Silex does not force a specific structure on your application, but I recommend to the Silex Skeleton to get started. If you look at the Bolt source code the code is quite well organized. Regardless of your project structure you'll be able to refer to the Silex Documentation for framework basics. And as a PHP developer, using Composer for extension management and updates delights me, if for no other reason than it "feels right".

Under the hood you've got the typical Symfony components, also used in eZ Platform and Drupal 8, such as Twig, YAML Parser, HTTPKernel, etc. In addition to this stack you've got the Bolt internals which allow you to create your own extensions. This makes extending Bolt quite straightforward and structured. It's worth noting that by default Bolt installs on a SQLite database which is a bit tricky to migrate to MySQL.

Like with any product, it's bound to have code warts and there are some common features missing from the system today: Full multiple language content management, multisite installations, versioning, etc. But this is understandable as these are not on the list of requirement for every single project - the development team has had the right focus. Complex multipurpose tools will eventually compromise on usability. See the roadmap for future features.

You might also shun away from Bolt due to the limited exposure and lack of brand image, but most of the websites you build with this type of tools are disposable in a few years. Then the product does not really matter that much. And as for plugins - they're often just wrappers for snippets, or at your disposal as PHP components via Packagist. Bolt Extensions are easy to create and distribute to others. Also as a developer you'll be investing in working with a Silex framwork application, not just a specific tool like with WordPress.

Make my day, give Bolt a go - the latest version was just released today: Bolt 2.2.5 Released


Written by Jani Tarvainen on Friday July 24, 2015
Permalink - Tags: php, wordpress, bolt, symfony, silex

« Test PHP 7 with Vagrant - A Symfony CMS workshop and a whole lot more at the Summer Camps »