SlideShare a Scribd company logo
1 of 56
The Top 8 Improvements
Coming To Drupal 8
Angie "webchick" Byron
Nova Scotia Drupal Meetup
July 28, 2014
About me
What are we doing here
tonight?
• Go through top 8 changes for Drupal 8, in order of
meekness. ;)
• Walk through some of the bigger API changes in D8
for module developers
• Talk about when D8 is coming and how you can
help
1. Improved Authoring
Experience
Drupal 7
Drupal 8
Drupal 7
Drupal 8
2. Mobile First
Drupal 7
Drupal 8
Drupal 8
3. Site Builder
Improvements
Views in Core!
Better Blocks
New Field Types
4. Multilingual++
Drupal 8
Translatable Everything!
• Content
• Blocks
• Menus
• User Profiles
• Taxonomy
• Views
• Image styles
• Text formats
• Comments
• Feeds
• …and more!
• No contrib modules
needed!
5. Configuration
Management
One core system to solve
this mess
variable_set()/variable_get()
ctools_export_object()/ctool
s_export_load_object()
db_select()/db_update()/d
b_delete()
$conf[...];
hook_update_N()
drush fu
6. Twig & HTML5
PHPTemplate is now
Twig7.x: page.tpl.php 8.x: page.html.twig
<div id="page-wrapper">
<div id="page">
<div id="header">
<div class="section clearfix">
<?php if ($logo): ?>
<a href="<?php print $front_page; ?>"
title="<?php print t('Home'); ?>"
rel="home" id="logo">
<img src="<?php print $logo; ?>"
alt="<?php print t('Home'); ?>"
/>
</a>
<?php endif; ?>
<div class="layout-container">
<header role="banner">
{% if logo %}
<a href="{{ front_page }}"
title="{{ 'Home'|t }}"
rel="home">
<img src="{{ logo }}"
alt="{{ 'Home'|t }}"/>
</a>
{% endif %}
• Friendlier syntax for designers
• Variables auto-escaped for better security
• Semantic, HTML5 markup
http://twig.sensiolabs.org
HTML5 Forms
No more support for
IE 6, 7, & 8
7. Web Services
8. Modern, OO Code
Warning:
Things are about to
get... geeky.
"Getting off the Island"
Modern PHP Best Practices
• PHP 5.4+
• Classes/Interfaces
• Namespaces
• Traits
• Dependency Injection
• Most PSR-* standards
Powered by Symfony2
Tutorial: http://fabien.potencier.org/article/50/create-your-own-
framework-on-top-of-the-symfony2-components-part-1
…and dozens of other
external libraries
…and dozens of other
libraries
A peek under the hood
YAML, YAML
everywhere
7.x: example.info 8.x: example.info.yml
name = Example
description = "Example module"
core = 7.x
files[] = example.test
config = admin/config/example
dependencies[] = node
name: Example
type: module
description: "Example module"
core: 8.x
config: admin.example
dependencies:
- node
• New required "type" property
• No more files[] (we'll get to that later)
• Paths now have machine names
(we'll get to that later, too)
Drupalism: Kinda-
Sorta-INI-Like
"Proudly Invented
Elsewhere": YAML
Classes, classes everywhere
sites/all/modules
example
▼
▼
example.test
7.x
modules
example
▼
▼
8.x
src▼
ExampleForm.php
ExampleInterface.php
ExampleController.php
…
Pages, forms, blocks, etc. are now all object-oriented.
Defining a page: 7.x
function example_menu() {
$items['hello'] = array(
'title' => 'Hello world',
'page callback' => '_example_page',
'access callback' => 'user_access',
'access arguments' => 'access content',
);
return $items;
}
function _example_page() {
return t('Hello world.');
}
example.module
Drupalism:
"ArrayPIs" ;)
Defining a page: 8.x
example.hello:
path: '/hello'
defaults:
_content: 'DrupalexampleExampleController::hello'
requirements:
_permission: 'access content'
example.routing.yml
example.links.menu.yml
example.hello:
title: 'Hello world'
route_name: example.hello
"Proudly Invented
Elsewhere":
- SF2 Routing
Component
- MVC pattern
Defining a page: 8.x
<?php
namespace Drupalexample;
use DrupalCoreControllerControllerBase;
/**
* Returns responses for Example module routes.
*/
class ExampleController extends ControllerBase {
public function hello() {
return array('#markup' => $this->t('Hello world.'));
}
}
src/ExampleController.php
"Proudly Invented
Elsewhere":
- PSR-4 Class
Autoloader
- OO code
Defining a block: 7.x
example.module
<?php
function example_block_info() {
$blocks['example'] = array(
'info' => t('Example block'),
);
return $blocks;
}
function example_block_view($delta = '') {
$block = array();
switch ($delta) {
case 'example':
$block['subject'] = t('Example block');
$block['content'] = array(
'hello' => array(
'#markup' => t('Hello world'),
),
);
break;
}
return $block;
Drupalism: "Mystery
Meat" APIs based on
naming conventions
Defining a block: 8.x
<?php
namespace DrupalexamplePluginBlock;
use DrupalblockBlockBase;
/**
* Provides the Example block.
*
* @Block(
* id = "example",
* admin_label = @Translation("Example block"),
* category = @Translation("Example")
* )
*/
class ExampleBlock extends BlockBase {
public function build() {
return array('hello' => array(
'#markup' => $this->t('Hello world.')
));
}
}
src/Plugin/Block/ExampleBlock.php
"Proudly Invented
Elsewhere":
- Annotations
- APIs defined by
Interfaces
Choose Your Own Data
Adventure
• While you can do it, it's now considered unusual to store data
directly in the database; choose one of the following:
• Content Entities: Use for 1000s+ of records; fieldable.
Ex: Nodes, Users, Comments, Feeds, Terms
• Config Entities: Use for 10s of records; create in UI, deploy.
Ex: Views, Text Formats, Image Styles, Vocabularies
• Config API: Use for 1s of records; things you want deployed.
Ex: most admin/config/foo forms
• Settings API: Use for 1s of records; things specific to an
environment; not deployed. Ex: timestamps, hashes, keys
Read more about it!
Plaster these URLs to your face:
https://api.drupal.org/api/drupal/8
https://www.drupal.org/documentation/developer/api
Every API change in Drupal 8
Plaster this URL to your cat's face:
https://www.drupal.org/list-changes
Rocket fuel to get started
Plaster this URL to your dog's face:
https://www.drupal.org/project/drupalmoduleupgrader
8 sounds great!
So where's it at, anyway?
Current Release Status
• There are ~100 “critical” issues
left to solve that block release.
• Of these, ~5 are “beta blockers”
that block the beta release.
• “Beta” marks the time at which
module developers can start re-
writing their code on top of
Drupal 8.
• Without lots of modules being
ready, Drupal 8 will not have a
successful launch, so we are
trying to get beta right.
alpha
releases
bet
a RC1
we are here!
x
“WHEN IT’S
READY”
(~Q2 2015)
https://groups.drupal.org/core/updates
When should I start using it?
• Module/Theme developer?
• Right now!
• Provide early API feedback while things can still be changed.
• Early Adopter?
• Start building test sites during beta/RC
• Be prepared to "BYOBF" (bring your own bug fixes)
• Late Adopter?
• 6+ months after Drupal 8.0.0
• Wait for enough contrib modules to be ported
What about upgrades?
• No more upgrade path; now, migration path.
• Build out your Drupal 8 site as a new site, then
migrate content, users, etc. over.
• Drupal 6 => Drupal 8 migrations already in!
• Drupal 7 => Drupal 8 migrations in progress.
https://www.drupal.org/upgrade/migrate
What if I'm stuck on D7 for
the foreseeable future?
Drupal 8 Core Feature Drupal 7 Contrib Equivalent
WYSIWYG CKEditor: https://drupal.org/project/ckeditor
In-Place Editing Quick Edit: https://drupal.org/project/quickedit
Responsive Toolbar
“Mobile Friendly Navigation Toolbar"
https://drupal.org/project/navbar
Responsive Front-End
Theme
Omega, Zen, Adaptive, etc. base themes
Responsive Admin
Theme
Ember: https://drupal.org/project/ember
Responsive Images Picture: https://drupal.org/project/picture
Responsive Tables Responsive Tables: https://drupal.org/project/responsive_tables
Simplified Overlay Escape Admin: https://drupal.org/project/escape_admin
Multilingual
Internationalization: https://www.drupal.org/project/i18n
Entity Translation: https://www.drupal.org/project/entity_translation
Better Blocks Bean: https://www.drupal.org/project/bean
How can I help?
• Start porting your modules/themes!
• Give "developer experience" feedback while we can still fix
things
• Help us find/fix holes in documentation
• Build a practice site or two
• Test out the D6 => D8 migration path!
• Find/File bug reports (with patches if you can!)
• Help kill critical core issues! :D
Want the full scoop?
https://www.drupal.org/drupal-8.0
https://www.acquia.com/tags/ultimate-guide-drupal-8
Thanks! :)
Questions?

More Related Content

What's hot

One drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp CaceresOne drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp Caceres
hernanibf
 
Drupal 8 - What’s cooking?
Drupal 8 - What’s cooking?Drupal 8 - What’s cooking?
Drupal 8 - What’s cooking?
Alkuvoima
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp London
hernanibf
 
Drupal content editor flexibility
Drupal content editor flexibilityDrupal content editor flexibility
Drupal content editor flexibility
hernanibf
 
Oxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websiteOxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your website
hernanibf
 
Introduction to Drupal Basics
Introduction to Drupal BasicsIntroduction to Drupal Basics
Introduction to Drupal Basics
Juha Niemi
 
Drupal architectures for flexible content - Drupalcon Barcelona
Drupal architectures for flexible content - Drupalcon BarcelonaDrupal architectures for flexible content - Drupalcon Barcelona
Drupal architectures for flexible content - Drupalcon Barcelona
hernanibf
 

What's hot (20)

Drupal developers
Drupal developersDrupal developers
Drupal developers
 
Taking your module from Drupal 6 to Drupal 7
Taking your module from Drupal 6 to Drupal 7Taking your module from Drupal 6 to Drupal 7
Taking your module from Drupal 6 to Drupal 7
 
History of Drupal: From Drop 1.0 to Drupal 8
History of Drupal: From Drop 1.0 to Drupal 8History of Drupal: From Drop 1.0 to Drupal 8
History of Drupal: From Drop 1.0 to Drupal 8
 
Deployer - Deployment tool for PHP
Deployer - Deployment tool for PHPDeployer - Deployment tool for PHP
Deployer - Deployment tool for PHP
 
Migrate to Drupal 8
Migrate to Drupal 8Migrate to Drupal 8
Migrate to Drupal 8
 
One drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp CaceresOne drupal to rule them all - Drupalcamp Caceres
One drupal to rule them all - Drupalcamp Caceres
 
Introduction to Drupal
Introduction to DrupalIntroduction to Drupal
Introduction to Drupal
 
Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2Blisstering drupal module development ppt v1.2
Blisstering drupal module development ppt v1.2
 
Drupal 8 - What’s cooking?
Drupal 8 - What’s cooking?Drupal 8 - What’s cooking?
Drupal 8 - What’s cooking?
 
Intro to drupal
Intro to drupalIntro to drupal
Intro to drupal
 
One Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp LondonOne Drupal to rule them all - Drupalcamp London
One Drupal to rule them all - Drupalcamp London
 
Drupal content editor flexibility
Drupal content editor flexibilityDrupal content editor flexibility
Drupal content editor flexibility
 
Oxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your websiteOxford DrupalCamp 2012 - The things we found in your website
Oxford DrupalCamp 2012 - The things we found in your website
 
Introduction to Drupal Basics
Introduction to Drupal BasicsIntroduction to Drupal Basics
Introduction to Drupal Basics
 
Drupal - Introduction to Building Library Web Site Using Drupal
Drupal - Introduction to Building Library Web Site Using DrupalDrupal - Introduction to Building Library Web Site Using Drupal
Drupal - Introduction to Building Library Web Site Using Drupal
 
Upgrading to Drupal 8: Benefits and Gotchas
Upgrading to Drupal 8: Benefits and GotchasUpgrading to Drupal 8: Benefits and Gotchas
Upgrading to Drupal 8: Benefits and Gotchas
 
What is Drupal? An Introduction to Drupal 8
What is Drupal? An Introduction to Drupal 8What is Drupal? An Introduction to Drupal 8
What is Drupal? An Introduction to Drupal 8
 
Drupal architectures for flexible content - Drupalcon Barcelona
Drupal architectures for flexible content - Drupalcon BarcelonaDrupal architectures for flexible content - Drupalcon Barcelona
Drupal architectures for flexible content - Drupalcon Barcelona
 
Drupal in-depth
Drupal in-depthDrupal in-depth
Drupal in-depth
 
Drupal Best Practices
Drupal Best PracticesDrupal Best Practices
Drupal Best Practices
 

Similar to Top 8 Improvements in Drupal 8

Introduction To Drupal
Introduction To DrupalIntroduction To Drupal
Introduction To Drupal
Lauren Roth
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
Angela Byron
 
Drupal module development
Drupal module developmentDrupal module development
Drupal module development
Rachit Gupta
 
Spark: Authoring Experience++ in Drupal 7, 8, and Beyond
Spark: Authoring Experience++ in Drupal 7, 8, and BeyondSpark: Authoring Experience++ in Drupal 7, 8, and Beyond
Spark: Authoring Experience++ in Drupal 7, 8, and Beyond
Angela Byron
 

Similar to Top 8 Improvements in Drupal 8 (20)

October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
October 2016 - USG Rock Eagle - Everything You Need to Know to Plan Your Drup...
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
 
Introduction To Drupal
Introduction To DrupalIntroduction To Drupal
Introduction To Drupal
 
Drupal 8 - Build Week Update
Drupal 8 - Build Week UpdateDrupal 8 - Build Week Update
Drupal 8 - Build Week Update
 
Plain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticalsPlain english guide to drupal 8 criticals
Plain english guide to drupal 8 criticals
 
Drupal 8 Initiatives
Drupal 8 InitiativesDrupal 8 Initiatives
Drupal 8 Initiatives
 
Drupal: an Overview
Drupal: an OverviewDrupal: an Overview
Drupal: an Overview
 
Drupal Skils Lab 302Labs
Drupal Skils Lab 302Labs Drupal Skils Lab 302Labs
Drupal Skils Lab 302Labs
 
Drupal module development
Drupal module developmentDrupal module development
Drupal module development
 
Your first d8 module
Your first d8 moduleYour first d8 module
Your first d8 module
 
Drupal 8 as a Drop-In Content Engine - SymfonyLive Berlin 2015
Drupal 8 as a Drop-In Content Engine - SymfonyLive Berlin 2015Drupal 8 as a Drop-In Content Engine - SymfonyLive Berlin 2015
Drupal 8 as a Drop-In Content Engine - SymfonyLive Berlin 2015
 
Taking your site from Drupal 6 to Drupal 7
Taking your site from Drupal 6 to Drupal 7Taking your site from Drupal 6 to Drupal 7
Taking your site from Drupal 6 to Drupal 7
 
Drupal by fire
Drupal by fireDrupal by fire
Drupal by fire
 
Drupal Now! - Introduction to Drupal
Drupal Now! - Introduction to DrupalDrupal Now! - Introduction to Drupal
Drupal Now! - Introduction to Drupal
 
Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011
 
Drupal 8 introduction
Drupal 8 introductionDrupal 8 introduction
Drupal 8 introduction
 
Ready. Set. Drupal! An Intro to Drupal 8, Part 2
Ready. Set. Drupal! An Intro to Drupal 8, Part 2Ready. Set. Drupal! An Intro to Drupal 8, Part 2
Ready. Set. Drupal! An Intro to Drupal 8, Part 2
 
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013
 
Fronteers - Drupal 7 ux
Fronteers   - Drupal 7 uxFronteers   - Drupal 7 ux
Fronteers - Drupal 7 ux
 
Spark: Authoring Experience++ in Drupal 7, 8, and Beyond
Spark: Authoring Experience++ in Drupal 7, 8, and BeyondSpark: Authoring Experience++ in Drupal 7, 8, and Beyond
Spark: Authoring Experience++ in Drupal 7, 8, and Beyond
 

More from Angela Byron

More from Angela Byron (19)

Lessons Learned From Scaling An Open Source Community By 10,000%
Lessons Learned From Scaling An Open Source Community By 10,000%Lessons Learned From Scaling An Open Source Community By 10,000%
Lessons Learned From Scaling An Open Source Community By 10,000%
 
Webchick's Personal User Manual
Webchick's Personal User ManualWebchick's Personal User Manual
Webchick's Personal User Manual
 
Creating a Project Priority Matrix
Creating a Project Priority MatrixCreating a Project Priority Matrix
Creating a Project Priority Matrix
 
From Imposter Syndrome to Core Committer: A GSoC Journey
From Imposter Syndrome to Core Committer: A GSoC JourneyFrom Imposter Syndrome to Core Committer: A GSoC Journey
From Imposter Syndrome to Core Committer: A GSoC Journey
 
Collaboration Needs of Massive Open Source Communities
Collaboration Needs of Massive Open Source CommunitiesCollaboration Needs of Massive Open Source Communities
Collaboration Needs of Massive Open Source Communities
 
Tales of Drupal Past: Origin Stories of Contributors
Tales of Drupal Past: Origin Stories of ContributorsTales of Drupal Past: Origin Stories of Contributors
Tales of Drupal Past: Origin Stories of Contributors
 
The Evolution of Drupal's governance
The Evolution of Drupal's governanceThe Evolution of Drupal's governance
The Evolution of Drupal's governance
 
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 updateDrupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
 
OCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapOCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 Roadmap
 
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
 
From Troubled Waters to Water Under the Bridge
From Troubled Waters to Water Under the BridgeFrom Troubled Waters to Water Under the Bridge
From Troubled Waters to Water Under the Bridge
 
Drupal 8 Adoption Myths Debunked
Drupal 8 Adoption Myths DebunkedDrupal 8 Adoption Myths Debunked
Drupal 8 Adoption Myths Debunked
 
Acquia Company Update on Drupal 8.2/8.3/OCTO
Acquia Company Update on Drupal 8.2/8.3/OCTOAcquia Company Update on Drupal 8.2/8.3/OCTO
Acquia Company Update on Drupal 8.2/8.3/OCTO
 
Drupal's competition
Drupal's competitionDrupal's competition
Drupal's competition
 
The potential in Drupal 8.x and how to realize it
The potential in Drupal 8.x and how to realize itThe potential in Drupal 8.x and how to realize it
The potential in Drupal 8.x and how to realize it
 
Acquia Drupal 8 Hackathon Demo 2015
Acquia Drupal 8 Hackathon Demo 2015Acquia Drupal 8 Hackathon Demo 2015
Acquia Drupal 8 Hackathon Demo 2015
 
Ux testing recap
Ux testing recapUx testing recap
Ux testing recap
 
Drupal 8: A story of growing up and getting off the island
Drupal 8: A story of growing up and getting off the islandDrupal 8: A story of growing up and getting off the island
Drupal 8: A story of growing up and getting off the island
 
Newfangeldy Front End Stuff For People Who Last Touched It Back When Grunge W...
Newfangeldy Front End Stuff For People Who Last Touched It Back When Grunge W...Newfangeldy Front End Stuff For People Who Last Touched It Back When Grunge W...
Newfangeldy Front End Stuff For People Who Last Touched It Back When Grunge W...
 

Recently uploaded

%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 

Recently uploaded (20)

%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 

Top 8 Improvements in Drupal 8

  • 1. The Top 8 Improvements Coming To Drupal 8 Angie "webchick" Byron Nova Scotia Drupal Meetup July 28, 2014
  • 3. What are we doing here tonight? • Go through top 8 changes for Drupal 8, in order of meekness. ;) • Walk through some of the bigger API changes in D8 for module developers • Talk about when D8 is coming and how you can help
  • 19. Translatable Everything! • Content • Blocks • Menus • User Profiles • Taxonomy • Views • Image styles • Text formats • Comments • Feeds • …and more! • No contrib modules needed!
  • 21. One core system to solve this mess variable_set()/variable_get() ctools_export_object()/ctool s_export_load_object() db_select()/db_update()/d b_delete() $conf[...]; hook_update_N() drush fu
  • 22.
  • 23.
  • 24.
  • 25. 6. Twig & HTML5
  • 26. PHPTemplate is now Twig7.x: page.tpl.php 8.x: page.html.twig <div id="page-wrapper"> <div id="page"> <div id="header"> <div class="section clearfix"> <?php if ($logo): ?> <a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home" id="logo"> <img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" /> </a> <?php endif; ?> <div class="layout-container"> <header role="banner"> {% if logo %} <a href="{{ front_page }}" title="{{ 'Home'|t }}" rel="home"> <img src="{{ logo }}" alt="{{ 'Home'|t }}"/> </a> {% endif %} • Friendlier syntax for designers • Variables auto-escaped for better security • Semantic, HTML5 markup http://twig.sensiolabs.org
  • 28. No more support for IE 6, 7, & 8
  • 30.
  • 32. Warning: Things are about to get... geeky.
  • 33. "Getting off the Island"
  • 34. Modern PHP Best Practices • PHP 5.4+ • Classes/Interfaces • Namespaces • Traits • Dependency Injection • Most PSR-* standards
  • 35. Powered by Symfony2 Tutorial: http://fabien.potencier.org/article/50/create-your-own- framework-on-top-of-the-symfony2-components-part-1
  • 36. …and dozens of other external libraries
  • 37. …and dozens of other libraries A peek under the hood
  • 38. YAML, YAML everywhere 7.x: example.info 8.x: example.info.yml name = Example description = "Example module" core = 7.x files[] = example.test config = admin/config/example dependencies[] = node name: Example type: module description: "Example module" core: 8.x config: admin.example dependencies: - node • New required "type" property • No more files[] (we'll get to that later) • Paths now have machine names (we'll get to that later, too) Drupalism: Kinda- Sorta-INI-Like "Proudly Invented Elsewhere": YAML
  • 40. Defining a page: 7.x function example_menu() { $items['hello'] = array( 'title' => 'Hello world', 'page callback' => '_example_page', 'access callback' => 'user_access', 'access arguments' => 'access content', ); return $items; } function _example_page() { return t('Hello world.'); } example.module Drupalism: "ArrayPIs" ;)
  • 41. Defining a page: 8.x example.hello: path: '/hello' defaults: _content: 'DrupalexampleExampleController::hello' requirements: _permission: 'access content' example.routing.yml example.links.menu.yml example.hello: title: 'Hello world' route_name: example.hello "Proudly Invented Elsewhere": - SF2 Routing Component - MVC pattern
  • 42. Defining a page: 8.x <?php namespace Drupalexample; use DrupalCoreControllerControllerBase; /** * Returns responses for Example module routes. */ class ExampleController extends ControllerBase { public function hello() { return array('#markup' => $this->t('Hello world.')); } } src/ExampleController.php "Proudly Invented Elsewhere": - PSR-4 Class Autoloader - OO code
  • 43. Defining a block: 7.x example.module <?php function example_block_info() { $blocks['example'] = array( 'info' => t('Example block'), ); return $blocks; } function example_block_view($delta = '') { $block = array(); switch ($delta) { case 'example': $block['subject'] = t('Example block'); $block['content'] = array( 'hello' => array( '#markup' => t('Hello world'), ), ); break; } return $block; Drupalism: "Mystery Meat" APIs based on naming conventions
  • 44. Defining a block: 8.x <?php namespace DrupalexamplePluginBlock; use DrupalblockBlockBase; /** * Provides the Example block. * * @Block( * id = "example", * admin_label = @Translation("Example block"), * category = @Translation("Example") * ) */ class ExampleBlock extends BlockBase { public function build() { return array('hello' => array( '#markup' => $this->t('Hello world.') )); } } src/Plugin/Block/ExampleBlock.php "Proudly Invented Elsewhere": - Annotations - APIs defined by Interfaces
  • 45. Choose Your Own Data Adventure • While you can do it, it's now considered unusual to store data directly in the database; choose one of the following: • Content Entities: Use for 1000s+ of records; fieldable. Ex: Nodes, Users, Comments, Feeds, Terms • Config Entities: Use for 10s of records; create in UI, deploy. Ex: Views, Text Formats, Image Styles, Vocabularies • Config API: Use for 1s of records; things you want deployed. Ex: most admin/config/foo forms • Settings API: Use for 1s of records; things specific to an environment; not deployed. Ex: timestamps, hashes, keys
  • 46. Read more about it! Plaster these URLs to your face: https://api.drupal.org/api/drupal/8 https://www.drupal.org/documentation/developer/api
  • 47. Every API change in Drupal 8 Plaster this URL to your cat's face: https://www.drupal.org/list-changes
  • 48. Rocket fuel to get started Plaster this URL to your dog's face: https://www.drupal.org/project/drupalmoduleupgrader
  • 49. 8 sounds great! So where's it at, anyway?
  • 50. Current Release Status • There are ~100 “critical” issues left to solve that block release. • Of these, ~5 are “beta blockers” that block the beta release. • “Beta” marks the time at which module developers can start re- writing their code on top of Drupal 8. • Without lots of modules being ready, Drupal 8 will not have a successful launch, so we are trying to get beta right. alpha releases bet a RC1 we are here! x “WHEN IT’S READY” (~Q2 2015) https://groups.drupal.org/core/updates
  • 51. When should I start using it? • Module/Theme developer? • Right now! • Provide early API feedback while things can still be changed. • Early Adopter? • Start building test sites during beta/RC • Be prepared to "BYOBF" (bring your own bug fixes) • Late Adopter? • 6+ months after Drupal 8.0.0 • Wait for enough contrib modules to be ported
  • 52. What about upgrades? • No more upgrade path; now, migration path. • Build out your Drupal 8 site as a new site, then migrate content, users, etc. over. • Drupal 6 => Drupal 8 migrations already in! • Drupal 7 => Drupal 8 migrations in progress. https://www.drupal.org/upgrade/migrate
  • 53. What if I'm stuck on D7 for the foreseeable future? Drupal 8 Core Feature Drupal 7 Contrib Equivalent WYSIWYG CKEditor: https://drupal.org/project/ckeditor In-Place Editing Quick Edit: https://drupal.org/project/quickedit Responsive Toolbar “Mobile Friendly Navigation Toolbar" https://drupal.org/project/navbar Responsive Front-End Theme Omega, Zen, Adaptive, etc. base themes Responsive Admin Theme Ember: https://drupal.org/project/ember Responsive Images Picture: https://drupal.org/project/picture Responsive Tables Responsive Tables: https://drupal.org/project/responsive_tables Simplified Overlay Escape Admin: https://drupal.org/project/escape_admin Multilingual Internationalization: https://www.drupal.org/project/i18n Entity Translation: https://www.drupal.org/project/entity_translation Better Blocks Bean: https://www.drupal.org/project/bean
  • 54. How can I help? • Start porting your modules/themes! • Give "developer experience" feedback while we can still fix things • Help us find/fix holes in documentation • Build a practice site or two • Test out the D6 => D8 migration path! • Find/File bug reports (with patches if you can!) • Help kill critical core issues! :D
  • 55. Want the full scoop? https://www.drupal.org/drupal-8.0 https://www.acquia.com/tags/ultimate-guide-drupal-8

Editor's Notes

  1. @TODO: Obviously, put your stuff instead. :) I work at Acquia in the Office of the CTO; Dries is my boss. :) Very focused on community stuff, such as making Drupal core, Drupal.org, and the Drupal Association rock! I’m also one of the authors of the O’Reilly book Using Drupal (give shout-out to Bruno), which covers all the key contributed modules worth knowing about; just updated for Drupal 7.
  2. Here we see the default Drupal 7 authoring experience. I like to call this video "why people say WordPress before Drupal" ;)
  3. Redesigned content page
  4. No more 1 block in only 1 region in each theme limitation Context system for blocks Fieldable custom block types, analogous to content types