Drupal 8 and eZ Publish 5 and Symfony

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:

Core

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.

Learning

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.

Template

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.

Content Management

Drupal: It is not exactly a real content management system. Because of many community modules have taken vital roles on the platform, like view, panels, wysiwyg, modules built around block system, context…etc, everything is managed in admin interface and stored in DB, such as CSS id/class, style information, even JavaScript and php code can be input and stored in the DB through back office. Currently, Content and Representation is not possible to separated at all.

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.

Configuration

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.

Features

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.

……….

Others

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.

4 Comments - Leave a comment
  1. Man, your post is clearly biased towards eZPublish :) … not saying that is bad or completely wrong but it misses much of the technical details about drupal!!

    for example, drupal’s community is way bigger and hence discussions and workarounds are easier to find on google (and even stack exchange)…. personally I’ve been trying to install eZ publish for more than 5 hours due to the non-complete documentations for version 5 {finally came across a post that said that I should install it on a virtual host not in the normal /var/www} –and the installer didn’t tell me anything about the problem, moreover, the overwhelming amount of decencies and they are distributed everywhere in the installation documentation leaving you with no clue on how to really run it if your a re a first timer like myself — this makes me wonder why your blog is wordpress not EZpublish (because Ez can’t simply run on “any” shared hosting –while drupal has more potential to do :) )

    yet, another important point is ez publish approach about open source and software freedom isn’t very clear for me yet… however drupal association is a non-profit directly aiming at promoting drupal as an open source and free libre software.

    finally, drupal is “minimal” because it is part of the drupal design philosophy … it is intentionally very basic to be able to scale from a simple personal blog to a super complicated social network!


    Kind Regards,
    Mahmoud Fawzy

    • David Adam says:

      You are right, it is biased towards eZ Publish because it is an originally a post for the market purpose of eZ Systems; while I try to focus on eZ PUblish’s strength in this post, I try to keep the information as correct as possible.

      I like Drupal and WordPress. Everything has its imperfection, but as one famous slogan said, we should always try to “Use the right tool for the job”.

  2. Kapil Dave says:

    Well, saying this and that is not available in Drupal’s core system and hence it is not good enough is truly rubbish and it reflects the lack of understanding of Drupal system. In that sense, Windows OS is crap because it doesn’t ship MSOffice and Photoshop inbuilt!! Drupal’s approach is “minimum core – maximum options”. Why would you want a heavyweight core which has features that you don’t need? Why not a ‘minimum core’ which allows you every type of extensions that you probably need? That reduces the number of files and let’s you truly customize the application. That’s Drupal’s philosophy, you may agree with it or not which is fine. But saying Drupal is not good enough because it doesn’t ship some features with core is plain ignorance. JMT.

    • David Adam says:

      I agree with you. But the article had some bias in the other system. Drupal is a great system.
      But, my personal opinion is that it takes great discipline to have a team follow good standard; Drupal is too flexible to allow developers to use bad habits…

Leave a Reply

Your email address will not be published. Required fields are marked *

*