Exploring the Symfony2 Full Stack Approach of eZ Platform
Symfony2 can be used in two different ways: as components (independent software components), or in its "full stack" form.
In other words, your application either integrates Symfony2 components or Symfony2 integrates your application.
eZ Systems chose the second solution: Symfony2 full stack.
When using Symfony2 in its complete form, the integration of existing developments and plugins (more than 2500 to date) of the Symfony community becomes a breeze. Roland Benedetti, eZ's chief of product and marketing, explains our decision to switch to symfony in a guest blog post for opensource.com.
Because of our full stack approach, any development you make can fully embrace and leverage the Symfony2 standards, which of course comes with tons of perks.
Leveraging Symfony2 standards is of course a choice, not a requirement. For example, we use our specific eZ Platform REST API, which is not the standard Symfony way to use a PHP API. In this case, we chose to remain loosely coupled with the content repository. Developing with Symfony and eZ offers you the choice and opportunity to do some things your own way.
eZ Publish Platform 5, as well as our next generation, eZ Platform, can be thought of as a standard Symfony2 application. However, what makes them unique is the fact that we provide a full-fledged administration interface, and we are embedding 13 years of content and experience management expertise within APIs, which are shipped as bundles. You can learn more about this topic by viewing these slides from Symfony Live Paris 2013.
SensioLabs, the creators of Symfony2, and eZ Systems have been able to achieve very high collaboration, both in terms of vision and quality requirements. We've been able to build a strong communication channel between our technical teams and because of this collaboration, we've reached high-quality results that are approved and supported by Symfony2's main contributors.
Understanding the Drupal Way
Like us, the Drupal community has decided to embrace Symfony, but it's taken a different approach. Its future version 8 will incorporate Symfony2 components, such as HttpFoundation and Routing, but not the full stack.
To understand why this is important, you need to understand how Symfony2 works. It is a collection of components. For example, the routing component is used to route a user to the dedicated controller/action and display its interface. All Symfony2 components can be used in standalone mode, and Drupal 8 integrates some of those components. But when Symfony2 isn't used full stack, some components of an existing bundle may be missing and not completely compatible with Drupal 8.
Don't get me wrong, integrating components of Symfony2 will have its benefits. By doing so, Drupal 8 will be easier to understand and maintain. However, it is limiting from a user perspective.
eZ Systems is committed to providing its customers with stability and evolution. Through efforts like our switch to Symfony2 full stack, we are welcoming a large number of new features to meet the challenges on the road ahead -- and we hope you will be along for the ride!