Drupal 8: CMI, Plugins, OO - Meet Yves Chedemois - Part 2




Acquia Inc. podcasts show

Summary: Part 2 - In this podcast, Yves Chedemois, aka yched, and I cover some changes to Drupal 8 core – CMI, the plugin system, and how they (and object oriented code) benefit developers. Yched is an important contributor to Drupal: he has been a maintainer of what was called CCK in Drupal 4.7 through Drupal 6.x, then became the core Field API in Drupal 7. In part one of our conversation, we talk about Yves's time working on Drupal, being part of the Drupal community (and the "Hey!" moment), Drupal development sustainability, and how the Drupal community stepped up to help him when he needed it recently. We spoke on a very pleasant September afternoon outdoors at DrupalCon Prague. You might hear the odd skateboard or two in the background of our conversation. People should be excited about CMI in Drupal 8 "The first notable point: CMI is going to change the life of every single Drupal shop out there. It's just huge. This changes how you work with a Drupal site; developing it or maintaining it while it is live." CMI is the core initiative that moved configuration out of the database on Drupal 8, separating it from content, and into .yml files. This makes it possible to do content staging; to version control, import, and export configuration; and opens the doors to new ways of working and building Drupal products and distributions. "It trickles down to many changes, API-wise. It unifies a lot of things. Previously, all systems in core and contrib. that had to store configuration, had to invent their own storage and take care of their own database storage; come up with the right schema and come up with the right API functions to load and save and invent the code flows around them. Now, it's mostly taken care of for you. You don't have to bother with it anymore. It's nice for module developers, because you just have to follow the practices. You have to learn them once ... there's a learning curve, but you're guided along the way. What you learn on one subsystem mostly applies to all the other subsystems throughout all of core and contrib. This is huge." While there is individual business logic and APIs defining views, image styles, rule triggers, etc. – since these are radically different from one another, "but how they work: How you load one, how you save one, how you modify one," and how you react to and interact with with them, "is going to be the exact same flows. Learn once and apply to everywhere. People should also be excited about the plugin system in D8 The same pattern applies to yched's "2nd most important and interesting" innovation in Drupal 8: the plugin system. "It's the same pattern of unifying practices and APIs on stuff that many subsystems had to reinvent in Drupal 7. In core, you had image styles and image effects; image effects are typically plugins. On the Field API side, we had widgets, formatters, and field types. Those are 'plugin-like things' ... We had a series of things that basically represent the same pluggable feature, but there was no common API. So each of those subsystems had to invent them on their own." In Drupal 8, developers can learn a unified set of patterns and practices and apply them across most of what they do in code, most anywhere in Drupal. "In getting those APIs right, it's been about not only getting it right for the use cases we have in core, but also how we can make it easy to learn, easy to leverage in your own contrib. or custom module ... How to define a new plugin type ... How to interact with it. I think this will be really important in D8. In D8 core, we have 20 different plugin types and this will only explode in contrib. The plugin API will be a very, very strong unifying pattern in how you structure your Drupal code." How do I get into Drupal 8 now? "All of these unified APIs we've been talking about in CMI and the underlying concept of config. entities relate to the entity system as we know it in Drupal...