As the future Drupal8 and eZ Publish 5 will both base on Symfony as their core, a few days ago one of my colleague at eZ Systems asked the technical difference between future Drupal 8 and eZ Publish 5. Here is my opinion about their difference:
Drupal: Very minimum core, need many many third party modules support for building even basic sites.
eZ: Many features out of the boxes, for basic portals or document management need none or few additional extensions support.
Drupal: up-to current still not 100% OOP code. Version8 based on Symfony probably be 100% OOP code ( This is just my guess ), but the backward compatibility and community modules upgrade to support the new version are not clear.
eZ: 100% OOP code, even before 5.0 using Symfony.
Drupal: code base ( including core ) is not as robust and secure as eZ. For example, it is still directly using $_POST, $_GET super global array in the code, it is developer’s response to take care and filter the data input, no in place mechanism provided.
eZ: Very robust and secure code base. Tons of best practice and design pattern applied. Quality is guaranteed by a central responsible enterprise.
Drupal: Core base is very complex, menu system, hook system, content model system internals…etc are very complex, especially implemented in a function/procedure style. Important community contributors are admitting that few and few people know how the inner core actually works, and it is becoming more and more difficult to fix bugs and maintain the core.
eZ: Core is also very complex. Same problem as Drupal community that few people actually know how exactly the core internal system works ( think about the workflow system, and content module’s operation mechanism, the actions, the cache system…). But because eZ has a very good architecture and OOP style API, most of the features can be understood and utilized when the actual inner workings are opaque to the platform developer. And because eZ provides so many out of box features and technologies supported, it is well worth it to go through the initial steep learning curve.
Drupal: Learning curve is very high and seems no ending in sight. Since the initial core is very minimum, it is essential to accumulate experience and knowledge in community modules, and because there so many, 13000+ and counting, it is a vast ( even for small portion ones out there ). What’s more, every module may provide a set of completely different administration interface style, which makes feel like learning a completely new system every time.
eZ: the Initial learning curve is very high, but since it provides a very rigid framework and universal defaults, once you learned how certain things work, it is the same way will be used for community and enterprise extensions. Also, the admin interface templates design are consistent across all the pages.
Drupal: Up-to-now mostly uses phptemplate as the template engine, which using php code in the template. This means if you missing a “;” in the template somewhere, the whole site sure come down. Also, using php code means, a bad developer can use php doing very bad things in the template layer, especially consider the php code in the system is functions in the global namespace => Yes things will different after version 8, but it takes for everything catch up.
eZ: Current and future twig templates are both secure and strong You can often find some error log message in the debug output, but the site sure will not come down.
Drupal: Content stored do not have structure. Also, a content node is directly generated from content types(class).
eZ: A sensible content node tree structure. Also, there is a logical separation between a content node and content object – good architecture.
eZ: Content and Representation are absolutely separated. There is clear cut between Content/Data layer and Representation layer. Stored data is very clean. Even the online editor is not a wysiwyg editor contrast to what you may think.
Drupal: Very simple way to handle configurations. And there is no standard approach, modules need implement and method to manage configurations. Configuration stored in DB, someplace includes absolute path and urls, which makes migration a nightmare ( you need learn the ways like “features” module to provide help to some extent ).
eZ: Very powerful configuration model, everything is in ini files and provide flexible and feature-rich configurations control many features in the system. Provide powerfully override and fallback system while also provide all sensible default values.
Drupal: Workflow system, Cache System, Permission control system and many others are very minimum or non-existed in the core, need support or replaced by third-party modules. For example, need rules or workflow modules to do good enough workflow system, but the modules may be very complex; another example: it takes many pieces and efforts together to configure a “rules” based cache mechanism compare to eZ Publish’s smart view cache system.
eZ: Most features provided out-of-box, robust and secure.
Drupal: Does not have official enterprise behind. It is, generally speaking, a development framework. Around it, there are several horizontal distributions like, pressflow; and vertical distribution, like, Drupal commons – for social network community application, Open Publish – for publishing house, open atrium – for project manage the application. Some high reputation partner organization, like Acquia, emerged and provide support, development, cloud hosting and implement distribution products. Use each of the distribution like using an entirely different product, which comes a large number of community modules integrated together, it is very hard to do a certain amount of customization.
eZ: It is ready to be used product. Many community extensions and enterprise extensions can be added to further enhance the system. A very good official enterprise direct the systems development and provide service and support, the target is to truly become a customer experience management system.