DOKK Library

SCORM 2.0: Break it up, make it easier, and encourage accessibility.

Authors Philip Hutchison

License CC-BY-SA-3.0

Plaintext
SCORM 2.0:
Break it up, make it easier,
and encourage accessibility.
A white paper by Philip Hutchison

August 15, 2008

http://pipwerks.com
philip@pipwerks.com




Break it up
Face it: SCORM 2.0 will never please everyone. As with SCORM 1.x, some people will find
SCORM 2.0 lacks important functionality, while a majority will feel it is overly complicated.

I believe the best approach is to break SCORM into clearly defined modules or levels, of which only
the first level should be mandatory. LMS vendors should have the option to implement the higher
levels based on client demand. SCORM should also include an open-source plugin framework
that allows developers to enable custom functionality for handling pedagogical and/or
technological approaches not covered by the base SCORM spec.

Proposed levels:
Bear with me, as these are just rough concepts and not fully formed at this point; I would love it if
someone could think of catchier names!

       SCORM 2.0 Level 1A: Basic ECMAScript API for Course Interoperability
       SCORM 2.0 Level 1B: Basic Web Services for Course Interoperability
       SCORM 2.0 Level 2: Quizzes and Interactions Module
       SCORM 2.0 Level 3: Sequencing and Navigation for Aggregated Content
SCORM 2.0: Break it up, make it easier, and encourage accessibility                       Philip Hutchison


Level 1A: Basic ECMAScript API for Course Interoperability
The most commonly used feature of SCORM is the API that enables communication between a
course and an LMS. The other SCORM features don’t even come close in terms of popularity and
acceptance.

The majority of e-learning developers simply want to know that their course will work on any LMS
without customization; they aren’t interested in working with content aggregation or sequencing,
and they tend to use commercial software that packages their courses as self-contained
standalone SCOs.

In my mind, these developers are the working class of the e-learning industry. Many of them don’t
have the time, funding, or technical skills to dig into content aggregation theory; all they know is
that they bought a ‘rapid e-learning’ development program for a few hundred bucks so that they
can deliver Course X by next Friday. All their boss cares about is that the course is delivered on-
time and that it works in their LMS.

Is this a pessimistic view of the industry? Perhaps. However, it’s also a realistic view based on the
exploding market for affordable e-learning development tools. I find it an exciting example of
democratization in progress: people with no formal background in training or education are
suddenly empowered enough to build an entire e-learning course in an afternoon. Online
education is no longer the sole domain of vendors who charge $10,000 for a recycled cookie-
cutter course.

From a SCORM point of view, the needs of this audience are simple: ensure there is a standardized
method of communication between courses and LMSs. That’s it — no content aggregation or
sequencing, just storage and retrieval of course tracking data. Meeting the needs of this largest
demographic should be a top priority, well above the implementation of shareable content objects.

As far as which technology should be utilized for this task, ECMAScript/JavaScript makes sense;
SCORM 1.x required the LMS to expose the API in ECMAScript, and making implementation pretty
straightforward for commercial e-learning development software vendors. Likewise, all modern
web browsers support ECMAScript, making this task one of the ‘low hanging fruits.’

Having said that, an ECMAScript API is not a perfect solution, and has a few major drawbacks.
This brings us to a second option for enabling course interoperability: Web services.


SCORM 2.0 Level 1B: Basic Web Services for Course Interoperability

Less layers and constriction.
One of the louder complaints about SCORM comes from course developers who develop Adobe
Flash-based courses or other non-HTML-based courseware; they argue that a ECMAScript-based
API is too constricting. They have valid points.

For starters, an ECMAScript-based API requires a web browser (with JavaScript enabled) to act as
a liaison between the course and LMS. When developing with Adobe Flash, ExternalInterface is
required to convert Flash’s ActionScript commands to JavaScript the browser can understand.
This gets complicated, requiring more code (with more potential for errors), and could slow down



August 15, 2008. Released under a Creative Commons Attribution-Share Alike 3.0 license.                 2
SCORM 2.0: Break it up, make it easier, and encourage accessibility                       Philip Hutchison


course response times. It would be easier for these developers if they could communicate with a
server directly, eliminating the JavaScript middleman.

