On Github socketwench / drupal8CommunityReady
socketwench.github.io/drupal8CommunityReady
In code and process
There's been some huge changes with over the last several years. Critics have called Drupal 8 a completely different CMS from the previous version. While intimidating, there were many changes we needed for Drupal to be ready for the now and the future.4 years!
There's also been a gigantic development cycle for this version, longer than any other we've done in the history of the project. Four years! That's an eternity in the tech world.Led to speculation, worry
We also had the nagging problem that we never really knew when Drupal 8 was going to be released. We said, "When it's ready". This created a lot of speculation and even worry that Drupal would never get out the door.Long time devs left or reduced involvement
We've also had some long time developers leave the project, or reduce their involvement. From an outsider perspective it's hard to read this in an alarming way, forgetting about the many new developers that have joined the project recently and had a big impact.Not the first, but highest profile
And let's not forget the big fork Drupal had recently. It wasn't the first, but it was certainly the highest profile.Drupal 8 had just gotten started
Straight functions (mostly)
PHP4's OOP was odd & incomplete
Drupal 7 is, to me, full of anachronisms. It's composed of straight functions -- mostly. There isn't anything wrong with that, it only feels...well...old fashioned. It was also justified in Drupal's case as PHP 4's OOP support was odd and incomplete.Lack of a language feature patched with human effort.
With the exception of the database layer, there were huge arrays of doom everywhere in Drupal. Either you needed to create them in your code, or work with huge, undocumentable monstrosities that you needed to run through a debugger first BEFORE writing your code. WTH!?Prefer in-community solutions despite costs.
Dependencies were copy-paste.
Required manual effort to build, update.
"Point of no return" thinking
Haven't heard of the Sunk-cost Fallacy? It's an idea from behavioral economics that suggests once we've invested a certain amount of utility in something, we pass a point of "no return" where we're obligated to stick with it even when we know the problems.Makes replacement of large subsystems impossible
Usually this refers to cars, houses, movie or concert tickets, but it works in software design as well!PHPTemplate vs. Smarty, etc.
Simpletest vs. PHPUnit
Many others...
We rarely worked "upstream".
Just don't tell me how you work.
I really, really love you Drupal, but please, 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
The first thing was that we finally started using object-oriented programming. PHP 5 brought a full OOP features that we could finally leverage in Drupal.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
There's lots of conflicting priorities when planning a new version of a piece of software. With a volunteer-run project like Drupal, it's easy to choose between what's easy and fun, vs. the most critical changes we need to make. There's also a lot of subsystem dependencies to consider when planning a major update. As replacing or updating one subsystem may require aShortcuts, 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"
This is great in theory, since it allows developers to focus a few changes at a time, and avoid the problem of having "too many cooks" each with conflicting priorities and agendas.Easier for volunteer core devs to maintain momentum
The biggest advantage is that the perceived amount of work would be less for incremental changes rather than a huge, big-bang change. This makes it easier to maintain momentum for a core developement team made up of mostly volunteers.A focused change takes less time to update modules
Focused changes is also easier for contrib developers as it takes less time to update modules to the new version.It limits cultural shock.
Fewer changes make it easier to accept.
This all sounds great, but what's the real advantage of incremental updates? Incremental updates limit cultural shock. Big changes are easier to accept in smaller pieces.All changes in one version jump
Drupal 8 was a Big Bang change. We had all the changes, new features, and everything in one version jump.It's not just for new features...
...but for fixing things that were unplanned.
This is feature creep. It doesn't just mean adding new features, but also fixing other things we weren't planning to fix before. This happened a lot in Drupal 8. We started out with a few changes and soon we were replacing every little thing because, if we didn't fix it now, when would we?Or, at least someone that can say "No".
The problem is that to make incremental changes work you often need a tyrant.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.
Incrementally updating a large software project like Drupal is difficult in practice. Work isn't really really reduced, only the perception of how much work there is.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