Drupal 8: Huge wins, a Bigger Community, and why you (and I) will Love it

  • View
    2.139

  • Download
    0

  • Category

    Software

Preview:

DESCRIPTION

It's true: Drupal 8 includes big and exciting changes to its core and how Drupal code is written. These include using outside PHP libraries (Guzzle, Symfony, etc) as well as embracing PHP 5.4 and object-oriented code. Scary, right? Definitely not! These changes give Drupal 8 so many "wins" and new possibilities that you're going to absolutely love it. In this keynote, we'll explore the changes together and start to realize all of the wonderful things that each will bring. These include a (much) larger community, many more libraries you can use, higher quality tools, easier future upgrades, and some fantastic new features. And because Drupal uses Symfony, you'll easily be able to use Symfony (or its little brother Silex) for any non-CMS projects. Being a great Drupal 8 developer means being a great PHP developer. Of course, Drupal 8 has its criticisms: it will be too hard for new developers to learn, or it will not be useable for smaller sites. We'll take on these concerns directly and see why they are valid, but exaggerated.

Citation preview

@weaverryan

PHP Tutorial Screencasts

Drupal 8: Huge wins, a Bigger Community, & why you (and I) will

love it

PHP Tutorial Screencasts

knplabs.com github.com/weaverryan

• Lead contributor to the Symfony documentation !• KnpLabs US - Symfony consulting, training, Kumbaya !• Writer for KnpUniversity.com

screencasts

Buenos Dias!

!

!

!

!

!!• Husband of the much more talented @leannapelham

PHP Tutorial Screencasts

knplabs.com github.com/weaverryan

• Lead contributor to the Symfony documentation !• KnpLabs US - Symfony consulting, training, Kumbaya !• Writer for KnpUniversity.com

screencasts

Buenos Dias!

PHP Tutorial Screencasts

knplabs.com github.com/weaverryan

• Viví en Querétaro in 2003 for 4 months

• I spoke about 5 words of Spanish. These 5 words did not include hermano nor amigo

• Learned of the custom of kissing a women when greeting her… when a woman kissed me on the street

Querétaro

Intro !

PHP Before Now (The Desert of the Real)

(1) !

Sharing and working together was impossible

https://www.flickr.com/photos/rossap/8059476135

Every PHP Framework, CMS and Project builds everything from scratch

Sharing was nearly impossible

http://garfieldtech.com/presentations/sunshinephp2014-php-pie

(2) !

If PHP is big, we’ll thrive If PHP is small, we’ll die

@weaverryan

Communities

PHP is HUGE! Right?

http://www.flickr.com/photos/kitty-kat/

@weaverryan

PHP > Ruby

@weaverryan http://www.flickr.com/photos/slpunk99/7329609744

Fragmentation:It makes us tiny, isolated,

and misguided trend-setters

https://www.flickr.com/photos/horiavarlan/4273913228

@weaverryan

PHP projects vs Rails

@weaverryan

CakePHP

I don’t want a damned CakePHP Plugin!

@weaverryan

CakePHP

CodeIgniter

I want a PHP library I can use in any project

@weaverryan

Fragmentation

• More information we have to know !

• Difficult to hire !

• Disjointed forums, StackOverflow !

• Interoperability? What’s that?

Chapter 1 !

Drupal is PHP PHP is Drupal

PHP is in the middle of a Renaissance

https://www.flickr.com/photos/kafkapie/3761271639

http://knowyourmeme.com/photos/5713-copypastahttp://garfieldtech.com/presentations/sunshinephp2014-php-pie

• Shares code !

• works together !

• uses consistent standards !

• projects are interoperable

Now: The Community

@weaverryan

Drupal has missed all of the progress… until now

@weaverryan

Drupal 8 embraces the new tools and standards…

… and has joined the PHP community as a member and leader

@weaverryan

@weaverryan

Chapter 2 !

Drupal 8: New Libraries

https://www.flickr.com/photos/spam/5086168739

Drupal 7: !

drupal_http_request()

“Drupal's current outgoing-HTTP capability is, to be polite,

minimal. We have one small function with a lousy API that

can do basic requests, but that's it. If we want to be serious about

web services we need strong bidirectional HTTP support.”

https://drupal.org/node/1447736

Drupal 8’s HTTP client is *incredible*

It has been developed for over 3 years

@weaverryan

Has 2000+ commits

@weaverryan

Was entirely sponsored by Amazon

@weaverryan

And Drupal developersdidn’t need to waste any

time making it!

@weaverryan

Meet Guzzle!

An independent PHP library that’s great at making

HTTP requests

drupal_http_request Guzzle

Available Documentation comments above the function 9 chapter book

Commits ~40 ~2000

Contributors ~20 131

Used by Drupal All PHP devs

Features Some Many!

Compare & Contrast

@weaverryan

Drupal 8:

What fantastic libraries do you get for no effort?

PHPUnit• Unit-testing library that’s used

across all of PHP

• Some cool German guy spent years building this for you!

• Core has ~5000 unit tests that run in 18 seconds

• Easily use unit tests (finally) in your project

@weaverryan

Assetic

• JavaScript and CSS processing,minifying and compiling library

• Used in the Symfony Frameworkand other places

http://www.cameronhillphotography.com/@weaverryan

• Templating engine used forDrupal 8 theming

• Built by 163 contributors, with 2000 commits over 5 years and 63 releases

Twig

Loved by:

• High-Quality library for reading andwriting RSS and ATOM feeds

• Written by someone else (score!)

• A large chapter of already-written documentation

Zend Feed

@weaverryan

And Finally…

Symfony Components

Symfony is just a collection of decoupled

PHP libraries

Symfony libraries in Drupal

