Skip to content
Mark Statkus edited this page Oct 11, 2015 · 127 revisions

Documentation


So you just built some content, and then your client asks...

Hey, does this use SCORM??

Do you have to use SCORM? Absolutely not, but more often than not if a goal of portability is in mind, you'll need to adopt a popular and or widely adopted standard. The specifications numbers thousands of pages. So if your in a TL;DR (Too Long, Didn't Read) situation, this will lean things out to get you started. You'll be back ;)

Developers, The purpose of this is to take the heat of implementing SCORM in your content. I realize a lot of people are using 3rd Party tools now to construct content, but I know there are still quite a bit of people building custom games, quizzes and tests. This project is meant to encompass as full implementation capability of SCORM 2004 covering all the basics, plus supplying friendly API's to allow you to more easily record Interactions, Objectives and roll up the scoring. I wanted to trim down the round trips to updating, zipping and uploading content just to see if your SCORM call works. So a couple notes on this:

  • Use the built QUnit in this project to test your LMS. Maybe even write your own SCORM tests specific to your needs.
  • Check out the console as mentioned prior. Even in local mode if you've included the Local_API_1484_11.js, you will see trace messages so you don't have to round trip the LMS with every change you make.
  • Try out the bookmarklet below when all is hidden in the black box that is the LMS.
  • Project was geared at SCORM 2004, but will fall back to SCORM 1.2. Although, due to character limits, and consolidated statuses within the specification, it may require scrutiny. There is a SCORM Breakdown PDF linked below to gauge the impact.

You can visit the core of the documentation at SCOBot Documentation or about the SCORM CAM Packaging. I've also included some base Instructional value to some of the decision making that goes into an approach for building content. This will be on-going for a little while, but you can view that here.

Roadmap:

Documentation

Tools:

I've added a free-to-use tool to add some transparency to SCORM called SCOverseer. This is a bookmarklet that will allow you to display values occurring in a SCO you are testing without having to wade thru seas of endless line items in the console, or logs on the LMS.

SCOverseer

SCOverseer - see the Bookmarklet button on that page (drag it to your bookmarks bar). Directions on page.

SCOBot can use the console for logging if enabled, so that you can also "inspect element" and move to the "console" tab to view trace messages which can often be a great help.

SCOverseer Don't get caught with invalid packages. If you need to re-bundle vendor content or are looking for extra options constructing your Content Aggregation Models here is a Cross-Platform PC/Mac SCOBot Packager. SCOBot Packager

Cross Domain Warning

You may find yourself looking into this if your customer(s) desire to host their content from a central server using a different domain than your LMS. Try to look into the following:

  • Easiest and least complicated solution is to find out if you can point an HTML file to the CSS, JS, or other binaries to the media server? This would allow you to push a simple HTML file to the LMS, but it's taking all the assets from the media server. This gets around the cross-domain issue. This would also make your CAM packages very lightweight! This also would have to be done at Author-time or you would need to go back and point to CDN's or the media server. Other bonuses to this approach allow you to have a greater amount of caching vs. forcing the end user to download framework/libraries and other scripts over and over.
  • More Complicated Solutions in the past have used Flash, Java and IFRAME proxies to solve the issue. This begins to get more murky as you're talking about a LMS and Content API solution. Performance concerns arise if you have an extremely chatty course. Use of proxies and callbacks to get around the same origin policy security error have a cost.
  • AICC HACP may be another option to consider. Documentation

Accurate time in JavaScript?

I've done more cross-browser testing, and the QUnits I've setup will throw an error(s) on the latency if it doesn't match "PT5M" (which in english is 5 minutes). FireFox, and IE seem to throw different times up like 'PT4M59.55S'. So if you happen to be using the QUnit to test SCORM on a LMS or otherwise, don't be alarmed if you see differences in the browsers ability to report time. I've found a quick fix for this was to set milliseconds instead of set minutes against the Date object in JavaScript. So at least for the purpose of cross-browser unit tests, something to watch out for.
Performance test with some alternative time computations and showing the difference with division vs. multiplication.

Server-side Scripting Languages in SCO's

The "S" in SCO is shareable. So even if you know the LMS is using PHP, and you put a PHP file in your SCO, you could not take this SCO to a .NET or other server. You can point to a service however, but always be mindful not to limit the portability of your content. You may also even need to be aware of website blacklisting or firewalls/parental controls preventing the student from venturing outside of approved domains.

The Anti Library/Framework

It's very possible 90%+ of SCORM users treat the content like a "I was here" scenario. This is somewhat systemic of SCORM 1.2. You want to know they viewed your lecture video or otherwise. You may default them to 100%, passed and get an idea of how much time they spent viewing your Content Object. Due to the nature if trying to support SCORM 2004 and 1.2 this project hit 39KB packed. I've seen other libraries reach over 200KB+ in size. If performance is important to you, always consider whether you need to carry around an API set. If you are only using 5% of it, you may want to consider rolling your own. To that end, I built a quick page to comment on that approach.

SCORM Support/Guidance links