Find out more about our consulting services. McLean. Boston. New York.
Upon arriving at DrupalCon in Denver a few weeks ago, I was very excited to review the schedule and map out the sessions I wanted to attend. I thought I had a pretty solid schedule until I saw Dries Buytaert, the original creator and project lead for Drupal, give his keynote speech on “Winning hearts and minds through innovation”. I was completely surprised by a segment of his speech where he announced that Drupal 8 would adopt a number of components from Symfony2.
This was a compelling idea to me, having spent the previous nine months working on a large-scale Symfony project. As a new employee at NavArts, I couldn’t believe that two of my favorite frameworks were going to be ‘merged’ in a way I had never fathomed. I immediately altered my penciled-in schedule so I could attend the ‘Drupal 8 Meets Symfony2‘ presentation given by Fabien Potencier, the Symfony founder and lead developer, and Lukas Kahwe Smith, a Symfony2 core contributor and PHP 5.3 Release Manager.
Below is a brief synopsis of the presentation along with some research materials:
Drupal 7 was the first release that had any type of object oriented (OO) methodologies and OO design patterns. Other PHP frameworks and CMS applications have been built using these practices for years. As many Drupal developers know, there is one way to do something and there is the “Drupal Way”. Unfortunately this is because not enough change has been implemented in Drupal 7 to affect its internal structure to be like the majority of other similarly available applications. Lukas Smith, stated “This doesn’t mean that Drupal is wrong”, but it does make it more difficult for experienced developers and juniors alike to easily comprehend and master Drupal. It has become so complex that only those who have been using the application and participating in its evolution can really grasp the core of Drupal itself. As these developers leave the community or move on, it will become increasingly more difficult to replace them with people who have the same amount of historical knowledge.
So, Dries and other core contributors held a sprint for the Web Services and Context Core Initiative (WSCCI) for Drupal 8 in early February to discuss the future of Drupal.The preliminary goals of the sprint were clearly defining the initiative’s scope, get agreement on what was to be accomplished and why, as well as laying out a clear plan for how this was going to be achieved. Although there were many discussions and other improvements made to the core, one of the most exciting was the adoption of a handful of Symfony’s components.
For those of you not familiar with Symfony or what it provides, it is a reusable set of standalone, decoupled, and cohesive PHP components that solve common web development problems. Symfony is a full stack web-framework with an Object-Oriented set of classes compatible with PHP 5.3 and later. So, you have Drupal which is an infinitely extensible Content Management System and Symfony, a Content Management Framework. The components being adopted by Drupal are not minor components from Symfony or for Drupal, but major components that will provide the base for a great low-level architecture for Drupal 8. These components are HttpFoundation, HttpKernel, Routing, EventDispatcher, DependencyInjection, and ClassLoader.
By adopting these components from Symfony it will facilitate the refactoring towards a “framework” core for Drupal, also allowing for easier integration with other applications and best of all, by bringing the communities of Symfony and Drupal together it will ensure that the Drupal developer pool will continue to grow and persist, rather than falter as a result of attrition.
I provided links from the Symfony website for the components discussed above. You may also find more information from the following sites: