socketwench.github.io/drupal8CommunityReady
In code and process
4 years!
Led to speculation, worry
Long time devs left or reduced involvement
Not the first, but highest profile
Drupal 8 had just gotten started
Straight functions (mostly)
PHP4's OOP was odd & incomplete
Lack of a language feature patched with human effort.
Prefer in-community solutions despite costs.
Dependencies were copy-paste.
Required manual effort to build, update.
"Point of no return" thinking
Makes replacement of large subsystems impossible
PHPTemplate vs. Smarty, etc.
Simpletest vs. PHPUnit
Many others...
We rarely worked "upstream".
Just don't tell me how you work.
So, who did we enable with Drupal 8?
Isn't just about patching files
Adds CPU, memory, debugging overhead
Enable best-practice runtime patching.
De facto PHP dependency manager
Vendor projects removed from Drupal repos
*Soon, expected in Drupal 8.1.
Build your entire site using just composer.
No more Drupal Core in your site repo.
PHP 5 fully implemented OOP
Groups of API functions not related at language level.
Requires more training!
At the language level.
Create more functionality...
...with less copy & paste.
Lowers barriers for developers to use Drupal.
Provides a familiar environment to learn new skills.
Many endpoints only need content, not an HTML page.
Decoupled, Mobile, and Native Apps.
Discouraged use of Drupal 7 as a backend.
Web services + progressive decoupling
Ready for decoupled front-end, mobile, and native apps.
Core alone was never enough in D7
Key contrib modules needed to make a complete site
* Contrib in Drupal 7
Enable composite content.
Finally!
No more waiting to build a real site.
Many core-provided pages are views!
Customize user and admin facing pages.
Preserve configurations to files
Raw PHP in a theme is a bad idea!
Complicated syntax, security nightmare.
Twig means no more PHP!
More theme templates, less functions.
Module incompatibility, past mistakes, no rollback.
Easier, more cost effective to build a new site.
Repeatable & customizable content migrations.
Old DB tables and config left behind
Transfer content directly from 6 to 8.
With core alone.
And contributor interest.
Predictable releases every ~6 months.
Long Term Support when next major version starts.
Lets contributors see the value of their work...
...before they forget.
Easy/fun vs. Most Critical
Subsystem dependencies
"I don't have the time to do it the right way."
Shortcuts, brute force, and "temporary" workarounds.
Define an endpoint several releases away.
Focus on one big change per release.
More focused changes, less "too many cooks"
Easier for volunteer core devs to maintain momentum
A focused change takes less time to update modules
It limits cultural shock.
Fewer changes make it easier to accept.
All changes in one version jump
It's not just for new features...
...but for fixing things that were unplanned.
Or, at least someone that can say "No".
It discourages volunteers instead.
Doesn't encourage unpaid contributors
...they leave instead.
And we're not working for Apple.
Maybe not for existing developers...
But it has the effect of creating new interest!
...only the perception of the amount.
Rewrite your modules...
...every 6 months...for 4 years?
Both for core developers...
...and contrib developers.
Can create a "lost version"...
...by exchanging cultural shock, for update fatigue.
It's easier to be a new student...
...than an old expert.
OOP, Twig, Symfony, and more.
The Drop moves faster.
More of what you need in core.
But a brighter future.
Both for today's Drupal devs...
...and those we'll meet tomorrow.
socketwench.github.io/drupal8CommunityReady