Some developers would like to take this a step further, eliminating the need for a browser
altogether; they’d like to be able to run courseware directly from a desktop application. SCORM
as a web service would allow developers to tap directly into a server via a communication protocol
such as HTTP, Adobe’s AMF, or even something akin to IRQ and instant messaging. They would
be free to use any programming language they like in their courseware, as long as it supports the
whatever communication protocol the SCORM web service uses.

Personally, I think these are great ideas, but I have a completely different motive for supporting
SCORM as a web service: accessibility.

More accessible.
Assistive browsing technology are devices or software such as screen readers, braille displays, and
alternative input devices. These devices enable people with specific physical disabilities (such as
blindness, low vision, deafness, and full or partial paralysis) to access web-based content and
services.

It’s common knowledge that most assistive browsing technology has spotty JavaScript support.
Even for assistive technology devices that have good JavaScript support, users encounter
problematic uses of JavaScript, such as reliance on mouse or keyboard events (mouseover,
mouseout, onclick, onkeypress); users who don’t have a standard mouse or keyboard can have
great difficulty trying to use these web pages. Thus when courseware relies on JavaScript, it is
potentially shutting out a significant number of people who can’t use the same devices sighted or
fully mobile people use.

Over the last few years, the professional web development community has rallied strongly around
the issue, promoting the concept of ‘progressive enhancement,’ which in its simplest terms means
that the content of every web page should be functional and accessible if JavaScript, Cascading
Style Sheets or a browser plugin is unavailable. (In the case of multimedia such as a video, the web
page should provide quality text-based equivalents.)

This has become an even bigger cause célèbre with the advent of Web 2.0 and its reliance on ajax
(JavaScript, xmlhttprequest, and remote content). The basic premise of ajax is that it prevents the
browser from having to perform a postback for every action taken by a user. It’s meant to make a
website site feel quicker and more responsive. While ajax has often added a welcome slickness to
a web page's user interface, it has also had unintended consequences on people who use
assistive browsing devices.

Here’s a simple example of how ajax affects a blind web surfer:

        Before ajax: A blind user with a screen reader loads a web page containing a form. The
        user submits the form, and is redirected to a confirmation page the screen reader can read.
        There is no confusion about what has transpired.

        After ajax: A blind user with a screen reader loads a web page containing a form. The user
        submits the form, and ajax is used to intercept the form submission. Instead of being
        redirected to a confirmation page, the current page simply hides the form and displays a


August 15, 2008. Released under a Creative Commons Attribution-Share Alike 3.0 license.                 3
SCORM 2.0: Break it up, make it easier, and encourage accessibility                       Philip Hutchison


        “success” message in a bright yellow box. Because the screen reader doesn’t know the
        content of the page has been changed by JavaScript, the user is left wondering if the form
        submission was successful.

As you can see from this example (which is a very common scenario), the use of JavaScript can
break the traditional web browsing model, which has trickle-down effects on devices such as
screen reader.

For this example, progressive enhancement proponents would suggest designing the web page to
work the old-fashioned way (using a redirect on successful form submission), then use JavaScript
to enhance the page for sighted users by disabling the page redirect and replacing it with the
yellow box technique. This provides the blind user the opportunity to interact with a fully functioning
site simply by disabling JavaScript.

Sadly, e-learning developers have been excruciatingly slow to adopt the principles of progressive
enhancement. I believe a big reason for this — apart from lack of discussion — is that most e-
learning courseware is delivered in Adobe Flash format or HTML files that depend heavily on
JavaScript for even the simplest of tasks.

This is where the concept of web services for SCORM comes in: if an e-learning course developer
could use a web service that uses a standard HTTP protocol (or similar) for all course-server
interactions, course content pages could be served as standard HTML without requiring
JavaScript. In theory, SCORM could use a stateful web service and eliminate dependence on
framesets and iframes, too. This would be a huge boost to accessibility in e-learning courseware.


SCORM 2.0 Level 2: Quizzes and Interactions Module
One of the other loud complaints about SCORM is its spotty quiz and interaction tracking abilities. I
believe SCORM’s current quiz and interaction functionality is underused, largely because it can be
difficult to implement, and the interaction data is often not reportable in an LMS.

There is a big demand for better quizzing and interaction tracking in courseware. It seems obvious
that if SCORM 2.0 offers a well-designed, easy-to-use quiz system, it will be an instant hit.

There is no need to forcibly tie a quiz and interactions module to any content aggregation or
sequencing module; it would be best suited as a standalone module that can work on top of the
base SCORM framework.


SCORM 2.0 Level 3: Sequencing and Navigation for Aggregated Content
While content aggregation, sequencing, and navigation get most of the buzz in discussions about
SCORM 2.0, I believe they will still wind up being the least-used features, and therefore should be
an optional module.

Don’t get me wrong — I believe in the possibilities of aggregated content as much as anyone —
it’s just that the topic is incredibly complicated, and it’s obvious there’s no easy answer.




August 15, 2008. Released under a Creative Commons Attribution-Share Alike 3.0 license.                 4
SCORM 2.0: Break it up, make it easier, and encourage accessibility                       Philip Hutchison


I do feel strongly that regardless of the model used for aggregation and sequencing, it is of utmost
importance that SCORM remains as flexible as possible, including being neutral regarding
programming languages and file formats.

I don’t profess to have any answers, but here are some scattered thoughts on the topic:

    • Content aggregation should be handled by the course developer’s code (or a service in an
      LMS), not SCORM.
    • Sequencing should be handled by a simple XML-based manifest. SCORM should ensure
      these manifests are standardized.
    • Navigation should be handled by the course developer’s code, based on information
      contained in the manifest. SCORM doesn’t need to specify how navigation works or provide
      code. Keep SCORM simple!
    • SCORM’s content aggregation standards should be programming language-neutral and not
      be too concerned with how the content is aggregated.
        • I’m thinking of all the server-side languages that can be used to generate web pages
          (ASP, PHP, Ruby, ColdFusion, JSP, etc.); regardless of server-side process, all the finished
          products output standard HTML.
        • SCORM should limit itself to ensuring LMS/CMS systems use standardized protocols for
          delivering the content on-demand, and should NOT have an active role in the
          aggregation.
             • HTTP(S) is already a standard communication protocol; do we really need anything
               else?
    • Content aggregated for use in a SCO should be treated as ‘dumb’ content, with no
      expectation of scripting that connects with the LMS, unless the content uses the previously
      mentioned Quizzes and Interactions Module.
        • An exception might be the aggregation of whole SCOs; in these cases, can a content
          aggregation manifest include a nested content aggregation manifest?
        • The types of content that can be aggregated are expanding every day, and utmost
          flexibility should be given to the developer. Locking them into a scripting language
          reduces flexibility.


Make it easier
Standards that are difficult to use don’t tend to last very long; people will look for easier
alternatives, be they hacks or competing standards.

Standards that are difficult to understand are even worse; people will fail to see the point of the
standard and freely ignore its existence.

Some people in the SCORM community make a good point when they say that over-reliance on
existing standards might become a tripping point for SCORM 2.0. Heaven knows the standards
produced by the IMS Global Consortium are absolutely dreadful to implement; the imsmanifest.xml
standard is one of the most dreaded elements of SCORM 1.x.

In some areas, there may not be many standards for the SCORM workgroup to choose from,
especially if when looking for royalty-free open standards. Locking the SCORM workgroup into a
hard and fast “only use existing standards” rule may end up forcing SCORM to adopt less-than-
ideal standards rather than creating their own simpler, targeted, and easier-to-use standards.

August 15, 2008. Released under a Creative Commons Attribution-Share Alike 3.0 license.                 5
SCORM 2.0: Break it up, make it easier, and encourage accessibility                       Philip Hutchison




Regardless, whichever standards are adopted, they should be simplified as much as possible,
made as easy to use as possible, and documented in clear, easy-to-understand language.

The manifest’s destiny
The SCORM user community has clearly declared the imsmanifest.xml file a loser; it’s confusing,
it’s hard to create without the aid of software, and the documentation for it is practically
nonexistent. Simply put, the manifest as we know it has got to go!

