It’s time for me to say it, “SCORM doesn’t suck…”

I am a patient man. Slow to anger, slow to annoy. Frankly, some mistake my calm demeanor for apathy. But now they’ve done it. The folks on Twitter (and elsewhere in the community) have made enough comments about SCORM that I’m annoyed. That’s right, I’m actually a little irritated.

I’ve been feeling, lately, like SCORM is my little brother. It’s OK if folks choose to pick on my bro, so long as they are constructive, or at least right. The comments I’ve been seeing lately range from misdirected to out and out wrong.

– @jclarey SCORM? With an M? Gee, I always pronounced it “SCORN.”

SCORM arrrgh. Go To HELL !!

maltido Adobe SCORM Packager!!!

Note: Congrats to @bloggus for catching Adobe in the crosshairs!

Do any of you love SCORM like I do? #sarcasm

Before I dive into a full fledged defense of SCORM, let me say this… I am not an outright fanboy for SCORM. I have implemented both content and LMSs with SCORM, and I understand the hassles intrinsic to the standard. I understand that SCORM can be a complicated problem. I’ll even go off the reservation here, in a way that will likely annoy some SCORM purists with whom we work regularly, and say this, “SCORM 2004’s sequencing and navigation? Well, it pretty much hurts my head.” That’s right, there are pieces of SCORM 2004 that are great. I do believe that it’s better, in total, than SCORM 1.2, but it’s not all hunky dory.

With that context, and with my self-loathing credibility intact, I’ll also say this. SCORM is really well put together. If you doubt that statement, I’ll ask you this… Have you read the specification? Can you really say you know the spec? I challenge you to read it as a software developer… the concepts are well documented. The examples are thorough. SCORM’s API is simple… it has a grand total of 8 methods. Seriously. The vocabulary is publicly defined and direct. Failure to make proper use of the standard is not an admonition of the standard itself!

Has SCORM addressed every possibility? No. Is it iron-clad? No, it’s not. But is it fundamentally sound? Can those who are willing to dig into it implement it in a way that increases interoperability in a dramatic fashion? Absolutely. SCORM has moved eLearning interoperability miles ahead. This is undeniable. Complaints about SCORM’s impact on reusability are also more than reasonable. SCORM has admittedly failed in this regard, but that failure stems as much from the instructional design challenges as it does from SCORM’s technical shortcomings.

So I’m going to ask you a favor, “Ye Olde Basher o’ SCORM”. If you’re gonna go after my little brother, make sure you’re going after the right guy. If you’re complaint is with the standard itself, go ahead and attack the standard itself. (Say, if you think Javascript is an extremely limiting communication technique and webservices would be a better approach.) If that’s your beef, I’ll join in with you.

But if you’ve got a conformant piece of content, and your LMS won’t import it, don’t jump on the standard, jump on your eLearning vendor! When your content won’t report completion in Saba, jump on Saba. If TestTrack is failing to represent SCORM 1.2 rollup effectively, as it is today, jump down my throat. But get it right; go after the right perpetrator.

So, I’ll be inviting the “haters” to this page as I encounter them. Folks who twitter about how SCORM “kicked their cat” or “blew their house down” will be invited to vent… I’m all for the dialogue. And I’m all for the challenges. I’m no SCORM homer, but I’m also prepared to point the finger at the real culprit. As vendors fail to do their job well, we collectively need to understand when SCORM is failing and when vendors are failing.

