Skip to content

Developing for SCORM 2004, but rolling back to SCORM 1.2

Mark Statkus edited this page Jan 26, 2018 · 15 revisions

Disclaimer

If it doesn't go without saying, you may actually need to consider this requirement before you even build your content. If your customer desires this flexibility, it will need to go into the thought process depending on how feature rich your content is. Also be aware some platforms expose both Runtime APIs and either translate one standard to the other, or more unfortunately leave the API with no data to respond with. So be very careful about your deployments or you may find subtle issues like these which are solvable, but surprising.

Considerations

There are a number of differences within the SCORM 1.2 specification. One of the more major things to consider is what you effectively lose, and what you potentially lose. Most the SCORM 1.2 specification was optional. If you are just planning on recording session time, total time, some light scoring and a status of pass, fail or complete or incomplete you should be safe. However, if you have Objectives and Interactions, Student data and preferences, the LMS may not support them.

Aside from the above, there are also character limits to consider. Suspend data drops from 64K characters, down to 4096. Bookmarking goes from 1000 to 100. You lose the ability to 'read' from the interactions so you are essentially just posting interactions with no ability to retrieve the data stored in them. One glaring oversight is the fact the 'description' of objectives and interactions didn't exist. So the context of those interactions and objectives is lost. You'll simply know the student interacted with things and have a level of latency, and result. The actual answer "a" would mean nothing. "t" for true, but what was true? This was made better in SCORM 2004.

Success Status and Completion Status are rolled up into a Lesson Status. This is a combo of passed, failed, complete, incomplete which can leave some LMS's unable to mark the SCO "completed". Mileage on this one will vary. And as you may or may not have seen online this is a popular issue.

So if you are absolutely looking for a way to build a SCORM version agnostic course, you need to take a closer look at not only the types of information you're recording, but the amount of information you are recording. Many pages can actually stress your suspend data space. Commonly content developers save answers, arrays, and other delimited formats via Suspend Data. This is still an effective place to ensure you can recall the student entry, or place objects back where the student left them. Ultimately, this may have you re-packaging your content if you don't take this into consideration up front.

Comments are normally over looked, but there is no 'appending' support. This is just a bulk 4096 character string with no ability to append comments. You would have to come up with a manager to maintain it, but a LMS is supposed to be able to read from this string. Alternatively, you could manage it in the SCO itself and display these in review mode as an option.

Advanced Technical Detail

Attempts

SCORM 1.2 didn't seem to have a concept of multiple attempts. This area of the specifcation is hard on the eyes when it comes to 'cmi.core.exit' being anything except 'suspend' ("", logout, timeout, normal). The LMS behavior seemed to be it would set 'cmi.core.entry' to blank, signifying this is neither the beginning or a continuation of the attempt. It doesn't strictly call out that the mode should be set to 'review' so this area of implementation is a bit vague. This was also cleaned up in SCORM 2004 more which made it more clear that it was an end of an attempt, and a new or clean attempt would be served upon launching the content again.

Expansion on differing points of view

Expanding on this subject after dissection of the SCORM 1.2 Runtime Specification it seems the LMS had the capability to decide how it wanted to set 'cmi.core.lesson_mode' and base that on 'cmi.core.lesson_status'. But, SCORM did not specifically call it out, and left a note that there was no defined way to signify the behavior, and it will be LMS specific.

This explains on some platforms why it seems like they ignore the cmi.core.exit types. Typically if you set 'suspend' with the intent for the student to continue their work, you'd still be in 'normal' mode. Yet some platforms will launch you in 'review' mode. Within SCORM 2004, both 'browse' and 'review' modes do not allow any 'set' value calls. Yet in SCORM 1.2 there are some cases where the platform allows you to make 'LMSSetValue' calls while in other modes. Obviously, if they stopped the 'set' calls in these other modes, many SCORM errors would get triggered in the background, and the student would not be able to add any further assessment information to enhance their score. Further parsing of the specification makes it seem like there was some conflicts on this even stating 'review' mode meant that the student already seen and had been graded. Course if you are suspending your attempt, you have not fully completed your attempt. This is one point about platform behavior that makes people pull their hair out.

Comment Differences

  • Comments From Learner: (4096 character String)
  • Comments From LMS: (4096 character String)
  • No Append ability like in SCORM 2004 and no direct support for location or timestamp. These queries will result in a 'false' response.

Location (Bookmarking)

  • SCORM 1.2 uses cmi.core.lesson_location, and it is reduced to 100 characters vs 1000 in SCORM 2004

Max Time Allowed (apart of student data)

  • Optionally supported
  • SCORM 1.2 responds with '0000:00:00'. SCOBot normalized this so its 'like' a response from SCORM 2004

Objectives

  • In SCORM 1.2 this is a optionally implemented feature.
  • cmi.objectives.n.score.scaled is unsupported. Result will respond 'false'.
  • cmi.objectives.n.progress_measure is unsupported. Result will respond 'false'.
  • cmi.objectives.n.description is unsupported. Result will respond 'false'.
  • cmi.objectives.n.completion_status and success_status merged into 'status'. You can choose which status type you prefer to record by setting the SCOBot default 'scorm_status_persist' to "success_status" or "completion_status"

Interactions

  • In SCORM 1.2 this is an optionally implemented feature.
  • All interactions are write-only. If you were planning on reading back data stored like in SCORM 2004, you may want to consider the implications delivering your content on SCORM 1.2. Suspend Data a viable option.
  • cmi.interactions._count and _children readable, as is cmi.interactions.n.objectives._count.
  • cmi.interactions.n.type does not support 'long-fill-in' or 'other'.
  • cmi.interactions.n.correct_responses.n.pattern had different delimiter formats than SCORM 2004 (more simple).
  • cmi.interactions.n.student_response vs learner_response (name space change in SCORM 2004)
  • cmi.interactions.n.latency and time in simple [HH]HH:MM:SS.SS formats
  • cmi.interactions.n.result uses "wrong" vs "incorrect" in SCORM 2004. And no support for 'unknown'.

Suspend Data

  • Reduced to 4096 characters in SCORM 1.2

Student Preferences and Data

  • These were optionally implemented in SCORM 1.2

There are more subtle namespace differences, but above highlights some of the major differences.

More info in a PDF: Namespace Breakdown