Welcome to the first post in our Drupal 8 How-To Series! This is a continuing series by Mediacurrent’s Derek Reese exploring the hot technical topics for building sites with Drupal 8.
This series focuses on Drupal 8 from a Full Stack Developer perspective, but will still dive into some site-building and general configuration from time to time.
How to Think About Drupal 8
If you’re new to Drupal, version 8 is probably a better starting point than 7. The latest iteration of the CMS framework is built in an entirely object-oriented manner structured on Symfony as a Model View Controller (MVC) Content Management System (CMS) framework.
Comparing to Previous Versions
Drupal 8 definitely picks up a good portion of Drupal 7 on the surface, and the exterior looks much the same. The GUI and Editor experience have been improved and tweaked but will still feel familiar thanks to it using the ported Admin theme from Drupal 7. Many of the hook() style statements have survived, but in many cases they are little more than platitudes. The similarities start to fade there, and from the developer perspective one thing is very clear: Drupal 8 is a Symfony 2 Project.
D8 is a Symfony Project
At its heart, Drupal 8 is built entirely as a Symfony CMS. Much like Sulu, Pagekit, or Bolt, Drupal's codebase feels right at home as a modern CMS toolkit. Unlike most Symfony CMS projects, however, Drupal is still the multi-story behemoth of web content management and delivery.
Symfony projects live and die on concepts like Routes and Dependency Injection, but with Drupal 8, concepts like Plugins and Inheritable Classes more than anything provide provide the baseline that defines how you work with the system.
Do it the Core Way
When building sites in Drupal 8, much like previous versions, the source of insight and inspiration is taking a look at how things are done in core. Thinking about creating a module with multiple entity types and complex hierarchy? Enable the book module in core and explore the code to see how it’s built.
More Plugins, Less Hardcoding
Drupal 8’s plugin system allows new code to easily add to existing systems - much cleaner than hooking into functionality at predefined points like in D7. These plugins have full control over their entire lifecycle and can easily expand or redefine base plugin functionality through OOP Inheritance.
Above all, Drupal 8 should be easier to work with than its predecessors even though the documentation is quickly playing catch-up. If you run into cases where it’s not, it’s very likely that you’re missing something and there’s probably an easier way to do it.
Thanks for joining us and see you at the next post!