Tuesday, 29 May 2007

Poor Web Standards in WebCT Content/Learning Modules

One annoyance we've encountered a number of times with WebCT (both our "old" WebCT 4 Campus Edition and "new" WebCT Vista) is its surprisingly poor support for basic web standards in its Learning Modules (formerly known as Content Modules).

For those who are unaware, a "Learning Module" is essentially a bundle of learning materials that WebCT aggregates into a tree structure for easy navigation. At its simplest, this allows you to build up some kind of structure from a bunch of disparate standalone resources such as PDF files, PowerPoint presentations, images and suchlike. At its richest, it allows you to build complex learning structures from linked hypertext resources like HTML files. It's at this end of the spectrum that significant flaws start to appear in WebCT's delivery of these modules.

The content we deliver in Physics 1A is highly granular in nature with a lot of links to related material. The core of the matherial is highly mathematical in nature and is deployed in standards compliant XHTML+MathML using our Aardvark Course Content Management System.

While we found it easy to get WebCT to deliver "single pages" of this type of content, we soon realised it was impossible to properly use this type of material inside Learning modules.

How WebCT Learning Modules Work

WebCT classifies content inside Learning Modules as either:
  1. "HTML"
  2. Not "HTML"
Both types of content can be added to the module's Table of Contents but WebCT does different things with them:
  1. HTML content is dynamically altered as it is delivered to add in some JavaScript and rewrite hyperlinks so that the WebCT navigation and breadcrumb frames are all updated correctly. Unfortunately, WebCT does this in a bizarrely cack-handed fashion and breaks all standards-compliant HTML or XHTML in the process. Most people don't notice this as most of the web is made of broken HTML and browsers are therefore very good at handling this kind of stuff by going into something usually called "quirks" mode. But this is a showstoper for us as our mathematically rich content must be delivered as well-formed XHTML+MathML in order for browsers to render it correctly. (It also doesn't help in making your content accessibile).
  2. Non-HTML content is delivered unchanged by WebCT so doesn't get mangled like HTML content and actually displays correctly. However, hyperlinks followed from these pages do not correctly update the WebCT navigation and breadcrumb frames and, for complex bodies of material like ours, this is a huge usability flaw.
As a result, we ended up having to recreate the Learning Module functionality using a lot of client-side JavaScript trickery and link to it from WebCT. (A positive outcome from this is that our content can be deployed to any web server as a rich, fully integrated frameset without requiring any server-side software, which is actually quite nice.)

If you reflect about this for a minute though, this situation is actually absurd: a web-based Virtual Learning Environment that claims to be serious about supporting standards can't even support the most basic web standard - HTML - correctly. The sad thing is, it would be reasonably easy for WebCT to be a bit more sophisticated about its HTML handling and fix this issue. Let's see if it ever happens...

More details on this issue can be found at a short note we wrote.

No comments: