My Early Thoughts on Drupal 8
Ready or not, here it comes.
Over the past few weeks I've been diving down into the D8 trenches. I maintain several modules for D7 that needed to be updated. I've only spent a few weeks with D8 thus far, but I have to say, it's... Interesting.
Drupal 8 is so different than it's v7 counterpart, it's like comparing a '69 Mustang Shelby with a 2015 Mustang Shelby GT, they're both Mustangs, but that's where the similarities end.
Whereas D7 was largely a procedural PHP framework, D8 is a modern, object oriented, DRY, PSR-4, Symfony-using framework. The changes can be felt everywhere.
What. The. Hell? Drupal 8 has a steep a learning curve for those of you who are coming from previous versions of Drupal. You're now expected to know a multitude of modern web technologies and concepts. There's now more or less equal parts of Drupal specific knowledge and broader web technologies that a D8 developer needs to know, unlike previous Drupal versions that were highly Drupal specific. Granted, not everything has changed. hook_theme is present... Terminology is largely the same (e.g. Entities, Blocks, Modules, Themes, etc). Your .info files are now .info.yml files, and YAML isn't that complicated to grasp.
Files. Folders. Namespaces. Get used to making lots of those. Even basic modules like a couple I work on that are just simple API abstractions, such as the stripe_api and shopify_api modules, still require many additional files and folders compared to D7.
Example module structure comparing D8 to D7:
Note: This isn't all bad. It comes with good reason once you learn how D8's caching/discovery systems help optimize things and allows core systems to be overwritten and extended with ease. However, it does making structuring your module a bit more complicated. This is one reason why the Drupal Console and using generate:module can be helpful.
The Learning Curve
I have only just begun to learn about all the new features in Drupal 8. There's a lot to be excited about, such as a much more refined templating system using Twig, following accepted OOP standards that are much better than the proprietary "drupalisms" in D7, a better entity system, better block system, and a lot more.
What excites me the most, however, is the ability to easily extend and overload various Drupal systems/services. This will allow developers to more easily bypass core (and contrib module) bugs/issues, without having to "hack core" or keep track of patches that have been applied.
Do you like change? If change is scary for you, Drupal 8 is going to be a hard sell. It's got a high learning curve compared to previous versions, and adoption rate is yet to be seen. Will popular modules convert their D7 versions to D8? Only time will tell.
I think, overall, what the D8 team has been trying to accomplish, is setting a great path forward. Progress has to be made, and the leap to D8 is aggressive, but necessary. Here's hoping that it gains popularity and becomes even more popular with clients, as well as in the PHP development community.