This month in Drupal Core (June 25, 2014)

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
xjm's picture

Note: We've renamed this post series to Drupal Core Updates since, well, you know, they weren't exactly weekly to begin with. (As always, contact xjm if you'd like to help write them!)

What's new with Drupal 8?

We may have been quiet for the past month as we prepared for -- and then recovered from -- DrupalCon Austin, but core development has been sizzling! (And not just because of the Texas climate.)


Photo credit: pdjohnson

DrupalCon Austin sprints

In addition to all the great sessions (videos below), summits, BOFs, and trainings, Austin included six full days of sprints on everything from Drupal 8 release blockers, frontend, and APIs, to D8 contrib initiatives like #d8rules, the Examples D8 port, and D8 Media, to Drupal.org itself. Nearly 500 sprinters and mentors got involved on the main Friday sprint day, and over 100 sprinters participated in the extended sprints before and after the Con.

If you were at the sprints, you might have noticed a few goofy sprinters decked in rabbit ears. :) These indefatigable contributors were working on some of the very last Drupal 8 beta blockers. During Austin, we managed to resolve six of these issues, but more importantly, we identified the path forward in all the beta blockers we didn't fix as well.

Done > Perfect

The past month also showed a shift in the community's outlook: It's time to get Drupal 8 done. We need to stop making large, non-essential changes, because every time we make more work for ourselves, we delay the release of 8.0.0 for hundreds of thousands of people. When we have a choice between doing something quickly and imperfectly, or slowly and perfectly, it's time to pick the quick, imperfect fix. A couple examples:

  • Last month, we discovered that Drupal 8's new support for PHP INTL dates was badly broken. Instead of spending dozens of hours trying to resolve this issue before releasing a beta, we removed the feature. It did not exist in D7, and it can be added back for 8.1.0, or provided by a contributed module.
  • In Drupal 8, comment fields can now be attached to any entity type, instead of just nodes; however, they don't work on entity types with non-numeric ID keys (contact forms are the only example in Drupal 8 core). Instead of holding up the release on making every fieldable entity type commentable, we settled for almost every entity type being commentable -- which is still a big improvement from D7.

Drupal 8.0.0 will not be perfect, but it will be powerful. And we have the chance to make it even better in 8.1.0 six months later. Think about which issues in the core queue might make sense as minor version targets, and help us work on Drupal 8 efficiently.


Photo credit: Michael Schmid. Help us battle Lord Over-Engineering!

Drupal 8 documentation updates on API.drupal.org

Lots of comprehensive API documentation has been added to the API.Drupal.org handbook page over the past month, thanks especially to API documentation maintainer jhodgdon and review efforts from core component maintainers. This overview page (and the detailed documentation linked from it) should provide a much better starting point for learning about Drupal 8. (See below for how you can help document the remaining API topics.) API.drupal.org has also recently added an automatic list of services provided in Drupal 8 core. For updates on Drupal documentation work, see This Month in Drupal Documentation.

Where's Drupal 8 at in terms of release?

Last week, we fixed 9 critical issues and 10 major issues, and opened 4 criticals and 6 majors. That puts us overall at 92 release-blocking critical issues and 595 major issues.

2 beta-blocking issues were fixed last week. There are still 11 of 172 beta blockers that must be resolved before we can release a Drupal 8 beta.

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.

  • #2238217: [Change record] Introduce a RouteMatch class

    The one reasonably approachable task in this week's top beta blockers is to complete the needed change record documentation for the recently added RouteMatch class. Help by writing a draft change record for the issue, and then update existing change records to also include an issue reference to #2238217 and to use the new API. (See comment #143 on the issue for a start.) Post links to the revision diffs for your change record updates so they can be reviewed by other contributors.

  • #2256521: New plan, Phase 2: Implement menu links as plugins, including static admin links and views, and custom links with menu_link_content entity, all managed via menu_ui module

    This massive (nearly 600 K) improvement to the Drupal 8 menu link API resolves or unblocks numerous critical issues while also supporting performance, DX, and multilingual improvements. The patch is developed from a sandbox:
    git clone --branch 2256521 http://git.drupal.org/sandbox/dereine/2031809.git
    Help this issue by:

    • Providing code additional reviews, since the patch is way too big for any one contributor to review in one sitting.
    • Proactively identifying things in the patch (or from others' reviews) that could be resolved in followup issues, filing those followup issues, and adding the appropriate code @todo and links to the followup issues.
    • Looking through the patch and issue to identify the complete, specific API changes it introduces, and adding these changes to the issue summary.
    • Checking for existing change records that will need to be updated for these API changes, listing the updates that will be needed in the issue summary, and editing the change records to add a reference to #2256521.
    • Drafting a new change record for the change.

    Check with Wim Leers, pwolanin, or dawehner so that you can align your efforts with their work on this patch.

  • #2144263: Decouple entity field storage from configurable fields

    This issue is key to completing the Drupal 8 Entity Field API and is the culmination of work done across DrupalCons Portland, Prague, and Austin. The patch needs test failures resolved, architectural review, and (as above) identification of any needed change record updates. Coordinate with Berdir, plach, or yched to help further with this issue.

  • #1825952: Turn on twig autoescape by default.

    Enabling Twig's built-in autoescaping of HTML-unsafe code will security-harden Drupal 8, and should eventually allow us to reduce complexity and improve perfomance in the theme layer. The patch introduces a SafeMarkup class that can be used to identify sanitized strings for use in templates, and all other strings are automatically escaped. Help with this patch by providing feedback to points raised in recent reviews (see comment #185), helping write thorough API documentation for the SafeMarkup class, or starting a draft change record. Contact xjm to help out with this issue.


Photo credit: Michael Schmid

More ways to help

  • We're closing in on Beta 1!

    Only 11 beta-blocking issues remain, and we will probably be in the single digits by the end of the week. This means now is a good time to start looking at all the beta targets and especially issues with a beta deadline. (See Beta blocker deadline target what? for an explanation of these issue categories.) Keep an eye out for other issues that should have a beta deadline as well.

  • #2148255: [meta] Make better D8 api.d.o landing page, linked to high-level overview topics, and put it in Core api.php files

    Help improve our Drupal 8 API documentation! The menu and routing topic needs review, and we also need first drafts for the REST, Migration, and Ajax documentation topic updates.

  • #1971384: [META] Convert page callbacks to controllers

    We converted all of core to use our new routing system last fall, but eighteen different form and page controllers still need to be cleaned up to conform to our best practices. Currently, almost all of these patches need to be rerolled for PSR-4 and for other core changes. Note, however, that many of these patches have gone through multiple rerolls (mostly by novice contributors) over the course of more than a year, without sufficient review before the patches become stale. So, what these issues need most is 1-2 experienced contributors with an understanding of Drupal 8 architectural concepts who can manage the meta issue and its children, and provide thorough code review when new patches are submitted. If you can help out, start by reviewing those child issues still at "Needs review".

  • #2016679: [Meta] Expand Entity Type interfaces to provide methods

    Drupal 8 core provides numerous entity types, but the full public API for each type is not easily documented or discoverable. To improve the developer experience, each entity type interface is being expanded with relevant methods for the specific entity. Most issues have a submitted patch, and what is most needed is architectural review of the proposed interface methods, including recommending which properties should instead be protected. If you have experience with one of the subsystems that still has an open child issue, or if you have a sound grasp on OO design generally, we could use your help to thoroughly review these patches so that the completed APIs are available for contributed module developers in a beta release.

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.

You can also help by sponsoring Drupal core development.

Notable Commits

There have been a remarkable 360 commits since our last post in May! Far too much great work has been done across D8 core to summarize it all, but here are a handful of the more "epic" beta-blocking issues that were recently resolved:

  • Issue #2224887 by alexpott, Berdir, Gábor Hojtsy, Jalandhar: Language configuration overrides should have their own storage.
  • Issue #2247991 by xjm, typhonius, donquixote: [May 27] Move all module code to PSR-4.
  • Issue #2183231 by tstoeckler, plach, jessebeach, fago, Berdir, xjm, mauzeh: Make ContentEntityDatabaseStorage generate static database schemas for content entities.
  • Issue #2143291 by plach, alexpott, xjm, effulgentsia, pwolanin, swentel | yched: Clarify handling of field translatability.
  • Issue #2167167 by Berdir: Remove field_info_*().
  • Issue #2238217 by effulgentsia, neclimdul, martin107, tim.plunkett, cweagans, kim.pepper, xjm: Introduce a RouteMatch class.

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

If you didn't make DrupalCon Austin -- or even if you did -- be sure to check out all the Drupal 8 session recordings. Some highlights:

Seen enough videos now? Looking for something to read instead? webchick's ongoing blog series, the Ultimate Guide to Drupal 8, is a great resource for everything you might want to know about D8 improvements.

Drupal 8 in "Real Life"

It's a sprint-filled summer!

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!

Core

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: