Presented by Larry Garfield (@Crell)
Personalization
Integrated and Decoupled
Predictive
Data-driven
Push-based
They're not up-front about what they're doing.
Where does that leave the small player?
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...)
We use Drupal
Unusable tools are useless
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.
Drupal 8 is a new generation
PHP Platform
PHP 4 architecture
PHP 5.4 architecture
Everything is a Page
Everything is a response
All home grown
Embrace other communities and tools
A good start for a CMS
Build real-world sites right away
Build real sites with core
Drupal 7 gave us Field API...
... Drupal 8 expands the toolbox
For everyone, out of the box
Mixing content and config == Pain
Poor deployment tool
...Because it's not a deployment tool
Drupal 7 has no common configuration system!
And it's still incomplete!
Deeper, more robust system... in Core
Everyone can build
multi-lingual sites from day 1
WAI-ARIA all the things!
Keyboard control
And…
All built in and automatic
(There's an IE8 module if you really need)
Lines of Javascript by default: 0
<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.
Learn once, apply everywhere—Lee Rowlands
Unified API... finally!
RESTful pipeline
…HTML is just REST
Not just mobile!
Think server-to-server
Think client-side customization
Sprints Sunday
Download and test… everyone
Code Contributors to Drupal 8
2715 and counting
Drupal is a platform for the independent
For everyone
By all of us
Together