Published
2/17/2015
Categories
Software

Symfony CMF vs WordPress CMS

CMF-vs-CMS

WordPress is well-known in the world over for its relative ease-of-use and plug-and-go capabilities. Businesses of all shapes and sizes use this content management system for all sorts of websites, from content sites, to lead generation, to e-commerce or even social networks. Far few have been exposed to the idea of a content management framework, better known as CMF, but here we look to compare it with a CMS used in WordPress.

WordPress’s popularity is certainly well deserved. An intuitive interface allows for easy blog management while a function-based API can allow a user to quickly customize a site’s layout and functionality.  When it comes to a quick launch and multitude of available enhancements, WordPress can’t be beat.

But what if your business has more complex needs?  What if, say, your business has any of the following requirements?

  • You need to manage and search custom and complex documents with rich metadata and properties.

  • You have data that is or will be stored in a database other than MySQL (and may even live in different repositories in your network).

  • You need to disseminate your content across multiple channels, such as mobile apps or external APIs powering other applications.

  • Your audience is international and all of your documents must be translated.

  • You want to aggregate data from other repositories into custom documents, for reporting or compliance reasons, for example.

If any of these are the case for you or your organization, you might want to consider a more robust, sophisticated system – like the Symfony Content Management Framework.

Content Management System vs Content Management Framework

What’s the difference, you might ask, between a content management system and a content management framework?  John Bonaccorsi explained it thus

A CMS is a piece of software that is non-developer friendly right out-of-the-box.  Install it, configure it, and [you’re] ready to log in… A framework, on the other hand, is just a collection of reusable components of code.  It doesn’t do a lot out-of-the-box but offers you an exciting range of flexibility

Now back to the discussion at hand – a more robust system that can handle complex things like custom and metadata rich documents.

Custom and Metadata Rich Documents

First and foremost, WordPress’ data model is built for very simple, if not basic, content items (a title and a body). That doesn’t get you very far if your goal is to manage documents that are richer in metadata.

Some WordPress fanatics would say “There’s a solution for that!” The ability to create different post types and manage custom fields directly or through plugins can help you handle custom documents.

But if you’re a stinker for well-organized data, those custom fields just don’t cut it. The absence of a clear schema and cleaner relationships (e.g. foreign key constraints) in WordPress can make your content messy fast.

On the other hand, Symfony CMF complies with PHPCR (PHP Content Repository), a set of specifications that provides an API to flexibly store, manage, and search complex documents while supporting versioning.

With PHPCR, documents are stored and accessed using a hierarchical tree made out of nodes, which have children and properties with values. The concept of storing documents as nodes is nothing new. Unlike WordPress, Drupal and other more enterprise-level content management systems have been doing it for a long time, and it definitely provides a much cleaner way to organize data. Clean doesn’t necessarily mean rigid, though, and PHPCR allows for extending nodes with new properties while keeping things tidy in your repository. That is the power of Symfony CMF over WordPress. Drupal’s team actually decided to collaborate with SensioLabs, the company behind Symfony, to modernize its flagship CMS with version 8.

Storage Agnosticism

PHPCR offers an API to interact with tree-like documents. It does not concern itself with the type of persistence layer used to store those documents. From storing your documents on the file system to using a NoSQL database, anything is technically possible with PHPCR.

Symfony uses Jackalope, an open-source implementation of PHPCR. Jackalope is storage agnostic and in order to connect with storage facilities, you may opt to use Jackrabbit Server to store your documents in a Java DB or Doctrine DBAL (Database Abstraction Layer). The latter supports most of the RDBMS out there, including SQLite, MySQL and Oracle. It will eventually be compatible with MongoDB.

If you want to store your content in more than one database, it’s programmatically possible to do so by instantiating in your code multiple document managers, the PHP objects that communicate with the repository to store and retrieve and your documents.

Multiple Channels or Apps

In the era of mobile computing where consumers own a plethora of devices, enterprises can’t really afford to think web first. The smarter and long-term way to power apps is to deploy APIs that distribute your content.

If that’s your goal, WordPress is a bad choice. At best, it can leverage your RSS feed to display blog posts in app. To distribute content across devices in a robust manner – with features such as a RESTful interface, security, caching or performance tuning – your best bet is Symfony CMF. It can expose documents as XML or JSON once its REST bundle is installed, and its MVC architecture gives you the freedom to jump in the code to customize how your data is published. It would certainly be possible to store chart data as nodes and output those charts using SVG.

Symfony CMF also offers ways to improve performance, such as caching, so your apps can be snappy.

International Users

As great as it is, WordPress wasn’t conceived as a way for you to become a polyglot blogger extraordinaire. Some WordPress plugins may help you expose your content in multiple languages and that is certainly fine for simple content with a title and a body.

But if your goals are to manage documents with custom properties and translate them while maintaining a version for each locale, Symfony CMF is the better choice. PHPCR is able to handle multiple translations smoothly, and in the case of Symfony, you can use a bundle to configure your app to localize your content based on users’ profiles.

This localization and translation ability in conjunction with the REST API is a very appealing foundation for international companies whose goal is to power applications across the globe.

Composite Documents

One of the possibilities offered by recent technologies such as NoSQL databases or tree-like document repositories is the ability to aggregate data and compose new documents for applications ranging from reporting to the exchange of data with partners.

It is actually reminiscent of what XML databases tried to accomplish in the ’90s when the popularity of the markup language gave birth to a myriad of standards, such as XBRL in the finance industry. Unfortunately, those technologies, commercial or open-source, failed to be adopted, partly because of a steep learning curve imposed on DBAs, who were required to learn XSLT, XPath or XQuery to effectively manage their data. Understandably, it was much easier and more cost-effective at the time to stick to SQL.

Since the philosophy of something like XML is to exchange and consume documents, what truly matters is how the data is exposed, not how and where it is stored. As we’ve seen, Symfony CMF’s RESTful capability allows you to do just that without requiring your DBA to undergo the time-consuming process of learning new languages.

With its other features, your software engineers will be able to aggregate data from disparate sources, dump them into the PHPCR to build rich content, translate it, and build reporting capabilities or other mission-critical APIs in no time. Try to do all of this with WordPress and your project will run into a tough spot.Now if your marketing team is advocating hard for WordPress because of its easy-to-use admin piece, you can always suggest a more full-fledged content management system instead of a framework. Perhaps look into Drupal, since Drupal 8 uses Symfony CMF and other CMS are also being developed around it.

Looking for a way to manage your content?

Endertech is a Los Angeles WordPress Developer agency able to provide solutions for your WordPress and other web development needs. So whether you need a CMS or a CMF, we’ve got you covered! We have extensive experience with a host of content management systems and frameworks. Let’s talk about your project today! Contact us for a free consultation.