Presenting Drupal 8

Presented by Larry Garfield

@Crell Pays me!
  • Senior Architect,
  • Drupal 8 Web Services Lead
  • Drupal Representative, PHP-FIG
  • Advisor, Drupal Association
  • General busybody

Presenting... the future!

Drupal 8

What's wrong with Drupal 7?

Drupal 7

2% of the Web runs Drupal

2% of the web runs Drupal
Drupal's community is enormous
Drupal's community is enormous

20,000+ new Drupal 7 sites every month

Drupal 7 usage stats

Contributors to Drupal 7

Name cloud of D7 contributors


Time to kick some ass
in Drupal 8

Drupal 8 will kick ass

Just one teeny little problem...

Dries in College

Drupal is an 13 year old, PHP 4-based extensible Slashdot clone originally written by a Belgian college kid.

Drupal was build for a desktop world
The future is mobile
The future of Drupal is mobile
Kitten will fix it

The mission...

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.

Drupal 8 is a new generation
PHP framework/CMS

Drupal 7

PHP 4 architecture


Drupal 8

PHP 5.4 architecture


Drupal 7

Everything is a Page

Drupal 8

Everything is an response

Drupal 7

All home grown

Drupal 8

Embrace other communities and tools

Drupal 7

A good start for a CMS

Drupal 8

Fully capable from day 1

For the site owner

Drupal 8 is finally useful

Drupal 7 gave us Fields API...

... Drupal 8 gives us Fields to use

  • Entity Reference
  • Date
  • Link
  • Email
  • Telephone

Views in core

Views admin in Drupal 8


Content admin is now a view

Why Views matters

Drupal 7 usage stats

Drupal 8

  • Content modeling
  • Content assembly
  • Content curation

If you're a content strategist,
Drupal 8 is the system for you.

Configuration Management

Because database config is for lusers

Features: Fail

Poor deployment tool

...Because it's not a deployment tool

Drupal 7 has no common configuration system!

Configuration system

  • Config on-disk
  • Config staging/import built in
  • Features/ctools exportables no longer exist

All right there, right from the new multilingual installer...

The new Drupal 8 installer

For the end user

zOMG WYSIWYG in core!!1!




WAI-ARIA all the things!

Keyboard control


Those responsible for the previous
videos have been sacked.

Bye bye Overlay...

The Drupal 8 Back to Site button
But how do I use all of this new fangledness?

Tour module to the rescue

(aka "Help module wishes it were this cool")

For themers

Out with the old...

  • Good bye, IE 6
  • Good bye, IE 7
  • Good bye, IE 8

(There's an IE8 module if you really need)

In with the new

  • HTML5
  • CSS3

Responsive Design

HTML5 Forms

Lines of Javascript by default: 0

Oh wow, such libraries!

  • jQuery
  • jQuery UI
Backbone JS

Underscore JS


Twig the Templating engine


<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>

  <?php print $user_picture; ?>

  <?php print render($title_prefix); ?>
  <?php if (!$page): ?>
    <h2<?php print $title_attributes; ?>><a href="<?php print $node_url; ?>"><?php print $title; ?></a></h2>
  <?php endif; ?>
  <?php print render($title_suffix); ?>

  <?php if ($display_submitted): ?>
    <div class="submitted">
      <?php print $submitted; ?>
  <?php endif; ?>

  <div class="content"<?php print $content_attributes; ?>>
      print render($content);

  <?php print render($content['links']); ?>

  <?php print render($content['comments']); ?>



<article id="node-{{ }}" class="{{ attributes.class }} clearfix"{{ attributes }}>

  {{ title_prefix }}
  {% if not page %}
    <h2{{ title_attributes }}>
      <a href="{{ node_url }}" rel="bookmark">{{ label }}
  {% endif %}
  {{ title_suffix }}

  {% if display_submitted %}
      {{ user_picture }}
      <p class="submitted">{{ submitted }}

</footer> {% endif %} <div{{ content_attributes }}> {# We hide links now so that we can render them later. #} {% hide(content.links) %} {{ content }} </div> {{ content.links }} </article>

And one more thing...

Now with 25% fewer divs*

* Compared to the previous leading Drupal.
Actual divs may vary by custom theme.
Offer void on IE 6.

For developers

OOP: there it is

Drupal now requires PHP 5.4

PHP 5.4 architecture

  • Interface-driven development
  • Loose coupling
  • "Hack core without hacking core"
  • Fewer Drupalisms

Not Invented Here

Proudly Invented Elsewhere

Proudly Invented Elsewhere is tasty.

Proudly Invented Elsewhere

  • Symfony2 (HttpFoundation, HttpKernel, DependencyInjection, EventDispatcher, Routing, Serializer, Validator, Yaml)
  • Symfony CMF
  • Zend Feed
  • Doctrine Annotations
  • Guzzle
  • EasyRDF
  • Assetic
  • Twig


  • ctools plugins, but good
  • Learn once, apply everywhere —Lee Rowlands
  • Interface-driven, self-documenting


Unified API... finally!




RESTful pipeline

... HTML is just REST

HAL API for entities

For existing users


  • Upgrading the DB from 6->7 was hard
  • Upgrading the DB to Drupal 8 would be harder
  • So... don't



Migration system in core

Migrate directly from Drupal 6 (Drupal 7 soon)

Migrate from any system

Want Drupal 8 yet?

Sorry, have to wait...

Status of the issue queue

Contributors to Drupal 8

Mosaic of D8 contributors

1903 and counting

Local heroes

  • Lee Rowlands
    Lee Rowlands
  • Justin Randall
    Justin Randall
  • Kim Pepper
    Kim Pepper
  • David Meister
    David Meister
  • Nick Schuch
    Nick Schuch
  • Simon Roberts
    Simon Roberts
  • Ben Dougherty
    Ben Dougherty
  • Adam Malone
    Adam Malone

Wait, where are the Kiwis?

Kiwi bird

WANTED: Dead or Alive

  • Testers
  • Documentation
  • <div> Elimination Squad
  • Performance testing/profiling
  • PHP/Javascript developers
  • Accessibility gurus/users
  • Sysadmins/devops for testbot
  • Sprint hosts/sponsors

Time to kick some ass
in Drupal 8

Drupal 8 will kick ass


Larry Garfield

Senior Architect,

Drupal core developer

PHP-FIG representative

Loveable pedant

Yell at me on Twitter: @Crell

Stalk me professionally at @Palantir