in news

OctoberCMS or Wordpress

To start with this post. First let us say that we are not comparing these two great content management systems to say one which one is better or worse. There are no silver bullets in software development, every system has it's strengths and weaknesses. It is mainly up to developers and their clients which tool they will use to do the job.

Our background

As many of you already noticed we are OctoberCMS official supporters and partners. We have tried and worked with wordpress before. But what changed our mind?

When Idea Verum was assembled our main focus was developing custom web applications which we powered with Laravel, and after a while we were wondering is there any CMS based on our beloved framework, if not could we build one ourselves? That's when the search started and we stumbled on OctoberCMS. We must admit it caught our interest from first few sentences from description by organic google search. It was actually built on Laravel and we as Laravel developers were mindblown and it would be crazy not to dive in and check it out.

Now with that out of the way let's dive in content why we chose october over wordpress and what we think about both of them

OctoberCMS or Wordpress?

Both CMS solutions are opensource and php based. We already mentioned OctoberCMS is built on Laravel while wordpress is written in PHP without specific framework.

Both solutions implement features such as themes and plugin system, and both have their respected stores where you can browse already made themes and plugins.

So you can see that on high-level overview they're doing the same job. Helping developers and clients build quality websites much faster and more efficient.

Target differences between the two

Wordpress is by far most used CMS on the internet and it is probably due to their philosophy and marketing which is leaning to users without any knowledge or little knowledge of software development. It is fairly simple to setup your Wordpress website, install several plugins and you've created pretty decent website ready to start blogging and reaching your target audience. Without any doubts they did a great job making CMS solution which is user-friendly that allows you easy installation and quick release to the public.

On the other hand OctoberCMS have taken a different approach which is more appealing to developers rather than having 5-minute install and setting up your theme and plugins without any programming skills. For sure using OctoberCMS requires you to have PHP, HTML, CSS knowledge, and read their documentation before you dive in and create something.

In our opinion both approaches are good and work in their own way. But for us developers such solution is way more appealing and let us explain why. In the planning phase of the project with our client we are confident that everything can be achieved. That is because OctoberCMS is giving us freedom and great foundation to build our code on, so with that said we can create very simple website but also we can build you web application. That has something to do with coding practices that differ between two cms solutions. Wordpress is much older solution and if you look close enough you will see that coding is mostly done in functional style, where OctoberCMS is much more OOP oriented and extending great features of Laravel such as ORM and it's facades. There are few more things we believe is much better approach for building stable products which we will cover in plugin system overview.

We like to joke around in the office when we get a question why should we create OctoberCMS project and then bind client to ourselves whereas with WordPress user can change everything on their own without any programming skills (It's not like user can't change content or something on OctoberCMS).
The actual joke:
You probably drive a nice car and it breaks down, you might have an idea what's wrong. But do you fix it yourself or do you go to certified and trusted mechanic?

Of course each coin has two sides. There are downfalls of targeting mainly developers such as less exposure to more general audience for example digital marketers, designers, bloggers who have some knowledge how internet works and are introduced to software development in some form but still lacking the skills themselves. Combine that with age of the platform and it's clear why wordpress is much more used solution over the web.

Plugin system

Since wordpress is much more mature platform and preferred solution it has much more plugins in the store. Don't let that discourage you because OctoberCMS has less plugins in store, you will find plugin for almost every problem you might be having, and it's store is growing rapidly every day.

Wordpress plugin development is based around hooks either action or filter which uses callback functions to provide you ways how to change wordpress behaviour. They also give you option to create custom hooks and use their API. This usually translates to functional programming style.

Developing plugin from scratch

Developing a brand new plugin without depending on other plugins is something that is somewhat similar for both platforms. You have certain set of rules in documentation that you need to follow. Biggest difference between Wordpress and OctoberCMS when it comes to plugin development is modularity.

What we dislike on Wordpress when working on plugins is that we need to structure our folders and files manually if we want to keep everything neat and understandable. Simple task as adding plugin item into administration requires you to add hook or use API can be messy. Sadly we've seen some plugins where whole logic is separated in a few files. Good luck figuring it out and modifying it without breaking something that worked before.

When working with OctoberCMS everything backend related will be handled by controllers. You create controller structure as in controller folder where you store all controller files, register menu item inside plugin.php and there you go. You successfuly added menu item inside backend and there is no possible way for you to make a mess. This kind of development is crucial when working in team, you need clear structure and coding practice.

