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 backwards 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 use $_POST, $_GET supper 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 an central responsible enterprise.
Druapl: 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 work flow 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 seem 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 a small portion ones out there ). What’s more, every module may provide a set of completely different administration interface style, which makes feel like learn a complete new system very time.
eZ: Initial learning curve is very high, but since it provides a very rigid framework and universal defaults, once you learned how certain things works, 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 use 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, bad developer can use php doing very bad things in the template layer, especially consider the php code in the system are functions in the global namespace => Yes things will different after version 8, but it is 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, content node are directly generated from content types(class).
eZ: A sensible content node tree structure. Also, there is a logical separation between 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 not standard approach, modules need implement and method to manage configurations. Configuration stored in DB, some place includes absolute path and urls, which makes migration a nightmare ( you need learn the ways like “features” module to provide help to some extend ).
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 part modules. For example, need rules or workflow modules to do good enough workflow system, but the modules maybe 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 distribution like, pressflow; and vertical distribution, like, Drupal commons – for social network community application, Open Publish – for publish house, open atrium – for project manage 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 entire different product, which comes a large mount of community modules integrated together, it is very hard to do a certain amount of customization.
eZ: It is an 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 custom experience management system.