Four short links – May 11, 2018

ADU legislation, pro-housing density efforts, software eats retail, and PDX exploring.

  1. ADU Legislative Initiatives Abound (Kol Peterson) — While Senate Bill 1051 is requires all cities to “allow ADUs”, the Oregon Department of Land Conservation and Development guidance recommends dropping owner occupancy requirements, dropping off street parking requirements, allowing detached ADUs up to 800 sq ft by right, and even allowing two ADUs.
  2. ‘My Generation Is Never Going to Have That’ (POLITICO)— Pro-housing density efforts in Seattle from the affected tech population. See also Jeff Kaufman (Boston) and Kevin Burke (California).
  3. Mickey Drexler and the death of a supply-driven world (Loose Threads) — Software eats retail: how J.Crew, Gap, Ralph Lauren, Abercrombie & Fitch, American Apparel, and others were blindsided by technology.
  4. Pedaling from Portland to Hood River (Bike Portland) — Neat 100 mile bike route off the beaten path.

Getting your site ready for Gutenberg

Still need guidance getting your site ready for Gutenberg?

On Tuesday, June 5th at 10 am PT, I’m heading up a webinar with Pantheon to cover how you can get your site ready. More specifically, we’ll cover:

But wait, there’s more! The webinar is just one in a series of five, including Mel Choyce and Josh Pollock. You should sign up so Tessa and I aren’t terribly lonely on June 5th.

Gutenberg and the REST API, early May

This post originally appeared on make.wordpress/core.