Wordpress lacks some modularity when it comes to developing plugins. Please note we do not say it's bad or OctoberCMS is better. It's just a matter of style. To each his own. It mostly depends on the developer how the code is structured and executed. We personally like modularity out of the box. OctoberCMS kindly pushes you to use good practices if you want to develop plugins. The moment you open up plugin source you know what to look for and where. Wordpress lacks that kind of modularity probably because it's been developed around 2001 or something if we recall correctly. In software development that year gap is pretty significant and Wordpress can't just drop old code because of backwards compability.

Extending other plugins

Oh boy, here we go. So you found great plugin on store that solves your problem but perhaps not in full extent or maybe not in the way you would like. It's time to use that plugin, extend it and mold it so you get what you actually want.

Wordpress has several ways you can extend a plugin in a right way. But sadly it doesn't stop you from doing so called "child" plugins. We have never seen a project where plugin is properly extended rather than just a copy of original plugin and then re-written code parts of that original plugin. That can also happen on OctoberCMS but it's much harder since you would need to rewrite a lot more of the plugin before you actually started changing plugin logic.

To be clear here it's not fault of Wordpress as CMS solution but the developers. Since Wordpress is so popular, tutorials and courses are all over the internet and even in private schools it's taught to students as part of php or even designer courses. They learn some php, get introduced to Wordpress and they're all fired up and start developing bunch of stuff without reading or understanding documentation. Teachers this one is on you!

Now on the other side OctoberCMS has strict policy how to extend existing plugin. Thankfully it's well documented and easily understandable. Same applies to Wordpress and on both solutions you need to check if certain plugin you are extending is actually installed to extend it. One step forward OctoberCMS took is that when you register plugin as dependency when user tries to install your plugin he will be warned about dependency and that plugin will be installed together with yours. That way it cannot happen you have extended non-existant plugin and break someones website.

Plugin on frontend - client side

Ways to display something from plugin to your end users are either hooks or shortcodes. Here it can get pretty messy. Hooks can be done pretty good and they will not cause problems. But the shortcodes, that's another story. Since Wordpress is leaning more on general population without programming skills it often happens that user wants to copy that shortcode somewhere on page or a post and it's not copied properly or misspelled and whole website breaks down. Now imagine big wordpress site that has over hundred pages and posts and you need to debug it. It will take some time to find out what's wrong and that builds up the cost of maintenance and revenue loss to your client.

OctoberCMS way of presenting plugin to client side is using components. We are now going back to modularity again. Same as controllers your components are stored inside "components" folder and are registered inside plugin.php which forces you to have good organization. When you want to present something from the plugin all you need is add that component to certain page, configure options if available and it's ready to work. Using this approach user errors are reduced greatly and you don't need to spend much time maintaining the website that way.

Ending with few notes

We believe OctoberCMS is much more suitable for building more complex and stable projects because it gives you modularity, good code practices, awesome stuff inherited from Laravel which is proven to be great framework for small and enterprise projects, modern and better coding principles and overall better architecture.
It is true clients are bit more tied to developer when using OctoberCMS but we think that is actually bonus point and not bad thing at all. If you have good relationship with your developer you will have stable and reliable product you can count on. All it matters is finding developer fit for your project. Remember the joke from before? Let us do our job and you will have great experience.

Community and tutorials

It's understandable but we have to say that OctoberCMS doesn't have big number of tutorials available as Wordpress does and the documentation can sometimes be lacking and daunting especially for newcomers. Let's say the community around OctoberCMS is obviously smaller since it's released quite recently, to be precise first version was released in 2014, and it targets developers. That doesn't mean you can't find a tutorial fit for you but you will have to search a bit harder than on Wordpress.

Our strategy

When we are working with clients we have few simple rules that ensures best outcome and mutual satisfaction. We give our users way of changing content such as text and images but we politely ask them not to play with the code for design and plugin components. If they want to change design or add new stuff later all they need to do is contact us and we will gladly upgrade their product. This might seem as costly solution to the client but in the long run it's much more cheaper than having your product going offline every month or so due to user's fault. After all, we offer support packages to our clients which in exchange for smaller monthly fees they get upgrades much cheaper or sometimes it's even covered by the support package.

Thanks for reading

We haven't covered everything from OctoberCMS or Wordpress and all their differences because let's be honest that would require much more than single post to go in all details. We focused mainly on plugin system as it's cornerstone of both solutions and briefly compared community of both. If you are wondering which solution to pick we recommend you to take your time and explore both solutions and find which one is better fit for your project. As we said before there is no silver bullet and there is no solution that can do everything you want perfectly.