drupal 8: huge wins, a bigger community, and why you (and i) will love it
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.TRANSCRIPT
@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