This first-ever Decoupled Summit at DrupalCon Nashville was a huge hit. Not only did it sell out but the room was packed to the gills, literally standing room only. Decoupled Drupal is a hot topic these days. The decoupled summit was an opportunity to look at the state of decoupled Drupal, analyze pros and cons of decoupling, and look at decoupling strategies and examples. There is lots of interest in decoupling, but there are still many hard problems to solve, and it isn’t the right solution for every situation. This summit was an opportunity to assess the state of best practices.
The summit was organized by Lullabot's Sally Young and Mediacurrent's Matt Davis, two of the innovators in this space.
What is “decoupled Drupal”?
First, a quick explanation of what “decoupled Drupal” means, in case you haven’t caught the fever yet. Historically, Drupal is used to deliver all the components of a website, an approach that can be called “traditional,” “monolithic,” or “full stack” Drupal. In this scenario, Drupal provides the mechanism to create and store structured data, includes an editorial interface that allows editors to add and edit content and set configuration, and takes responsibility for creating the front-end markup that users see in their browsers. Drupal does it all.
“Decoupled”, or “headless” Drupal is where a site separates these website functions across multiple web frameworks and environments. That could mean managing data creation and storage in a traditional Drupal installation, but using React and Node.js to create the page markup. It could also mean using a React app as an editorial interface to a traditional Drupal site.
Drupal tools and activity
Drupal core is enabling this activity through a couple of core initiatives:
- The API-first Initiative, which is focusing on providing the APIs needed for alternative front ends and other consumers of Drupal’s content.
Drupal and the Drupal community have numerous tools available to assist in creating a decoupled site:
- Contenta, a pre-configured decoupled Drupal distribution.
- Waterwheel, an emerging ecosystem of software development kits (SDKs) built by the Drupal community.
- JSON API, an API that allows consumers to request exactly the data they need, rather than being limited to pre-configured REST endpoints.
- GraphQL, another API that allows consumers to request only the data they want while combining multiple round-trip requests into one.
There’s lots of activity in headless CMSes. But the competitors are proprietary. Drupal and WordPress are the only end-to-end open source contenders. The others only open source the SDKs.
Highlights of the summit
The summit included several speakers, a business panel, and some demonstrations of decoupled applications. Participants brought up lots of interesting questions and observations. I jotted down several quotes, but it wasn't always possible to give attribution with such an open discussion, so my apologies in advance. Some general reflections from my notes:
- More and more sites are delivering content to multiple consumers, mobile apps, TV, etc. In this situation, the website can become just another consumer of the data.
- If you have large teams, a decoupled site allows you to have a clean separation of duties, so the front and back end can work rapidly in parallel to build the site.
- Content is expensive to create; decoupling is a way to re-use it, not just across platforms, but also from redesign to redesign.
- You could launch a brand new design without making any changes to the back end, assuming you have a well-designed API (meaning an API that doesn't include any assumptions about what the front end looks like). As one participant said, “One day, React won't be cool anymore, we'll need to be ready for the next big thing.”
What are some of the complications?
- It often or always costs more to decouple than to build a traditional site. There’s additional infrastructure, the need to create new solutions for things that traditional Drupal already does, and the fact that we’re still as a community figuring out the best practices.
- If you only need a website, decoupling is a convoluted way to accomplish it. Decoupling makes sense when you are building an API to serve multiple consumers.
- You don’t have to decouple to support other applications. Drupal can be a full-featured website, and also the source of APIs.
- Some tasks are particularly tricky in a decoupled environment, like previewing content before publishing it. Although some participants pointed out that in a truly decoupled environment preview makes no sense anyway. “We have a bias that a node is a page, but that’s not true in a decoupled context. There is no concept of a page on a smartphone. Preview is complicated because of that.”
- Many businesses have page-centric assumptions embedded deep into their content and processes. It might be difficult to shift to a model where editors create content that might be deployed in many different combinations and environments. One participant discussed a client that "used all the decoupled technology at their disposal to build a highly coupled CMS." On the other hand, some clients are pure Drupal top to bottom, but they have a good content model and are effectively already "decoupling" their content from its eventual display.
- Another quote, “Clients trying to unify multiple properties have a special problem; they have to swallow that there will have to be a unified content model in order to decouple. Otherwise, you're building numerous decoupled systems.”
- Once you are decoupled, you may not even know who is consuming the APIs or how they're being used. If you make changes, you may break things outside of your website. You need to be aware of the dependency you created by serving an API.
Speakers and Panelists
The following is a list of speakers and panelists. These are people and companies you could talk to if you have more questions about decoupling:
- Sally Young (Lullabot)
- Matt Davis (Mediacurrent)
- Jeff Eaton (Lullabot)
- Preston So (Acquia)
- Matt Grill (Acquia)
- Daniel Wehner (TES)
- Wes Ruvalcaba (Lullabot)
- Mateu Aguiló Bosch (Lullabot)
- Suzi Arnold (Comcast)
- Jason Oscar (Comcast)
- Jeremy Dickens (Weather.com)
- Nichole Davison (Edutopia)
- Baddy Breidert (1xinternet)
- Christoph Breidert (1xinternet)
- Patrick Coffey (Four Kitchens)
- Greg Amaroso (Softvision)
- Eric Hestenes(Edutopia)
- David Hwang (DocuSign)
- Shellie Hutchens (Mediacurrent)
- Karen Stevenson (Lullabot)
It was a worthwhile summit, I learned a lot, and I imagine others did as well. Several people mentioned that Decoupled Drupal Days will be taking place August 17-19, 2018 in New York City (there is a link to last year's event). The organizers say it will be “brutally honest, not a cheerleading session.” And they’re also looking for sponsors. I’d highly recommend marking those days on your calendar if you’re interested in this topic!