• ClassLoader • Debug • DependencyInjection • EventDispatcher • HttpFoundation • HttpKernel

• Process • PropertyAccess • Routing • Serializer • Translation • Validator • Yaml

These are just tools that Drupal uses, instead of writing

everything from scratch

Drupal 7 !

“There’s a module for that”

… and if there’s not, the Drupal community must write one

@weaverryan

PHP

Drupal 7

@weaverryan

Drupal 8 !

“There’s a PHP library for that”

… and if there’s not, the entire PHP community can work on it together

@weaverryan

Drupal 8

Drupal 7

@weaverryan

Chapter 3 !

Drupal 8: Hard to Learn?

https://www.flickr.com/photos/83633410@N07/7658254172

Drupal 8 is much more object-oriented

Difficult to Learn?

Drupal 7 Deep Arrays

Drupal 8 Objectsvs.

@weaverryan

@weaverryan

Drupal 7

@weaverryan

Drupal 8

@weaverryan

Drupal 7

Drupal 8

Drupal 7

Drupal 8

• Learn Drupalisms (Drupal-specific practices) • Non-Drupal developers have a learning curve • New devs will copy and paste functions and arrays

• Learn practices used across almost all languages • Non-Drupal developers feel at home • New devs will copy and paste functions and YAML

@weaverryan

Drupal 8: good for you

Learn these new, highly-needed skills all at once as one big community

https://www.flickr.com/photos/aussiegall/309391023

Bonus

Knowing Drupal 8 means !

Knowing Silex

Use the same skills to build a CMS or a custom application

If you know Drupal !

you understand Symfony

or Drufony@weaverryan

If you know Symfony !

you understand Drupal

or Symfal@weaverryan

Hundreds of pages of documentation exist, thanks to

Symfony, Guzzle and other libraries

Drupal has a lot of work to do, but has a head-start!

Learning Drupal 8

@weaverryan

Chapter 4 !

New Paradigms mean New Possibilities

https://www.flickr.com/photos/nasamarshall/6731872025

New Paradigms

• Object-Oriented Code

• Interfaces

• Dependency Injection

• Composer

• Namespaces

@weaverryan

Possible in Drupal 8

Completely replace any part of core. That’s supported natively

Possible in Drupal 8

Easier Future Upgrades

Possible in Drupal 8

Add/Remove entire systems and create

distributions

Drupal for Blogging?

Include Entity/Field, Views

Remove Most admin features

Focus Node Posting System

No blocks CMS

Remove Blocks

Focus Use only Twig for theming/layout

Syndication CMS

Include Atom/RSS syndication

Remove All concepts of content beyond feeds

Focus Process and serve feeds

One Drupal cannot work perfectly for everyone

https://www.flickr.com/photos/generalnoir/391009102

But many Drupals is now possible

https://www.flickr.com/photos/hjmediastudios/7883634326

One Technology used for many

platforms?

A Proven Model

Best!Use-Case Uses Symfony?

Silex Small sites yes

Laravel Quicker medium/large sites yes

Symfony Framework

Enterprise medium/large sites yes

Drupal CMS yes

Drupal 8?

Best!Use-Case Uses Drupal?

Drupal Small Small sites yes

Drupal Medium Quicker medium/large sites yes

Drupal Enterprise Enterprise medium/large sites yes

Will this happen? !

It’s up to the community, but finally

possible

Chapter 5 !

New Features/Goodies

My 9 Favorite things!

(9) !

Spark: Inline-editing

(8) !

Nodes available as JSON

(7) !

Mobile Ready: Responsive and with an API

Responsive!

(6) !

Multilingual support out of the box

(5) !

Views in Core (Drupal 8 with views on day 1)

(4) !

CKEditor in Core

(3) !

CMI: Configuration Management

Configuration Management

• Configuration moved from the databaseto YAML files

• Engineered with deployment in mind

• Deploy configuration changes from stagingto production

• Put configuration into version control

@weaverryan

(2) !

HTTP Caching (thanks to Symfony)

(1) !

Symfony’s Web Debug Toolbar

Via a community module

https://drupal.org/project/webprofiler

@weaverryan

@weaverryan

https://drupal.org/project/webprofiler

@weaverryan

https://drupal.org/project/webprofiler

@weaverryan

https://drupal.org/project/webprofiler

@weaverryan

https://drupal.org/project/webprofiler

https://drupal.org/project/webprofiler

Are you excited for Drupal 8 yet?!?

Chapter 6 !

Doing things the Drupal 7 way

The Revolutionary Tape Player

http://en.wikipedia.org/wiki/Cassette_deck

http://www.amazon.ca/MAXELL-MDV-RW1-Cassette-Rewinder/dp/B00006HOEF

Would you start a company in 2014 that sold

Walkman accessories?

PHP 4

Would you write a PHP 4 book

today?

http://www.amazon.co.uk/Beginning-PHP4-Programmer-Wankyu-Choi/dp/0764543644

Would you build a new CMS on

PHP 4?

Drupal 7 is a CMS built on PHP 4 technology

Drupal 7 Drupal 8

Technology PHP 4 (2000-2007) PHP 5.4 (2011-)

Practices Outdated, Drupal-specific Best-Practices, applicable across languages

Non-Drupal devs Code looks unfamiliar Code feels familiar

Developer Experience Arrays and hooks Interfaces, IDE code-

completion, shared code

Drupal 7 is good, but we can’t keep

doing things the Drupal 7 way forever

Drupal 8: !

Innovate away from old technolog, or die with it

Drupal 8 chooses to Innovate

A Stronger Community

Higher Quality Features

New Skills for You

More Tools for You

New Possibilities

PHP Tutorial Screencasts

Ryan Weaver @weaverryan

¡Gracias!

@weaveryan @KnpUniversity

Recommended