1 of 50

@alleyco

2 of 50

Gutenpocalypse Never:

How to Build Accessible Sites in WordPress Using Gutenberg

Kevin Fodness, PhD

Director of Software Development

Alley

@alleyco

3 of 50

About Me

  • Director of Software Development at Alley (https://alley.co), a ~75 person, fully-remote, full service digital agency
  • Focus on JavaScript + PHP + WordPress
  • PhD in Science and Technology Studies from RPI
  • Authored a Dissertation on Web Accessibility
  • Building Gutenberg-first websites for two years
  • Worked from home pre-pandemic
  • Father of four

@alleyco

4 of 50

Roadmap

  1. Accessibility Issues at Gutenberg Launch (December 2018)
  2. Current State of Gutenberg Accessibility
  3. Using Accessibility Controls in Default Blocks
  4. Building Accessible Custom Blocks

@alleyco

5 of 50

Accessibility Issues at Gutenberg Launch

(December 2018)

01

@alleyco

6 of 50

Gutenberg Timeline

  • December 3, 2016 - State of the Word - Gutenberg announced
  • February 3, 2017 - Initial commit in Gutenberg plugin repo
  • October 9, 2018 - Rian Rietveld, a11y lead for WordPress, resigns
  • December 6, 2018 - WordPress 5.0 released, bundling Gutenberg
  • January 15, 2019 - WPCampus-sponsored a11y audit by Tenon begins
  • May 1, 2019 - Tenon’s a11y audit released, results are bleak
  • August 11, 2020 - WordPress 5.5 released with Gutenberg 8.5

@alleyco

7 of 50

Run-Up to Launch

@alleyco

8 of 50

“On October 3rd, the schedule for WordPress 5.0 was proposed. Prior to this, the accessibility team had not been made aware of a release time frame, and had no reason to believe WordPress 5.0 and the Gutenberg editor were under time pressure. The schedule proposed a release date of November 19th – 6 weeks from the announcement date.”

— Joe Dolson

https://make.wordpress.org/accessibility/2018/10/29/report-on-the-accessibility-status-of-gutenberg/

@alleyco

9 of 50

“The codebase of Gutenberg is difficult for all of us, because no one in the wpa11y team is a skilled React developer. So it was hard to implement changes and write PRs ourselves. What we could do is test, tell what’s wrong and what it should be and hope a developer would pick it up.”

— Rian Rietveld

https://rianrietveld.com/2018/10/i-have-resigned-the-wordpress-accessibility-team/

@alleyco

10 of 50

“The results indicated so many accessibility issues that most testers refused to look at Gutenberg again.”

— Rian Rietveld

https://rianrietveld.com/2018/10/i-have-resigned-the-wordpress-accessibility-team/

@alleyco

11 of 50

Key Problems

@alleyco

12 of 50

Inadequate accessibility knowledge

among React developers

+

Inadequate React knowledge

among accessibility team members

@alleyco

13 of 50

Release date held firm despite

not meeting accessibility commitments

@alleyco

14 of 50

Accessibility focus on

individual blocks and components

rather than

the entire system

@alleyco

15 of 50

WPCampus / Tenon Audit

@alleyco

16 of 50

“For the most part, the markup generated from the Gutenberg editor is clean, semantically correct and accessible.”

https://documents.wpcampus.org/gutenberg/audit/Gutenberg_Executive_Summary.pdf

@alleyco

17 of 50

“Based on the data shown in the table above, Gutenberg has an average of 5.6 issues per component. This places Gutenberg in the top 30% worst performing products tested by this same team of testers.”

https://documents.wpcampus.org/gutenberg/audit/Gutenberg_Executive_Summary.pdf

@alleyco

18 of 50

“Overall, Gutenberg’s user experience

is consistently poor”

https://documents.wpcampus.org/gutenberg/audit/Gutenberg_Executive_Summary.pdf

@alleyco

19 of 50

“Gutenberg has significant and pervasive accessibility problems, the likes of which amount to a step backwards for users with disabilities over the legacy editor.”

https://documents.wpcampus.org/gutenberg/audit/Gutenberg_Executive_Summary.pdf

@alleyco

20 of 50

“Please use this report as what it is intended to be: constructive feedback in support of the WordPress project. We hope this report generates discussion about accessibility, excitement about inclusive design, and action toward improving the editing experience.”

https://www.wpcampus.org/blog/2019/05/gutenberg-audit-results/

@alleyco

21 of 50

Current State of Gutenberg Accessibility

02

@alleyco

22 of 50

5 WordPress releases

since Tenon audit

(5.0 => 5.5)

@alleyco

23 of 50

84% of a11y issues in Gutenberg repo closed

(1136 closed, 217 open)

@alleyco

24 of 50

74% of a11y issues from Tenon audit closed

(62 closed, 22 open)

@alleyco

25 of 50

Accessibility is a

continued priority for the Gutenberg team

@alleyco

26 of 50

It’s not perfect.

@alleyco

27 of 50

...but it’s much better

than it was at launch.

@alleyco

28 of 50

I’m not a lawyer.

@alleyco

29 of 50

Using Accessibility Controls in Default Blocks

03

@alleyco

30 of 50

Default blocks are typically very accessible

@alleyco

31 of 50

Use default blocks whenever possible

@alleyco

32 of 50

Use Block Controls in the Sidebar

@alleyco

33 of 50

Image Block: Use Captions

@alleyco

34 of 50

Image Block: Add Appropriate Alt Text

@alleyco

35 of 50

Audio & Video Blocks: Use Captions

@alleyco

36 of 50

Audio & Video Blocks: Use the Defaults

@alleyco

37 of 50

Headings: Use Info Panel to Verify Hierarchy

@alleyco

38 of 50

Tables: Use Header, Caption, Footer (if necessary)

@alleyco

39 of 50

Tables: Use Header, Caption, Footer (if necessary)

@alleyco

40 of 50

Links: Don’t Open in a New Tab!

@alleyco

41 of 50

Follow a11y best practices!

@alleyco

42 of 50

Building Accessible Custom Blocks

04

@alleyco

43 of 50

Create all custom blocks as “dynamic blocks”

@alleyco

44 of 50

Follow general a11y best practices

in the editor + front-end

@alleyco

45 of 50

Use built-in Gutenberg components

(don’t roll your own)

@alleyco

46 of 50

Leverage InnerBlocks for repeatable content

@alleyco

47 of 50

Don’t use metaboxes

(use Document panel SlotFills)

@alleyco

48 of 50

Don’t let editors make a11y mistakes

(e.g., color contrast)

@alleyco

49 of 50

Contribute to the project on GitHub!

@alleyco

50 of 50

Thank You

@alleyco