If SCORM 2.0 is modularized, folks who don’t use the content aggregation features should be able
to upload a single SCO to an LMS without a manifest. The developer would only need to specify a
few small bits of data in the LMS, such as the name and location of the launch file, the mastery
score percentage (if any), and a few other odds and ends. 90% of the xml in the imsmanifest is
useless for non-aggregated SCOs.

If the consensus is that SCORM should continue to use a manifest file for simple SCOs, I suggest
creating a new manifest XML schema that simplifies the process for all involved.

Standardized API wrapper
Courses that use the SCORM ECMAScript API normally use a ‘wrapper’ that abstracts the API
functions and adds error-checking and conditional logic.

The ADL never standardized the wrapper file itself. Over the years, untold numbers of custom
wrappers have been implemented. This is bad news, because it means each course winds up
using non-standardized function names, variable names and conditional logic in its JavaScript.
This jeopardizes the interoperability of courses, and makes updating or editing someone else’s
scripts that much more difficult.

I propose the creation of a standardized wrapper that follows modern best practices for
JavaScript, including (pseudo) name-spacing, the avoidance of global variables and functions,
consistent error-checking, and legible/sensible naming conventions for variables and functions.

I created my own interpretation of the ADL wrapper using these techniques (available at http://
pipwerks.com/lab/scorm/wrapper/), which, while certainly not perfect, serves as an adequate
example.

Keep it simple
There is a lot of excitement in the e-learning community about the prospects of integrating Web 2.0
technology and concepts into e-learning. Some even discuss abandoning the traditional ‘course’
model that SCORM normally supports in favor of blended, socialized learning. These are great
discussions, but I strongly warn against letting these discussions overwhelm SCORM 2.0’s
development; I suggest keeping the SCORM 2.0 spec as simple as possible, and introduce the
use of server-side SCORM plug-ins to handle whatever new technology e-learning developers wish
to incorporate.

I would hate to see SCORM 2.0 development pushed out by two or three years because of
problems implementing a spec for what may wind up being a rarely used SCORM element. The
more complex the base SCORM standard gets, the more difficult it will be for end users to
implement it. If we ensure the base standard is a simple communication API, the majority of users


August 15, 2008. Released under a Creative Commons Attribution-Share Alike 3.0 license.                 6
SCORM 2.0: Break it up, make it easier, and encourage accessibility                        Philip Hutchison


should be able to use it with little difficulty, and will be satisfied with the result. Then we can
discuss adding additional functionality via modules or plugins.

Following this approach ensures SCORM base will remain lightweight and flexible, and will provide
LMS vendors the option to add whichever plugins their customer base demands. It also provides
developers with an opportunity to design third-party plugins that work with the SCORM standard.

This is the same modular approach used successfully by JavaScript frameworks, object-oriented
programming languages, and even computer operating systems.


Encourage accessibility
I won’t spend much time on this topic since I’ve already expressed my opinion, but I would like to
take a moment to reiterate that the e-learning development community has generally done a
terrible job at making online courses accessible. From the LMS all the way down to the courses,
accessibility is a big problem.

While SCORM isn’t an accessibility standard, I would like to encourage everyone involved with
SCORM 2.0 to keep accessibility in mind when making decisions about SCORM 2.0 features. If
existing standards are adopted for use in SCORM 2.0, try to select standards that are accessibility-
friendly.

Much like ‘going green’ to help the environment, it’s often the little changes you make that have the
most lasting impact. It may mean more work, but in the end it’s worth it.


Final thoughts
My main goal is to ensure SCORM becomes easier to understand, implement and use. Breaking
SCORM into modules is a great way to accomplish this goal; LMS vendors and course developers
can choose to only use as much as they need without the overhead and confusion of a bloated
spec such as the imsmanifest spec.

Providing a plugin architecture or framework would invite greater participation from the
development community, and would prevent the SCORM workgroup from feeling like they need to
have all the answers.

Web services would allow more flexibility for developers, and possibly improve accessibility for
online courseware.

In parting, I would like to thank everyone at LETSI for taking on this project — you’re heroes to
many people. It’s wonderful to know that the public has input on the future of SCORM.

I’m very excited about SCORM 2.0 and can’t wait to see how this movie ends!




August 15, 2008. Released under a Creative Commons Attribution-Share Alike 3.0 license.                  7