This post originated from an RSS feed registered with .NET Buzz
by Jonathan Crossland.
Original Post: SCORM development
Feed Title: Jonathan Crossland Weblog
Feed URL: http://www.jonathancrossland.com/syndication.axd
Feed Description: Design, Frameworks, Patterns and Idioms
We are currently busy with the SCORM 2004 specifications, creating an app on which I cannot say much at this point, however, for those interested, here is how I have found the standard.
This is a quick and dirty dump of my thoughts on it.
In general, within the 1000 plus pages of spec, the overall layout is good, the conformance requirements are pretty decent and informative and a lot of work has obviously gone into it.
A lot of work has also gone into the XML Schemas of CAM, Sequencing etc, which makes it a pretty solid spec.
Negatively, there is a lot of iteration of content, with differing language, which makes it hard at times. The xml schema is also a little inconsistent, usually when you do not expect it to be.
One specific issue, (since its concerned with web-based e-learning), features a client-side adaptor that must be implemented, either in Java, JavaScript or some other client-side technology.
This APIAdaptor and its Initialize, Terminate, GetValue, SetValue interface etc acts on the string datatype and is awefully clumsy on the server when you have proper types at your disposal.
This is as much a product of the technological environment as anything else, but seriously requires improving in the future.
The tasteless aspect of this almost boils down entirely to the AICC Computer Managed Instruction (CMI), which is a real pebble under the mattress.
(ie. commands like "cmi.objectives.0.id" - where 0 is the index have to be parsed and executed).
Another issue we have had is the fact that certain elements can be Write-Only, which brings in a lot of akwardness when storing values in a property.
When a GET is fired on a Write-Only, throw an exception.
Lastly, the spec does sometimes declare that a section is not required for conformancy and is optional, only to later discover (in another document) that clearly, the former is a dependant on a required area.