This fortnight in Drupal core: February 8, 2014
by Angie Byron
What's new with Drupal 8?
It's been a remarkable couple of weeks for Drupal 8, with several landmark changes, a global sprint, and a surge in core issue queue activity.
Global sprint weekend
The second Global Sprint Weekend was held January 25-26. Over 400 sprinters participated at 39 locations on six continents, with others participating remotely in IRC. Some quick core issue queue statistics from the sprint timeframe:
- 80 new Drupal 8 core issues created
- 553 Drupal 8 patches submitted
- 2468 comments posted on 646 Drupal 8 issues
- 113 Drupal 8 issues RTBCed
A huge thanks to everyone who participated, and especially to the sprint organizers and mentors who helped make it happen.
Removal of the variable subsystem
Right on the heels of the Global Sprint Weekend, the last patch to convert variables to config or state was committed, and within a day the old variable subsystem was removed. This was the culmination of a year and a half of work by more than 80 contributors, and an incredible milestone for the Configuration Management Initiative.
Removal of the 7.x to 8.x upgrade path
At DrupalCon Prague, core maintainers agreed to stop using update.php for major version upgrades in favor of providing data migration from Drupal 7 (and Drupal 6!) with Migrate in core. So, last week we fixed Issue #2168011: Remove all 7.x to 8.x update hooks and disallow updates from the previous major version. Now the core codebase is as committed to Migrate as we are. ;) See Drupal 7 sites can no longer be upgraded to Drupal 8 with update.php for more information.
hook_update_N() implementations will no longer be added for data model changes from Drupal 7, core patch contributors should keep an eye out for patches that might require migration updates instead. For details, read: No more 7.x to 8.x hook_update_N() -- file Migrate issues instead.
Change record drafts
It's now possible to create drafts of API change records, and a draft change record will be required before any API change is committed starting February 14. More information on the new feature and change record process: Change records now needed before commit.
On January 31, in preparation for this change, core contributors reduced the missing change record count from 40 to 20 in 24 hours. We actually halved this long-outstanding documentation debt within a single day. Amazing work!
Theme system conversions
Core theme system contributors have been busy the past several weeks, converting numerous theme functions to Twig and removing all calls to theme() outside drupal_render() (and some automated tests). This important theme system cleanup has been ongoing for more than seven months and blocks a beta release.
Additionally, after lots of work on these issues, joelpittet joined the theme subsystem maintainer team. Thanks Joel!
Where's Drupal 8 at in terms of release?
Here's a quick look at our progress on criticals and beta blockers in January:
We tied our previous record of 48 criticals fixed within a single month, but this time while posting fewer new ones than that. ;) Great work!
We fixed a grand total of 37 beta blockers in January, putting us past the halfway point for the beta! We also made great progress on cleaning up the API documentation debt of our outstanding change records -- from over 50 at the start of the month to 19 at the end (and just 12 as of today)! That said, we also identified 20-odd additional beta-blocking issues over the course of the month, so it's important to keep our focus on these top-priority issues.
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.
- #2114707: Allow per-bundle overrides of field definitions. This entity system issue blocks work on performance as well as some key architectural changes.
- #2002134: Move TypedData metadata introspection from data objects to definition objects is an entity system DX issue that also impacts several important contributed modules.
- #2080823: Create API to discover content or config entities soft dependencies and use this to present a confirm form on module uninstall. Dependency management for configuration entities is the one remaining blocker in CMI without a solid plan. Help us architect this crucial part of the configuration system.
- #2054011: Decide on built-in support for internal URLs blocks a lengthy chain of menu system issues.
More ways to help
- #2173655: Refactor theme() to _theme(); make it a private API to discourage module developers from circumventing the renderable build system is a straightforward critical with several straightforward followups to get the theme system beta-ready. Help with this issue by providing a script to rename the function where needed (a regex is provided in comment #5), rolling an updated patch, and reviewing the next submitted patch carefully to ensure the function is renamed correctly everywhere.
- #2188771: [meta] Block API documentation . Drupal 8 has a harder-better-faster-stronger Block API that makes core blocks far more flexible and developer-friendly than they've been in previous versions of Drupal, but near all documentation for it is outdated, confusing, or missing entirely. Help on some of the many documentation issues listed in this meta.
- We're down to a mere 12 committed patches with missing change records. (Several of these are related to the Block API, above.) Help us write and review these by February 14 so that we can give contrib a valentine with no strings attached. ;)
- 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-01-24 --pretty=oneline (191 commits in total):
- Issue #2099741 by Wim Leers, wwalc, mr.baileys, eaton, dstol, nod_, effulgentsia: Protect WYSIWYG Editors from XSS Without Destroying User Data.
- Issue #2183923 by tim.plunkett: Break the circular dependency in EntityManager.
- Issue #2157053 by alexpott, twistor, dawehner, sun: Ensure register_shutdown_function() works with php-fpm (blocks testbot php-fpm).
- Issue #1939064 by joelpittet, pwieck, farrington, mark.labrecque, Cottser, InternetDevels, mdrummond, drupalninja99, BarisW, jenlampton: Convert theme_links() to Twig.
- Issue #1939062 by steveoliver, mdrummond, jenlampton, hussainweb, Cottser, joelpittet, jerdavis, ekl1773, dale42, drupalninja99, gabesullice, c4rl: Convert theme_item_list() to Twig.
- Issue #2168011 by xjm, jessebeach, Damien Tournoud, znerol, Xano: Remove all 7.x to 8.x update hooks and disallow updates from the previous major version.
- Issue #2167641 by tim.plunkett: EntityInterface::uri() should use route name and not path.
- Issue #2164827 by Berdir, Xano, tim.plunkett: Rename the entityInfo() and entityType() methods on EntityInterface and EntityStorageControllerInterface.
- Issue #2167623 by danilenko_dn, sidharthap, Nitesh Sethia, krishnan.n, aitiba, alexpott, ashwinikumar, Barrett, damiankloip, deepakaryan1988, foxtrotcharlie, ianthomas_uk, neetu morwani, nonsie, piyuesh23, Sharique, sivaji, sushantpaste, swentel, vijaycs85, YesCT: Add test for all default configuration to ensure schema exists and is correct.
- Issue #2177739 by Berdir, alexpott, Gábor Hojtsy: Fix inefficient config factory caching.
- Issue #2047633 by pwolanin, dawehner, kim.pepper, Xano, amateescu, tim.plunkett: Move definition of menu links to hook_menu_link_defaults(), decouple key name from path, and make 'parent' explicit.
- Issue #2164367 by alexpott, tim.plunkett, dawehner: Rebuild router as few times as possible per request.
- Issue #2167109 by Berdir, sun, alexpott, ACF, acrollet, adamdicarlo, Albert Volkman, andreiashu, andyceo, andypost, anenkov, aspilicious, barbun, beejeebus, boombatower, cam8001, chriscalip, chx, cosmicdreams, dagmar, damiankloip, dawehner, deviance, disasm, dixon_, dstol, ebrowet, Gábor Hojtsy, heyrocker, Hydra, ianthomas_uk, japicoder, jcisio, jibran, julien, justafish, jvns, KarenS, kbasarab, kim.pepper, larowlan, Lars Toomre, leschekfm, Letharion, LinL, lirantal, Lukas von Blarer, marcingy, Mike Wacker, mrf, mtift, mtunay, n3or, nadavoid, nick_schuch, Niklas Fiekas, ParisLiakos, pcambra, penyaskito, pfrenssen, plopesc, Pol, Rok Žlender, rvilar, swentel, tim.plunkett, tobiasb, tsvenson, typhonius, vasi1186, vijaycs85, wamilton, webchick, webflo, wizonesolutions, xjm, yched, YesCT, znerol: Remove Variable subsystem.
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.
- The 10th annual Google Summer of Code is coming up, and this post explains to help Drupal participate. Have project ideas that would be cool for a student to work on for 3 months during the summer, especially around Drupal 8? Add 'em to the GSoC 2014 Idea Wiki! There's some urgency around this if we want to be accepted as a mentoring organization; applications are due Feb. 14!
- Chris Hall put together a great run-down on how Controllers work in Drupal 8. As a nice complement, Wizzlern also put together some diagrams and explanation of the overall page call process in D8 to better understand where controllers fit.
- In Podcast Land™, there were a few things happening Drupal 8-wise. Modules Unraveled spoke to Théodore Biadala on D8 API changes, and on the Drupal Easy podcast, Tim Plunkett talks Views in core, CMI, and a prediction on when we might see a Drupal 8 beta.
- Joe Shindelar from Drupalize.me created some nice D8 tutorials, including run-down of CMI for developers and Getting Started with Forms in Drupal 8. Both include helpful videos, as well!
- Jo Fitzgerald from ComputerMinds has started a tutorial series on creating a custom field type. You can read part 1, covering the basics of field definitions and part 2 on field widgets.
- In Palantir's continued blog series "D8FTW", Larry Garfield writes about improvements to how breadcrumbs are handled in D8.
- And finally, Lin Clark has continued her video series on Drupal 8's new REST API with DELETE requests and Cookie authentication and Using Basic authentication.
Drupal 8 in "Real Life"
- Feb. 14 - 17: Drupal South in Wellington, New Zealand features a keynote by Larry Garfield of WSCCI fame, larowlan and kim.pepper answering everything you you wanted to know about Drupal 8 but were afraid to ask, as well as sessions on Twig, Tour, and more!
- Feb. 28 - Mar 2: Two events happening simultaneously, DrupalCamp Phoenix and DrupalCamp London have some nice Drupal 8 session proposals, including CMI, multilingual, and more!
- Mar. 24 - 30: Drupal Developer Days Szeged is going to be the Drupal 8 event of the next months, with a full week of sprinting awesomeness and lots of D8 content. See Five good reasons to register for Drupal Dev Days Szeged now by Gábor Hojtsy for more details.
- Mar. 28 - 30: If you'd like to collaborate with DevDays Szeged sprinters, but are looking for something in the western hemisphere, check out MidCamp. MidCamp is March 28-30, and there may also be a pre-sprint March 26-27. Contact ZenDoodles for more information.
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!