Since I last wrote two weeks ago, we’re making progress! Key achievements for Gutenberg and the REST API include:

  • Support for who=authors was added to GET wp/v2/users, making it possible to accurately query for authors. WordPress, for better or for worse, defines an author as user_level!=0. See WordPress/gutenberg#6361 for the context on why we can’t add this logic client-side (#42202 for WordPress 4.9.6).
  • Improved performance for the _fields= query parameter (e.g. GET wp/v2/pages?_fields=id,title) by ensuring WordPress core will only process the fields requested for the response. Notably, this helps us avoid running the_content when we don’t need to be (#43874 for WordPress 4.9.7).
  • Minor enhancements to reflect existing WordPress behaviors:

The “Merge Proposal: REST API” GitHub milestone represents the distance we still need to close. Slowly, steadily, we’re bridging the gap, but we could use your help. Here are some of the issues we’re still working through:

  • To ensure all necessary data is available to Gutenberg, we’ve settled upon permitting unbounded per_page=-1 REST API requests for authorized users. This landed for GET wp/v2/users (WordPress/gutenberg#6627), is in-progress for GET wp/v2/(pages|blocks) (WordPress/gutenberg#6657), and needs to be addressed for categories, tags, and custom taxonomies. We also need to patch core with this enhancement (#43998 for WordPress 4.9.7?)
  • Capabilities can’t be processed directly client-side (WordPress/gutenberg#6361), so we’ve introduced a new targetSchema concept to communicate which actions a user can perform. See it in action with wp:action-sticky (WordPress/gutenberg#6529) and wp:action-assign-author (WordPress/gutenberg#6630). There are a few other actions we will need to work out, and then we’ll need to patch core (no ticket yet).
  • Adam is putting together an improved autosaves implementation (WordPress/gutenberg#6257) that I literally cannot wait to see complete. I’m sure he could use some help testing in the near future.
  • Felix is implementing a WP_REST_Search_Controller endpoint (WordPress/gutenberg#6489) to power the link search UI.

Join us tomorrow, Thursday, May 10 at 17:00 UTC in #core-restapi office hours if you’d like to chat through any questions you have.

Welcome Back to the Village

Strava is a social network, but you can pay for premium features. When someone asks me, “Is paying Strava worth it? What premium features do you like?” I answer, “I could care less about the premium features. I need Strava to exist.”

While the value that Strava the social network provides me is undeniable, Strava creates another construct. The humans who choose to be there are bound together by a shared purpose that I see each time I ride my bike. I often stop at the side of the road and get off my bike for a quick drink or bite. As other bikers pass, it is normal for total strangers to stop their ride and ask, “Hey are you ok?”

See, Strava built a village.

Michael Lopp – Rands in Repose

Your help wanted: Gutenberg Migration Guide

This post originally appeared on make.wordpress/core.

Happy Thursday 🙂

I’ve started a new crowdsourcing project, the Gutenberg Migration Guide, to document WordPress Classic Editor customization points and their Gutenberg equivalents (if such exist).

For example, the media_buttons action is a common way to add a button atop the editor:

Its Gutenberg-equivalent is the Block Inserter. Converting a media button to the Block Inserter requires registering a block type. And now we have a corresponding page for developers to reference.

media_buttons is only one of the many ways the Classic Editor can be customized. Wouldn’t it be great if there was a database covering all of them?

This is where you come in! Take a look through the Gutenberg Migration Guide. For each action, filter, and so on, we’d like to document real-world examples of how they’ve been used. Then, for each of those real-world examples, identify how the feature might be replicated in Gutenberg.

Have a new hook to suggest or question to ask? Please open a new GitHub issue and we’ll get it sorted.

Summary of Gutenberg Plugin Compatibility Database results to date

A quick run-through of where we’re currently at with the Gutenberg Plugin Compatibility Database.

Since announcing the database on March 1st, 70 people have been granted testing status. However, of 5000 total plugins, we’re still at 4139 untested plugins. No companies have stepped up to contribute a significant amount of person-hours.

Of the 861 tested plugins:

  • 219 (25.44%) are compatible.
  • 518 (60.16%) are likely compatible.
  • 25 (2.9%) are likely not compatible.
  • 39 (4.53%) are not compatible.
  • 60 (6.97%) are in “testing”, which means someone started test and abandoned the process.

Notably, this data is largely biased by the “likely compatible” results. For the most part, these are plugins I pre-screened (e.g. caching plugins) prior to March.

In the original data set, 18 (28.125%) of the 64 incompatible and likely incompatible plugins were updated in the four weeks prior to March 1st. This means the majority are on slower development cycles.

Of the 64 incompatible and likely incompatible plugins, the reasons include:

  • Missing Add Media and TinyMCE buttons (NextGen, WPForms, Formidable, FooGallery, Page Scroll to ID and others).
  • Missing QuickTag buttons (Quick AdSense).
  • Meta box doesn’t display at all (Page Links To, Revision Control).
  • Semi-live preview of SEO title doesn’t work in Gutenberg (All In One SEO).
  • Custom Short or Long Product Description fields don’t appear at all (WooCommerce).
  • Featured thumbnail previews aren’t being generated (Auto Post Thumbnail).Whitescreen of death (qTranslate X, CKEditor).
  • Registers a CPT with editor support that doesn’t include show_in_rest=>true (Portfolio Post Type)
  • Adds section to Media Library that isn’t displayed in Gutenberg (Add From Server).
  • Access restriction from plugin not applied in Gutenberg (Advanced Access Manager).
  • Specifying custom gallery image links isn’t applied in Gutenberg (WP Gallery Custom Links).
  • Doesn’t log changes made in Gutenberg (WP Security Audit Log).

Next steps are to be determined. “Try Gutenberg” represents an opportunity to generate more data (out of support forum requests). However, we need a workflow for capturing that data.

Touring a basement conversion ADU in Portland

Last Thursday, as a part of Design Week Portland, I had the chance to tour this basement conversion ADU (accessory dwelling unit) off NE Prescott:

It was pretty cool! From the outside, you’ll notice both sliding glass and French doors where garage doors used to be. This is because it’s a basement and garage conversion ADU.

In case you aren’t already aware, ADU is shorthand for adding a second living space (bed, bath, and kitchen) to a residential property. ADUs can be inside the existing structure or somewhere else on the property (space-permitting).

More generally, ADUs are neat because they open up a number of opportunities:

  1. In communities without new land to build on, ADUs can be cost-effective infill housing.
  2. ADUs make homeownership more attainable by adding cash-flow to cover the mortgage.
  3. For seniors wanting to downsize, ADUs can offer a “downsize in place” option that lets them stay within the community.

Here’s a pano of the immediate interior:

The developer, Kol Peterson, has been building and consulting on ADUs for almost a decade now through his company, Accessory Dwelling Strategies. He’s also written a book, Backdoor Revolution, that’s incredibly informative and information-dense. I’m already at page ~150.

As far as building an ADU in our house goes, I’ve already discovered what Kol identifies in the book as a classic regulation blocker:

(5) In addition to the parking spaces required in TDC 73.370 for the detached single-family dwelling, one paved on-site parking space shall be provided for the accessory dwelling unit and the space shall not be within five feet of a side or rear property line.

In short, we need a three car driveway in order to permit an ADU. But, we only have two slots and there’s no place to put a third. And, ironically, our neighbor can park six cars in their garage, driveway, and street just fine.

Incentives matter

The tech sector’s obsession with user engagement is like quantifying health by measuring total calories consumed.

In case it’s not obvious: this is a bad thing. Let the renewal begin.