Drupal, the Future, and You

Presented by Larry Garfield and Jeff Eaton

@Crell

Palantir.net Pays me!
  • Senior Architect, Palantir.net
  • Drupal 8 Web Services Lead
  • Drupal Representative, PHP-FIG
  • Advisor, Drupal Association
  • Loveable pedant

@eaton

Lullabot Pays me!
  • Digital Strategist, Lullabot
  • Co-author, Using Drupal 1st edition
  • Host, Insert Content Here
  • Drupal.org Content Working Group
  • Content strategy rabble-rouser

We're from the future...

We're on a mission from Dries

Drupal 8

The world as we know it

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

954

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.

Hello, Drupal 8.

Drupal 8 will kick ass

Drupal 8 is a new generation
PHP framework/CMS

Drupal 7

PHP 4 architecture

PHP 4

Drupal 8

PHP 5.4 architecture

PHP 4

Drupal 7

Everything is a Page

Drupal 8

Everything is a response

Drupal 7

All home grown

Drupal 8

Embrace other communities and tools

Drupal 7

A good start for a CMS

Drupal 8

Build real-world sites right away

For site builders

Build real sites with core

Drupal 7 gave us Field API...

... Drupal 8 expands the toolbox

  • Entity Reference
  • Date
  • Link
  • Email
  • Telephone

Views in core

Views admin in Drupal 8

/admin/content

Content admin is now a view

Drupal 8

  • Content modeling
  • Content assembly
  • Content delivery

If you're a content strategist,
Drupal 8 speaks your language.

Configuration management

Mixing content and config == Pain

Features: Fail

Poor deployment tool

...Because it's not a deployment tool

Drupal 7 has no common configuration system!

The new Config API

  • Settings, site structure on disk
  • Config import/export built in
  • Modules can include default config
  • Database is now leaner, more contented

Cleaner, themable installer

The new Drupal 8 installer

Beefier localization system

For content editors

WYSI-WIN

  • CKEditor built in
  • Automatic configuration, sensible defaults
  • Content editing forms streamlined

In-Place Editing

No More Overlay

The Drupal 8 Back to Site button

Ultra
Accessibility

WAI-ARIA all the things!

Keyboard control

Audio. No, for serious.

…And a new help system

Smoother, better,
more delicious

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

Twig the Templating engine

node.tpl.php


<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; ?>
    </div>
  <?php endif; ?>

  <div class="content"<?php print $content_attributes; ?>>
    <?php
      hide($content['comments']);
      hide($content['links']);
      print render($content);
    ?>
  </div>

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

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

</div>

node.html.twig


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

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

  {% if display_submitted %}
    <footer>
      {{ 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
Drufony

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

Plugins

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

Entities/Nodes

Unified API... finally!

Unit test ALL THE THINGS!

PHPUnit

PHPUnit

RESTful pipeline

... HTML is just REST

HAL API for entities

Planning to upgrade?

Understand Your Site

  • Content types and relationships
  • Collections and assemblies
  • Design elements
  • Editorial roles, workflow
  • Figure out the missing pieces in D8

Oh, and... Content.

  • In-place upgrades for content are hard
  • Contrib fields make it even trickier
  • Most large sites rebuild and migrate

Migrate!

Migration

Content migration system in core

Migrate directly from Drupal 6 (Drupal 7 soon)

Migrate from any CMS, DB, etc…

Attend Dave's Session:

Future-Proof Your D7 Site

Want Drupal 8 yet?

Sorry, have to wait...

Status of the issue queue

Contributors to Drupal 8

Mosaic of D8 contributors

1984 and counting

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

Together

Larry Garfield

Sr. Architect, Palantir.net

Making the Web a Better Place

Keep tabs on our work at @Palantir

Want to hear about what we're doing?

Jeff Eaton

Digital Strategist, Lullabot

Strategy, Design, Development

Read stuff at Lullabot.com

Listen to Lullabot podcasts

See us debate on Twitter: @Crell & @eaton