How I commit to WordPress

This past week at WordCamp US in Portland, a group of core committers gathered one day after lunch to discuss our individual workflows for committing to core.

As you might expect, everybody works and organizes things a bit differently and so we were encouraged to share our individual workflows.

A few have already shared:

And now here’s mine.

Development environment

As a recently-emerged-from-emeritus-status core committer, my local development environment is, on the whole, vastly different today than it was “back in the day” when I was a lot more active.

So for its latest iteration, I’ve opted for a subversion checkout of the core development package and I’ve leveraged the built-in docker environment that ships with it. Easy peasy.

git and svn and git-svn, oh my!

I know some committers like to use git for development alongside subversion or even git-svn for the actual commits, but I’m comfortable with doing everything in subversion so that’s all I’ve been using lately.

I did a subversion check out and started up the docker development environment inside it.

Applying patches

I was delighted to discover that grunt patch is still available from the old days in the core development package, so that’s what I am still using to apply patches from Trac or GitHub:

grunt patch:123456
grunt patch:https://github.com/WordPress/wordpress-develop/pull/6880

If for some reason I have a local patch file, I’ll simply apply it with:

patch -p0 < whatever.diff

Reviewing changes

To see changed files I prefer to quickly check in the terminal with svn stat -q

To review changes, I’ve had an alias called changes set up for ages that I use quite a lot to generate a local diff and open it. Nothing terribly complicated:

alias changes="svn diff > changes.diff; open changes.diff;

Committing

As I mentioned, I’ve opted to stick with vanilla subversion for this go-round.

While I do sometimes find myself missing git’s “patch mode” as an easy way to review what’s being changed in the moment right before commit, using my changes alias just before commit has about the same utility.

I’ve got TextMate set up as my terminal editor, and thus calling svn commit will launch a TextMate window for me to write the commit message:

Component: Commit message.

Props ...
See/Fixes #123456

That’s about all there is to it.

Jazzy Generator Tag v5.6.0 has been released

Tonight I released Jazzy Generator Tag 5.6.0, adding support for WordPress 5.6.

If you’re unfamiliar with Jazzy Generator Tag, it’s a silly little plugin I wrote a couple of years ago to zhuzh up the generator tag that gets added to the HTML source advertising the installed version of WordPress.

The plugin filters the standard “WordPress 5.6” (or whatever string) to include the jazzer for the currently installed version.

For WordPress 5.6, the jazzer was Nina Simone. So the generator tag running on WerdsWords right now reads, “WordPress 5.6.1 to the sounds of Nina Simone.” Go ahead, check out the source and take a look!

Accessibility in Gutenberg is not a one-more feature

Joe Dolson, one of the WordPress Accessibility team reps posted a letter on make/accessibility this afternoon that really struck a chord with me. In detail, the letter outlines the Accessibility team's perceived shortcomings of Gutenberg. the new block editor set to ship in a few weeks with WordPress 5.0.

In reading the letter, I was struck by a key theme that Joe so eloquently expresses: making something technically accessible doesn't automatically make it a good experience for the users it serves to assist.

He went on to detail several issues, but the one that really stuck out to me had to do with using keyboard navigation to access a block's settings to change the font size of some selected text (emphasis his):

1. Press Ctrl + ` four times to locate the block settings.

2. Press tab five times to reach the font size selector. Discover the usage of the non-standard selector dropdown (normal selector: arrow key down to desired value, press enter to select, tab through rest of document. This selector: Enter  to expand dropdown, tab key to choose desired value, Enter to select that value, esc key twice to exit selector.)

3. Press tab six times to locate skip link back to selected block.

4. Press Enter  to activate the selected block.

5. Press tab thirteen times to reach the editable text of the block.

The above navigation scheme required 34 separate keyboard stops in order to change the font size of the selected text and return to the previous position, and is aided in efficiency by the tester’s prior knowledge of how to navigate the process. (Tested in Chrome and in Firefox using NVDA.)

We want to be clear that the above example is not comparable to the options available in the classic editor – there is no mechanism for increasing the font size of a paragraph in the existing editor.

Joe Dolson, Report on the Accessibility Status of Gutenberg

Even with the final concession that there is no comparable feature for changing the font size of a paragraph in the classic editor, I'm not sure this is considered an improvement. Maybe for users who don't have to do it with a keyboard? Yikes.

As a core developer, I'll admit that I've been relatively silent on Gutenberg and the 5.0 release until now.

I don't hate Gutenberg. In fact, the idea of Gutenberg is awesome, even inspiring. This post was written using Gutenberg. It represents the opportunity for a giant leap forward for content authoring in WordPress, and frankly I don't think anybody really disagrees with that assertion when it's just an idea.

When Gutenberg becomes more than an idea, however, when it's real and out there in world, that means something to a lot of people who look to WordPress to set the example. It sends a powerful message to 32% of the web: "this is the new standard."

Please let's not make the "new standard" be that we're willing to ship technically accessible but perhaps not entirely usable-for-all features; let's not define it as one that sacrifices standards core to the WordPress experience in the name of perceived expediency; let's not define it as the new default authoring experience for all users when not all users can use it well.

The WordPress philosophy states deadlines are not arbitrary. That's fair, that's something we live by. Core standards are not arbitrary either, and accessibility is a not a one-more feature.