Drupal and Us

Presented by Larry Garfield (@Crell)

A Dark Driesnote
Facebook Google Amazon Apple

You should be upfront about what you're doing.

Where does that leave the small player?

The logo of the Open Source Initiative The Logo of the GNU Project
Druplicon
The right to innovate is not a privilege to be restricted to a tiny minority

Free Software Magazine, 2005

(A Drupal site, by the way...)

Who uses Drupal?

Whitehouse.gov uses Drupal Occupy Wall St used Drupal

We use Drupal

Needs to be approachable

Unusable tools are useless

Drupal 8

Big sites?

Big shops?

Big companies?

The Point of Open Source is to give everyone big and small access to the same tools on a level playing field.

Big players Small players

Drupal 8 is a new generation
PHP Platform

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 editing
  • Content assembly
  • Content delivery

For everyone, out of the box

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

  • Real configuration API
  • Config import/export built in
  • Modules can include default config
  • Database is now leaner, more contented

Translation in Drupal 7

  • admin_language
  • fallback_language_negotation
  • l10n_install
  • l10n_update
  • entity_translation
  • title
  • variable (suite)
  • i18n (suite)
  • i18nviews
  • webform_localization (et al)
  • stringoverrides
  • transliteration

And it's still incomplete!

Facepalm

Translation in Drupal 8

Deeper, more robust system... in Core

Everyone can build
multi-lingual sites from day 1

For content editors

Rich editing experience

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

No More Overlay

The Drupal 8 Back to Site button

Ultra
Accessibility

WAI-ARIA all the things!

Keyboard control

And…

All built in and automatic

…And a new help system

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

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>

{% set classes = [
    'node--type-' ~ node.bundle|clean_class,
    node.isPromoted() ? 'node--promoted',
  ] %}
<article{{ attributes.addClass(classes) }}>
  {{ title_prefix }}
  {% if not page %}
    <h2{{ title_attributes }}>
      <a href="{{ url }}" rel="bookmark">{{ label }}</a>
    </h2>
  {% endif %}
  {{ title_suffix }}

  {% if display_submitted %}
    <div{{ author_attributes.addClass('node__submitted') }}>
      {% trans %}Submitted by {{ author_name|passthrough }} on {{ date|passthrough }}{% endtrans %}
      {{ metadata }}
    </div>
  {% endif %}

  <div{{ content_attributes.addClass('node__content') }}>
    {{ content|without('links') }}
  </div>
  {% if content.links %}
    <div class="node__links">
      {{ content.links }}
    </div>
  {% endif %}
</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.

Under the hood

Let's look under the hood
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 Components (HttpFoundation, HttpKernel, DependencyInjection, EventDispatcher, Routing, Serializer, Validator, Yaml)
  • Symfony CMF
  • Zend Feed
  • Doctrine Annotations
  • Guzzle
  • EasyRDF
  • Twig

Plugins

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

Pluginified systems in Drupal 8

  • Actions
  • Blocks
  • Text formats
  • Fields
  • Field Widgets
  • Field Formatters
  • Image effects
  • Conditions
  • Mail backends
  • Archiver
  • Image toolkits
  • Aggregator (Fetcher, Parser, Processor)
  • Editor extensions
  • EntityReference selections
  • Migration
  • REST Resources
  • Search backends
  • Tours
  • All of Views…

Entities/Nodes

Unified API... finally!

Unit test ALL THE THINGS!

PHPUnit

PHPUnit

RESTful pipeline

…HTML is just REST

Not just mobile!

Think server-to-server

Think client-side customization

We've gotten off the island

Drupal Island
Is this scary??
No, it's quite nice.

Drupal Console

  • Build on Symfony Console
  • Code generation
  • System introspection
  • Symfony Profiler

The Console Team

  • Jesus Manuel Olivas
    Jesus Manuel Olivas
  • Jose Eduardo García Torres
    Jose Eduardo García Torres
  • David Flores
    David Flores
  • Omar Aguirre
    Omar Aguirre

Close the deal

Sprints Thursday

Download and test… everyone

This is what we have done…

Who is we?

We are…

  • Jose Eduardo García Torres
    Jose Eduardo García Torres
  • Marco Villegas
    Marco Villegas
  • James Wilson
    James Wilson
  • David Valdez
    David Valdez
  • Franz Glauber Vanderlinde
    Franz Glauber Vanderlinde
  • Capi Etheriel
    Capi Etheriel

We are…

DrupalCon Bogota

We are…

DrupalPichu 2014

We are…

DrupalCamp Costa Rica 2013

We are…

DrupalCamp Mumbai 2015

We are…

Drupal South Wellington 2014

We are…

DrupalCon Amsterdam

We are…

DrupalCon Asutin

We are…

Speakers from Sunshine PHP 2015

We are…

PHP is the web

Code Contributors to Drupal 8

Mosaic of D8 contributors

2636 and counting

We are those who work together

Drupal is a platform for the independent

For everyone

By all of us

Drupal 8 is going to kick-ass

Drupal 8 will kick ass

Together

Larry Garfield

Palantir.net

Let's make something good together

Keep tabs on our work at @Palantir