This week (or two or three) in Drupal Core
by Angie Byron
What's new with Drupal 8?
Configuration system changes
Over the past month, a lot of work has gone into the configuration system. With the addition of a separate module install/uninstall step for the config import process, it's finally possible to properly synchronize configuration changes with module installations or uninstallations. You can now transform a site installed with the Minimum install profile into a site using the Standard install profile by importing configuration (the case we've long said will be our indicator that CMI "works"). (Watch this screencast to see it in action!)
Additionally, after thorough discussion, the active storage for the configuration management system has been moved into the database by default. This means existing Drupal 8 sites will likely need to be reinstalled (or otherwise migrate the active configuration). Read the change record on active configuration in the database for details on why this decision was made.
Now is the time to start really testing CMI deployments. Spin up a dev site, make a copy of it, and test synchronizing complex configuration system changes between the two. See if the system behaves as you expect (and report the problems you find!) For an overview of the outstanding work being done on the configuration system, see #2187339: [meta] CMI path to beta.
NYC Camp at the United Nations
The third annual NYC Camp was held at the United Nations. (Yes, that United Nations, with the flags.) In addition to numerous sessions about Drupal 8 (check out fmitchell's session on 30 Drupal 8 API functions you should already know), we held several days of Drupal 8 core sprints. Media contributors also sprinted on Media for Drupal 8; read their sprint status report for more information. Finally, Drupal Association executive director Holly Ross worked on a Drupal 8 patch got her first Drupal core commit credit! Are you next? :)
Where's Drupal 8 at in terms of release?
We're in the last stretch of Drupal 8's alpha phase. We've fixed over 130 beta-blocking issues, including 9 in the last week, plus written more than 70 missing change records. The last 28 beta blockers include some difficult issues, but consider some of what we've already accomplished since the beginning of 2014:
- The removal of the variable subsystem after 18 months.
- The rearchitecture of configuration synchronization to support the minimum viable usecase after 16 months.
- The removal of the legacy menu router after nearly a year.
- The removal of widely used cache-breaking functions including drupal_set_title(), drupal_add_css(), drupal_add_js(), and theme().
- The removal of all stale hook_update_N() implementations and the modification of update.php to require Migrate for major version upgrades instead.
(And of course so much more.)
Where can I help?
Top criticals to hit this week
Each week, we check with core maintainers and contributors for the "extra critical" criticals that are blocking other work. These issues are often tough problems with a long history. If you're familiar with the problem space of one of these issues and have the time to dig in, help drive it forward by reviewing, improving, and testing its patch, and by making sure the issue's summary is up to date and any API changes are documented with a draft change record.
#2116363: Unified repository of field definitions (cache + API) converts remaining usages of the deprecated field info API to use methods from the entity manager, and is therefore critical to stabilizing the Entity Field API for the beta release. This significant (~150 KB) patch needs thorough code review from contributors familiar with Drupal 8's entity and field systems.
#2183231: Make ContentEntityDatabaseStorage generate static database schemas for content entities is an even larger (~250 KB) beta-blocking patch for the entity system that allows the entity system to automatically create the necessary database tables for entities, resolving numerous different issues. This is another significant change and needs lots of thorough review from as many people as possible.
#2198429: Make deleted fields work with config synch needs review of the patch's architecture and functionality. Deleting a field is a significant operation, because the site has to go on to purge all the field instance data for entities that have the field while leaving those entities intact. Drupal 7 includes a lot of code to support this functionality, and in Drupal 8, there's additional complexity since this purge needs to happen when a deleted field is staged and synchronized to another environment.
#2124749: [meta] Stop using request attributes as a storage mechanism for other services covers a collection of issues to improve the developer experience around Drupal 8's use of Symfony's request attributes (a public property on the request object that can be used for context-specific information about the request). This context information is not easily discoverable for contributed module developers, and, in some cases, using it adds to the apparent verbosity and complexity (e.g. in the replacements for the common D7 functions
menu_get_item()). The numerous sub-issues for this meta issue are intended to weed out misuses of the request attributes and provide clear public APIs for others. Help discuss the developer experience and architecture in the numerous child issues for this meta.
More ways to help
We've put together a list of approchable beta blocker and beta target issues from the tasks remaining after our two back-to-back sprints on the beta at Szeged and NYC Camp.
As always, if you're new to contributing to core, check out Core contribution mentoring hours. Twice per week, you can log into IRC and helpful Drupal core mentors will get you set up with answers to any of your questions, plus provide some useful issues to work on.
The best of
git log --after=2014-04-02 --pretty=oneline (207 commits in total):
As we described above, it's been another couple weeks of fantastic progress in getting the configuration management system solid for beta. Notably:
- Issue #2161591 by pwolanin, beejeebus, sun: Change default active config from file storage to DB storage.
- Issue #1808248 by alexpott, beejeebus, tayzlor, Nitesh Sethia: Add a separate module install/uninstall step to the config import process.
- Issue #2124535 by Berdir, alexpott, Désiré, xjm | yched: Prevent secondary configuration creates and deletes from breaking the ConfigImporter.
- Issue #1740378 by xjm, Désiré, alexpott | heyrocker: Implement renames in the import cycle.
There is still plenty to help out on in the CMI path to beta meta issue if you want to help keep the excellent momentum of the last few weeks going.
Entities and fields
One of the many accomplishments from Drupal DevDays a few weeks ago, was a cute and colorful visualization of the long dependency chain of issues remaining to stabilize the Entity and Field APIs for beta. Two of them were committed in the last two weeks:
- Issue #2225739 by killua99, Berdir, andypost, pfrenssen: Remove usage of field_info_instances(), use EntityManager::getFieldDefinitions() instead.
- Issue #2226197 by fago, jessebeach: Introduce FieldStorageDefinitionInterface in the Entity Field API.
That has unblocked Unified repository of field definitions, which is now making good progress, and when committed, will unblock the next level of the dependency chain.
With a Drupal 8 beta approaching, how exciting will it be to start testing it out with content and configuration from an existing Drupal 6 site?! Several issues were committed that pave the way for that, including:
- Issue #2211949 by chx, Berdir, fago, benjy: Support keeping new revision id for migrate.
- Issue #2190561 by chx, pcambra, benjy: Migrate in core: Add a load system for migrate plugins.
And now, there's a 600KB patch containing 82 actual migrations ready for review.
A meta for everyone
No matter what part of Drupal you're interested in, there's probably a meta issue available for you to chip away at. Here's just some of the ones that had a commit in the last two weeks.
- When creating a theme, just when you thought you overrode everything you needed to to get all your markup exactly how you like it, do you hate having to discover yet another obscure theme function that inserts an unwanted
<div>? Well, the Twig team is cleaning that up as part of converting theme functions to Twig. Congratulations to them for removing a function entirely in: Issue #2151123 by joelpittet | Cottser: Remove theme_system_modules_incompatible().
- What's even better than fewer one-off theme functions to override? How about default markup that's perfect to begin with? There's a meta issue and an issue tag for that. Yay for progress on that with: Issue #2226923 by pakmanlh, mandar.harkare, mortendk, galooph: Views: remove wrapper around more link - add class to the link.
- Great default markup is only half the battle. We need great default CSS to go along with it. Nice to see another issue completed on that: Issue #1662954 by balis_m, mjonesdinero, kalpaitch, IshaDakota, kerasai, ckrina, BarisW | ZenDoodles: Use less-specific tabledrag selectors.
- Issue #2209145 by slashrsm, fgm, chx: Move all path alias SQL queries to a single storage controller: gets us another step closer to making all of Drupal's data storage swappable.
- Issue #2223631 by znerol: Use request stack in database flood backend.: gets us another step closer to aligning Drupal's request management with the improvements made in Symfony 2.4.
- Issue #2228341 by sun, znerol, skipyT, ParisLiakos: Objectify session management functions + remove session.inc.: gets us a large step closer to a fully modern Session API.
- Issue #1987848 by disasm, ocsilalala, kim.pepper, pwieck, Cottser, pratik60, h3rj4n, pfrenssen, InternetDevels, ParisLiakos, rgoodine, tlyngej, vijaycs85, robeano: Convert system_theme_default() to a new style controller.: chips away at modernizing every single Drupal controller.
- Issue #2225399 by marcvangend, yanniboi, mr.baileys, Wim Leers, visabhishek: Apply formatters and widgets to Feed base fields: only a few more issues left to go before every field of every content entity has a swappable formatter and widget and is in-place editable.
- Issue #2217749 by Wim Leers, Jalandhar, visabhishek, damiankloip: Entity base class should provide standardized cache tags and built-in invalidation.: another great step towards making sure everything in Drupal 8 is cacheable and correctly invalidated.
- Issue #1399846 by slashrsm, Gábor Hojtsy, Berdir, brantwynn, visabhishek, David_Rothstein, cweagans, martin107, SteffenR, Dave Reid: Make unused file 'cleanup' configurable.: part of clearing the path for media management modules in contrib to do everything they need to do without having to fight core to do it.
You can also always check the Change records for Drupal core for the full list of Drupal 8 API changes from Drupal 7.
Drupal 8 Around the Interwebs
Blog posts about Drupal 8 and how much it's going to rock your face.
- With Drupal 8 embracing modern PHP patterns and libraries, we have a great opportunity to welcome developers from other frameworks, and even languages, into our community. Larry Garfield writes about teaching Drupal 8 to a C# developer and Jeffrey McGuire interviews developers with Symfony and Java backgrounds about their thoughts on modern PHP and early Drupal 8 adoption, while DrupalCon Austin extends a special invitation to the Symfony community.
- At the same time, we already have a strong community that learned Drupal prior to PHP 5.3 and all the changes to the PHP world that came with that. While we decided to not let that stop us from modernizing, we can at least help each other make the transition. Which is why it's so great to see Chris Eastwood's post on upgrading his Simple Dialog module and Danny Englander's post on upgrading his Gratis theme.
- Of course, some people don't want to wait until Drupal 8 to get the benefits of PHP modernization. Christopher Skene published Object-oriented page callbacks for Drupal 7, the next installment of Writing Drupal 7 code with an eye towards Drupal 8, and Chris Pliakas wrote about Using Composer Manager to get off the Island Now.
- Speaking of modernizing, now that Windows XP is officially end of life, how long will it take for everyone still using IE8 to upgrade? Who knows, but David Corbacho summarizes the current situation in relation to Drupal 8.
- And for the site builders out there, Joe Fender explains how to hide form fields using Drupal 8's Field UI.
Drupal 8 in "Real Life"
- First off, there are numerous upcoming sprints in Washington, DC (April 22), Brisbane (April 23), London (April 26-27), and Stockholm (May 4), plus a Drupal 8 Search API sprint in Zurich (April 28-May 2). Try working on a Drupal 8 core or contrib issue at one of these sprints!
- April 23-25: DrupalCamp Mexico has several Drupal 8-related sessions and a whole "SymfonyDay" track!
- April 25-27: DrupalCamp Donetsk will include a presentation on Drupal 8 from webchick.
- April 26: DrupalCamp St. Louis also includes a Drupal 8 introduction.
- May 2: DrupalJam in the Netherlands has a session on Drupal 8 patterns (plus maybe a streamed Q&A with Dries!)
- May 2-4: DrupalCamp Toronto doesn't have a set schedule yet, but there are numerous Drupal 8 session proposals.
- May 31-June 8: DrupalCon Austin and extended sprints. This year's North American DrupalCon will include many Drupal 8 sessions, trainings, and sprints. The conference is June 2-6 with the community sprint on Jun 7, and there are plans extended sprints the weekends before and after the conference. See the signup sheet for Austin's extended sprints. Austin will be critical to make progress toward Drupal 8's release, so please plan to participate in the sprints if you can!
Whew! That's a wrap!
Do you follow Drupal Planet with devotion, or keep a close eye on the Drupal event calendar, or
git pull origin 8.x every morning without fail before your coffee? We're looking for more contributors to help compile these posts. You could either take a few hours once every six weeks or so to put together a whole post, or help with one section more regularly. Contact xjm if you'd like to help communicate all the interesting happenings in Drupal 8!