For many years as a software developer, I have been testing various content management systems (CMS) to make sure a particular CMS can handle websites that work for businesses, e-commerce, non-profit, and educational institutions. In doing so, there are 3 content management systems that rose to the top of my list, written in 3 different programming languages. I am writing about content management systems written in different programming language to address a client who has a need to match a CMS to their existing company technology stack and developer skill set.
In this article, all of the systems I mention are evaluated based on factors like cost, ease of updating content, being developer-friendly. More importantly, whether it can scale when your needs demand it and its overall popularity in the website community.
We currently use these systems for our own website clients because we believe that each one provides many advantages and can fulfill varying business needs while organizing and delivering your website content.
1. Using Java Programming Language - Hannon Hill's Cascade Server
It is one of the most scalable CMS solutions available. It has the ability to host multiple websites and has a very user-friendly dashboard where users can create rough drafts and view activities and messages. It is capable of creating different types of roles and content types with varying permissions, workflow, and audit trails for hundreds of users. Its decentralization of website management allows multiple teams to manage content that are only relevant to their field of expertise. We highly recommend it for large organizations because that is when it truly shines. Of course, it can also be used by a smaller web editorial team with no issues.
I have seen this CMS scale easily to more than 100 websites in one installation, with some sites having thousands of pages and hundreds of users managing content. As long as you know how to leverage all the out of the box features 'properly', you can build a solid content management solution for your company. The reason I emphasize 'properly' is because any content management system must be used with their strengths and best practices in mind to prevent maintenance headaches.
One of the reasons it scales quite well is because it has built-in flexibility for creating content, much like using small building blocks that can be reused in multiple sites and pages (watch out for upcoming posts on how it actually does this). It also uses a push-based CMS system where it publishes web pages to different web hosting servers, and this makes it easy to distribute the page requests to different web hosts so your live site is never overloaded by web visitors. If you want to know more about as to why a “push-based” CMS is a great idea, please read this article.
As for extensibility, it has a web service that can be used to build applications that leverage the same CMS data for building mobile or web applications. You can also create plugins within the CMS to extend its built-in capabilities. However, I am a big fan of using everything out of the box and only building custom plugins when absolutely necessary, so you are not stuck maintaining plugins, and having to constantly make sure that new releases do not break your custom plugin.
Cost: License Fee (Very Flexible)
2. Using Python Programming Language – Django Mezzanine
For web teams who maintain smaller amounts of webpages and prefer to have a developer maintain their website so that they have more control over the database and custom applications within the CMS, this is a great option. After all, Mezzanine is really just a project for the Django web application framework, but with the added bonus of a tighter integration of hierarchical web pages, blog posts, search, gallery, and third-party plugins. It is recommended for small to large websites with an emphasis on building scalable applications integrated with a content management system.
Using Mezzanine is also a good way to transition existing Wordpress implementation to Mezzanine if one prefers to have a full Django/Python technology stack. It is also highly scalable, and the same Django web framework it runs on is powering large community websites such as Pinterest, Disqus, etc.
You might be surprised why we didn't pick another open source project like Plone for a large CMS implementation for the Python language. It is mainly because we have already chosen an enterprise level CMS in Cascade Server and preferred its scalable 'push-based', decentralized method of publishing web content. In saying that, Plone is also an incredible CMS using the python language, and definitely worth an examination.
Another comparable option to Mezzanine in the python community is Django CMS. While this is also a project with great popularity in the Django community, we chose Mezzanine because we believe that a tighter integration of all of its third-party applications provides for a much friendlier user interface. I particularly like that it's possible to move Wordpress pages into this platform as well.
Cost: Free (Open Source)
3. Using PHP Language – ModX
ModX has a loyal following and makes it easy to build any web design from scratch. It is a very usable platform for designers and developers, and the user interface is quite nice as well (though Wordpress, Mezzanine with custom content types, and Cascade Server might have a leg up on it in terms of having a friendlier administrative user interface).
It is an advanced CMS with emphasis on roles and security, and has a very powerful templating engine for creating very custom templates. It allows directly adding PHP snippets within the templating engine to make it easy to build custom plugins in PHP. In the years we have used this system, it has been a breeze to upgrade to the latest releases without much issues.
A comparable CMS to ModX is Drupal. It is also a very powerful CMS with more plugins and a larger community involvement. The reason it is not our first choice is because it felt a bit heavier than ModX for implementing templates and rendering published pages. In addition, it also has a higher learning curve.
Cost: Free (Open Source)
4. Bonus CMS – Wordpress (PHP Language)
Ok I lied, I placed fourth CMS to keep things more exciting...
I added Wordpress because of its simplicity and elegance, and its popularity with non-technical users who want to maintain their pages. It is perfect when you need to establish a web presence quickly without much upfront web development costs/investment. Initially, Wordpress rose in popularity as a blogging platform. Now, it has evolved into a powerful CMS with lots of community support and plugins galore.
From the development/scalability point of view though, I still prefer the other 3 above because customizing Wordpress will involve hacks if you want to add features that Wordpress wasn't built for. Like I said earlier, you will save a lot of headaches if you choose a CMS base on its strengths (out of the box features) and how closely those strengths match your needs.
Cost: Free (Open Source)
I have discussed some of the reasons why you might want to use the Hannon Hill's Cascade Server CMS for large enterprises, Django Mezzanine for maintaining web pages with applications, and ModX for customizable templates that can scale. We also dabbled in Wordpress in case you want to install plugins yourself and maintain your own website. In essence, your content management choice will vary if you are limited on the technology that you can use in your company, your budget, and the size of your website implementation.
In the next posts, I will dig deeper into each of the CMS mentioned above so that you have a clearer idea as to how they work and why they can help you create amazing websites. For now, feel free to mention anything that I have missed or any thoughts you may have.