If you’re a hater, lay it out for all of us in the comments. Let me feel your pain.

  • Dude, you did NOT just name names, did you? Wow. Impressive. I thought *I* was bold. I stand corrected.

    Honestly, I think you know that I’m with you here. I’m no hater of SCORM. It is what it is, as a de facto standard for asynchronous E-Learning content. But it’s also something more.

    We’re all of us — ALL of us — new at this. SCORM is but 10 years old. Even people who were hardcore Authorware and Director CBTers — we’re talking less than 20 years. That’s a long time, but in the long history of learning, we’re all but a blip. Netscape was the prominent web browser when SCORM was even conceived — and that’s just a full three years after there was a “web.”

    Love it or hate it for all its quirks and complexities, SCORM is undeniably successful in making a world filled with organizations interested in learning (okay, even if we limit it to “training”) that standards are not only important, but have a profound impact on them.

    I think as customers begin to school vendors and standards bodies and thinkers and tinkerers with new learning activities that span the digital medium — and the more these activities become “common” requests, the acceptability of an engaging spec that meets a shared set of needs will be a lot more attractive.

    As a global community, learning technologists have come a long way in ten years. In two more years, it’s likely to be radically different… again.

  • Adrián Murillo

    Certanly SCORM is not perfect. However, I remember 10 years ago, when I had to integrate content with an LMS it was true hell come to life (even with AICC it was a pain)…

    It’s still hard sometimes, but not even close to what it used to be in those “good” old days.

    Now, most of the time I see people having SCORM troubles, the cause is very simple: they just don’t really take the time to learn it.

    It’s not easy, it’s not straightforward, and it isn’t quick, but if you work with something, you must really get to understand it. Even if you use wrappers, generators, and such.

    It took me a few months my first time (some 8 years ago), to get acquainted with SCORM (1.1 at that time). Now, I just see the differences and adjust the content accordingly.

    Mi advice: take the time and study it, until you feel at home with it. You’ll have a lot less problems in the future.

  • My, aren’t you the bold one, Tim? Leading off with my in-depth commentary (but not bothering to let me know that’s what you planned to do).

    Considering that I tweeted you to say I didn’t hate SCORM so much as try diligently to avoid the waste of effort it’s been, in what I said was my admittedly limited exposure to it, I don’t think I’m really cast well in the role of Opening Villain.

    If you recall, I suggested you direct-message me if you wanted feedback at more that 140 characters. You didn’t, so I assumed you had better things to do.

    It seems like you were already halfway up San Juan Hill, defending the honor of SCORM. That’s fine; I just don’t see that as much of a discussion.

    The “spend time with it” argument is pretty much true for any endeavor on earth, including translating Shakespeare into Esperanto. That doesn’t mean the endeavor is worth everyone’s time.

  • I’m with you 100%, Tim. SCORM is not perfect (I’ve been very vocal on that point), but I think too much blame is aimed at the standard.

    Most of the complaints should be aimed at incomplete implementations, including poor LMS implementations and general hackiness on the part of course development tools.

  • I’ll admit, I’m as guilty as some at cursing out SCORM when the fault truly lies with poor implementations of the standard, however I do think there is a reason, or reasons, SCORM draws such ire.

    Thankfully, the API is not one of them – as you point out, Tim, there are a grand total of 8 calls and there are some wonderful implementations of the client side of said API ( among them, if not at the forefront.)

    The 8 calls could be said to be a bit obfuscating, though, as they are used to store a myriad of data – is a SetValue command for lesson_status the same as the SetValue command for interaction data since they use the same javascript function? As pointed out, this simply requires a reading and understanding of the specification, but let’s not oversimplify.

    I do think the packaging specification, especially for SCORM 2004, is complicated to the point of arcanity. I understand it needs to be this way to support the sequencing capabilities, but a basic SCORM 2004 manifest can quickly become more complex than an XML/HTML output from Office 2003. Again, I understand it’s this way to support advanced capabilities, but I’m a coder, and it truly does “hurt my head” sometimes.

    And that gets me to my core point – my main “beef” with SCORM is that I really don’t WANT the sequencing and objectives and all the stuff that adds to the complications. I rolled out 100+ online modules this past year to 50,000+ users, each module used SCORM to interface with the LMS and ALL of them are single SCO, SCORM 1.2 modules. I found early on that I (and my instructional designer(s)) wanted FULL control over the sequencing of the modules, and more importantly the EXPERIENCE of that sequencing, more than SCORM 1.2 or 2004 affords me in any current implementation on any of the many LMSes that I’ve played with. . .

    In my dark times, I sometimes think the idea of turning over sequencing, and by extension sometimes the menu, to an an outside process is antithetical to the experience of learning. And maybe, just maybe, all the complexity needed to support all the great features (aside from the RTE) is WHY the implementations are problematic and inconsistent.

    I’ve gone on too long and probably made little sense. I have to say I’d be lost without SCORM and I admit that my criticisms may in fact be born of lingering frustration with implementations rather than the spec itself. . .

    (And keep up the good work.)

  • ethan

    Amen, i think most problems happen in how the lms interacts with the cmi data in the other areas of the lms. For example I was dealing with Pathlore last week. The client has it configured to expect a fail when one of the tests in the content is failed. They also expect the user to retake ALL the content if they fail, rather than just the test.

    Since we do one large sco (in this particular deployment because 2004 is not supported) that has many lessons and tests we never set the status to failed. We keep it incomplete and give them the ability to retake the scored sections to get a passing score then set the course to complete. This avoids them having to go through all the content.

    Both parts are following the standard but different expectations of course design conflicted. What I find often is the client has an expectation of perfect scorm support in their LMS’s and i have to walk them through the fact it’s more of a compatibility thing and less than a standards thing.

    Saba had an issue with exit value and how that affected the sessions count it displayed. Another LMS displayed the score and the client always expected us to display some kind of score-they looked at it more as a progress value than a score. I’ve had similar experiences with all the lms’s I’ve come across.

  • Halfway up San Juan Hill, Dave?! Seriously? I’m so much farther up than that!

    First off, apologies are due to Dave, and I offer them here and now. He and I had a brief twitter exchange (more). I failed to include mention of his responses, as I read them to be in line with his initial comments. It is my mistake, though, to include only the first post based on my interpretation. Dave certainly doesn’t deserve credit as “Opening Villain”… the conversation alone should have earned him a far more ambiguous role… Opening villain probably should have gone to @frdsrcks, who was completely unambiguous.

    Two meaty questions here in my book:

    Is the balance of “time required” to “level of functionality” appropriate in SCORM?
    Is it poor form to blog about/quote a previously public interaction (in this case, twitter)?

    Dave and I clearly differ on both questions. I’m certainly interested to hear your collective thoughts on both issues.

    Lastly, I hope to hear from more people like Dave. One of our core philosophies is that the best idea wins. I hope this post brings not only those folks who agree with me (likely followers of the blog) but those who disagree strongly (like Dave). And if Dave is interested in continuing this conversation here publicly, getting into the details of SCORM, etc, great. If not, I hope I haven’t offended him too much.

  • Thanks for this, Dan. Your comments are the kind of thing I hope to see here. The issues you mention are concrete issues with the standard itself. And the issues you mention are both worthy of complaint.

    My personal opinion on sequencing is that its utility is largely linked to the reuse of SCOs… which is clearly an issue of merit. When there are great, reusable SCOs, that value probably merits the headache. But the lack of reusable SCOs makes head hurt.

    The obfuscation via Get and SetValue is a valid thought as well. In some sense, the API is more complicated than the 8 methods. If you drill into our SCORM Driver documentation, you’ll see that we set aside the methods available in the spec and use “English-sounding function names” to great effect.

    So, thanks for the real/valid complaints… you can pick on my little brother anytime.

  • Antonia Powers

    SCORM is all well and good if you get to work predominantly on one LMS but the trouble begins when you’re a consultant who gets to work on a different LMS almost every week:

    Week 1.
    LMS does not support cmi.interaction data model elements

    Week 2.
    LMS requires cmi.exit to be specifically set to “” if the SCO is to be resumed

    Week 3.
    LMS allows a learner to re-enter a passed course and, if they browse the assessment, they get a failed assigned.

    Week 4.
    LMS sets the lesson status to completed when the SCO’s browser window is closed and not the correct status as when the SCO’s ‘exit’ button is clicked.

  • Thanks for your comments Antonia. Believe me, I know all about the challenges of getting things to work in different environments! Do these problems point to faults in SCORM itself or to problems with how people have implemented SCORM?

  • Gordon Harding

    Regarding the comments from Antonia. Does this not speak to the fact there are problems with the specification?

    I come from an LCMS background and need to work with various LMS. I find that the interpretation of the specification varies widely. Is this a problem with the vendors or is this a problem that the spec just does not define what should be done in an unambiguous way.

  • It’s easier to appreciate SCORM when you had to suffer the alternatives. When I first started integrating e-learning content with learning management systems (around 1997), most of the systems I encountered were homebrew and had their own tracking API. A few supported the AICC-HACP, but doing HACP well required applets or some other adapter code on the client side. (There was no XMLHTTPRequest support in browsers at that time.) SCORM (essentially AICC’s Javascript API) made the job much, much easier. Being able to have significant, relatively robust interaction with the LMS using only Javascript? That was a huge leap forward. I was amazed at the first PlugFest when with just a few minor tweaks, I was able to integrate a course on an LMS (Avilar WebMentor) that I had never worked with before. At the time, it felt like an amazing feat. The AICC/SCORM Javascript API was a huge leap forward. Combined with the IMS packaging, it felt as though we finally had a complete standard for delivering e-learning courses.

    Most of the course packages I currently develop do not take advantage of Sequencing. For maximum compatibility across LMSes, I purposely code to features common to SCORM 1.2, SCORM 2004, and AICC-HACP. I’ve developed a translation layer that detects the LMS environment and uses the appropriate protocol to communicate with the LMS.

    As a content developer, I find that SCORM does what I need, and does it well. I’ve encountered a lot of issues like those that Antonia mentions. SCORM leaves a lot open to interpretation, and within those gaps is where I find I need to tweak. Over time, I’ve encapsulated these tweaks into “configuration options” that enable me to deal with quirks of various LMSes, but hardly a week goes by that I don’t encounter some interesting new twist. SCORM could stand improvement. The approach is more than a decade old — an antique in software years. But SCORM was definitely a huge leap forward. I think the folks who developed it did a great job of bringing some semblance of order to the chaos.

  • I’ve implemented an LMS (EDU 2.0) and am finishing up an implementation of SCORM 1.2, and the biggest weakness of SCORM in my opinion is that when you take a SCORM quiz, there’s no way for the LMS to know what the actual questions were!

    You can access the kind of the question, the correct response, the student response and the score, but not THE ACTUAL QUESTION. This puts a big limit on the role that the LMS can perform.

    For example, it can’t create a reusable question bank of all the SCORM questions, you can’t browse the questions from the LMS side of things or perform a high-level analysis over the set of all questions asked by all the SCOs, etc.

    Maybe I’m missing something, but it seems like a very basic weakness with the SCORM spec. It would take very little to send the actual text of the question along with all the other data that is sent from the SCO.


  • Graham… I like comments like yours. You know why? You’ve got a specific beef with SCORM. And you know what? You’re right. SCORM 1.2’s lack of question descriptions in the data model stinks.

    I’ll offer some alternatives here…

    SCORM 2004. That’s right, this is one of the areas where SCORM 2004 is profoundly better than SCORM 1.2. It includes a full text question description and a descriptive identifier for answers. This means that the you can start to do some really effective reporting on questions and the distribution of answers. It’s a dramatic improvement. (Now, if SCORM 2004 looks like too much of a hassle for this benefit, you should check out the SCORM Cloud, which already has that problem solved.)

    IMS QTI. IMS QTI is a specification from imsglobal (who contributed greatly to SCORM) for question test interoperability. It is not a silver bullet, but, it is on the right path… allowing for some of the banking, etc, that you seek. Further, QTI is starting to gain some traction. It’s a part of IMS’s broader spec IMS Common Cartridge, and I think it’s possible it may find its way toward SCORM sometime in the future. No promises there, but it’s something to consider. (At this point, we don’t have support for QTI in our products…)

    So, options, but nothing perfect. SCORM walks a fine line with regard to specifying a lot or a little. And there’s no doubt that SCORM has specific issues… Feedback like this helps us and, more broadly, the community, effectively evolve to the standard to serve more effectively.

  • Joe Nelson

    I can’t say I ever had problems with the SCORM standard itself (although sequencing can be difficult to get right). The available tools are the biggest issue. The test suite won’t work with a modern Java environment. The best GUI manifest editor is Reload. The sample runtime installer requires users to change environment variables. It’s just forbidding, overly technical, and crusty.

  • Sanhita

    Recently I am facing a problem regarding Scorm and it is killing me. My deadline is getting nearer and I have still so muchh of issues. As I saw your fondness for Scorm, I think you are the best person to answer my question. My question is…


    I have downloaded one project from ‘codeplex’ called ‘Basicwebplayer’, it nothing but a LMS that can run a scorm course and after finishing the quiz when you close the popup window it will display the result on the main screen.

    The application is running more or less fine but I am getting some issues that I really want to get rid of. I am outlining all issues that I want to solve.

    1.For the scorm courses that include any quiz, I have to submit the quiz questions and the result must be displayed on the main screen. Now the problem is, it is displaying the totalpoint for the Scorm 1.2 course but failed to display for Scorm2004 course. Please tell me the anser. This is the most irritating issue.

    2. Some courses with version 2004 are giving the score result but they can not save the old session. So whenever I am clicking to see what are the questions I answered incorrectly, I am getting all old questions without their answers.

    I will be highly pleased to know the answers. I am really stuck.

    Please help.


  • Libera La Cultura

    Pues para mi los scorms dan mas problemas que soluciones

Click to Hide Advanced Floating Content

Coming soon!'s same great content is getting a brand new look.

Subscribe to be the first to hear of the relaunch.