Accessible Content and QUAIL 2.0

Events happening in the community are now at Drupal community events on www.drupal.org.
Anonymous's picture

After a few years hiatus from Accessible Content to pursue other things, the QUAIL project has moved on to version 2.0, and so too must the Accessible Content module.

QUAIL

First, some news about QUAIL. As you may have noticed on the QUAIL website, I've been working on a complete rewrite of QUAIL. Namely, the project is now a jQuery/Sizzle plugin, rather than a native PHP library. Originally, I had meant for the 2.0 version of the project to have both a PHP and JavaScript version that were kept in parallel; however, on a snow-bound train ride back from Drupalcon Denver, I realized that the JavaScript version was a better way to go. First, PHP had DOM performance issues, even with QueryPath, and second, in the old version of QUAIL the project was saddled with having to do crazy things like write CSS interpreters and investigave JavaScript parsing. The move to being a JavaScript project allows us to do more testing for JavaScript and AJAX accessibility, and in general is much faster.

As of today, QUAIL 2.0 is in beta, you can download the latest version (or beta tag) from it's new home on GitHub. There is also pretty good documentation available, as well as examples using Aloha editor and a dummy CMS.

There are already a ton of new tests I want to develop around ARIA specifically, but QUAIL has always been a project focused on helping content editors achieve accessibility within the CMS, so I'll wait until the core of QUAIL is done before stepping into that arena.

Future of the Accessible Content Module

With QUAIL starting to be put to bed, the obvious next step is integrating it with the best CMS in the world. This new version would take advantage of Drupal 7's entity system to solve previous issues surrounding flexible data models, as well as WYSIWYG integration. The following is a list of things I'd like to see this version do:

  1. Improved test management - In the old version of the module, we stored tests as a separate node type. That was kinda broken and in general sucked. By making tests something that a user chose to install, and their own entity type, we can allow tests to be fiedable as well.
  2. WYSIWYG Integration - Now that we run in the client side, integrating QUAIL with as many editors as possible is something I'm really interested in. While some of this is work that is not Drupal-specific, I'd like to see the module expose that work to the WYSIWYG module.
  3. Inline reporting - Instead of only showing accessibility problems on the page while a user edits it, we can instead have a widget on the page that will highlight areas of the page that have accessibility issues. This can help not only content editors, but also themers as well.
  4. Better reporting - Now that we can move tests to being their own entities, I think if users want reporting the best way to do that is with views and the Relation module to join a target entity with a test and then track number and type of erros in the relation entity itself. Relation is a deep rabbit hole, but if we can ship with some default views that will help some.

What do you think?

I'm starting a new 7.x branch of the Accessible Content module today, hopefully in the next few weeks it will be ready and I'll announce it here. Are there any other features you would like to see in the next version of the Accessible Content module?

Comments

On another note

kevee's picture

<pipedream>
I've been using QUAIL along with Casper and PhantomJS for a while now, and it works well for integrating QUAIL into automated testing processes. It might be that we can use this tool to build accessibility testing into the Drupal testbot.
</pipedream>

Great News

bowersox's picture

Hi kevee,

I'm so glad to hear from you and hear that QUAIL and Accessible Content are moving forward. Your list of four ideas for Accessible Content sounds interesting, but my vote would be to first at least get a basic Drupal 7 version out there even if it doesn't have all those whiz-bang features. The sooner the better for promoting use of these tools for accessibility checking in the Drupal 7 universe.

Of all the features you've mentioned, I think the WYSIWYG integration is the most important. On nearly every site, the WYSIWYG is the place that users are perpetually authoring the inaccessible markup. Having a way for them to check and highlight issues right there within the WYSIWYG will close the feedback loop and give them a chance to improve their practices.

Thanks for all you're doing to improve the accessibility of the Drupal ecosystem!

-Brandon

Exactly

kevee's picture

Hi, Brandon. I'm already half-way there with the basics because instead of having to maintain my own CRUD backend, I'm just leaning more on the entity and relation modules to do that heavy lifting. I should have a 7.x-dev branch up within a few days.

That being said, the WYSIWYG integration is something that will straddle the Drupal and QUAIL world. I have a working Aloha plugin, and will probably then work on TinyMCE and CKEditor as well. I'll be reaching out to the WYSIWYG folks to see whether we have an idea of which editors are used the most.

Okay, I agree that

thekevinday's picture

Okay, I agree that client-side javascript is a good way to go, but my mindset emphasizes security and data integrity most of the time.

I believe client-side javascript for user-convenience and off-loading processing to clients is a must.
I also believe that server-side should still have a processing method because client-side data can never be trusted.
That said, the server-side will probably be a separate module that will be my problem to create and maintain.

Using fieldable statistics is a good decision.
It allows us to instantly support other 3rd-party modules without having to spend time and resources on that support.
This means it will be simpler to do things like add rules integration support and give the site admin more control on how to react and handle validation. For example, I use validation to enforce workflow publishing, if some node has any major issues, then it gets pushed into a Needs Work workflow state instead of Published.

In terms of wysiwyg and inline reporting, the wysiwyg world is in the process of an important transition to inline editing.
A very good example is that of ckeditor 4 (which, I think, is now officially released). The inline reporting should work along-side this, and probably without interefering. So, additional checks/tests will need to be made to only show inline reporting when inline editing is off.

In terms of data reporting...
Early on drupal 7 had a serious of problems with not have any complete/functional chart/graphs/statistics modules.
That has since changed, but now there are quite a few choices.
I suggest the front-end reporting/processing/drawing code be implemented as a separate module so that different projects can be chosen at the users discretion.

While I agree in not trusting

kevee's picture

While I agree in not trusting the client side, there are just so many different things that we can't capture on the server side that it was making the project difficult to maintain (like a CSS parsing engine). However, the client-side nature of the project means that we can show accessibility problems as users create content, or when browsing the site. QUAIL won't be used to send any data back to the server, or to pre-process any data, so that renders this concern kinda moot.

The inline editing should "just work" as it will use the already-developed plugins for TinyMCE/Aloha/CKEditor.

I was afraid QUAIL had been

cb's picture

I was afraid QUAIL had been abandoned, I was watching it on GitHub. We use the older version for some internal testing.

I'll be sure to check out the Beta this weekend and let you know how it goes.

Nice work! :)

Accessibility

Group notifications

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

Hot content this week