Main menu

Web services in Drupal 8

In my DrupalCon keynote in Chicago, I talked about the key initiatives that I believe we should focus on for Drupal 8 core. One of those key initiatives that I talked about was web services.

The future is a world where content management systems need to output data to many more devices and integrate with more and more systems and services. Today, Drupal is optimized for outputting HTML and core ships with an old XML-RPC backend. If we want Drupal to be the go-to platform in a world with many different devices and integrated services, we need to fundamentally change that.

The goal of Drupal 8's Web Service Initiative is to make Drupal equally good at outputting data as XML, JSON and other non-HTML formats, to expose Drupal's functionality through a RESTful interface, but also for Drupal to better support different page layouts when delivering HTML pages to different devices.

HTML5 is obviously a big part of such a future as well, however, for that I'll setup a dedicated initiative. I believe both can be worked on (mostly) in parallel and by different people. I'm still talking to different people about the HTML5 initiative. Both initiatives combined should get us in a great position with Drupal 8.

Larry Garfield

I've decided to make Larry Garfield (aka Crell) the Initiative Owner for the Web Services Initiative in Drupal 8. As the Initiative Owner Larry will act as the project manager and/or technical lead. In this role, Larry and myself will work closely together on defining the architecture and approach. This means I don't need to be involved in every small conversation myself, but that I still need to sign off on the approach and implementation.

Larry was the obvious choice for two reasons. First, he is a great architect able to tackle complex problems, as demonstrated by his work on Drupal 7's database abstraction layer. Second, Larry has already put in a lot of thought and effort into this.

Comments

Easiest to always build based on an API, and separate output layer depending on consumption. HTML5, JSON, REST*, these are all good things.

However, HTML5 and JSON are merely outputs from internal data assembly calls that should be returned as (cough, cough) arrays, which the necessary output layer draws up into XML, JSON, HTML5-compatible code, etc.

Originally when I tried using Drupal, I come from a world where the admin UI doesn't define how things look or what tags get injected on output. That to me is one of Drupal's weak spots, but I am a power user. For people who don't want a dedicated theme/template layer, you can do a lot inside of the admin UI without having to code custom stuff. I still would recommend leveraging Drupal's awesome hook system and other things, but abstract all the markup and other things outside of core. Make those pieces somehow an optional component. Let power users get back PHP arrays and use PHP in a template layer with the exposed data and do things on their own. $.02

* REST isn't anything new in any means, but so much more lightweight and better than SOAP :)

Couldn't ask for a better person to lead this. And the goal is excellent, "Drupal needs to evolve, and quickly, from a first-class web CMS into a first-class REST server that includes a first-class web CMS". Well said, Larry.