Implementing SCORM: Advantages and Disadvantages

August 7th, 2003 § 9 comments

Continuing my ongoing series about the implementation of the SCORM standard in a LMS, this entry discusses some of the standard’s advantages and disadvantages. The entry limits itself to presenting the difficulties found in the implementation without detailing how they were solved. So it’s more of an introduction to the issues involved in the implementation. In the next entries I will explain specific details about the solutions I devised for some of those problems.


  1. The standard makes it possible to integrate learning objects from different sources in a common environment.

    This is the greatest advantage of implementing SCORM, and consists in making possible the use and reuse of courses in different formats and coming from different sources inside of the same LMS. This is achieved through a common API and a common distribution format that allows courses to register and retrieve data in a relatively generic way, making them auto-configurable and extensible.

  2. The standard provides a common data model.

    This common data model has obvious benefits for both the courses, which can be developed in a manner independent of the LMS under which they will run, and the LMS itself, which can gather and manage data from the courses in a uniform way.

  3. The standard provides a common packaging format.

    This common packaging format allows for the simple distribution of courses since they can be created and stored in the way their creator needs. A standardized manifest file describes their structures and makes their manipulation easy.


  1. The standard is somewhat immature.

    Although it’s in its second revision (1.2), the changes made in each release show that the standard has yet to achieve a stable state. The changes planned for the next revisions further corroborate this point.

    Such instability may mean drastic changes in future versions that can partially invalidate the investment in the standard at a given time. (This condition is comparable to the implementation of the XSL standard by Internet Explorer, which was based on a draft that radically changed in the final version.)

    An area in which the standard’s immaturity can be easily seem is in the issue of navigation between the various objects that may make up a course: the current release has no provisions whatsoever for such navigation, although it’s generally necessary in any LMS.

  2. The standard is completely based on a Web environment (mostly browsers).

    This limitation causes a certain dependence over some conditions and technologies that get in the way of more sophisticated solutions. An example of this problem is the reliance on a JavaScript-based API, which limits the use of the standard to environments where such technology exists.

    Also, because of the need of insuring maximum compatibility between platforms, the formats that can be used to create a course are restricted to a minimum common denominator (HTML and Flash, in a general way). The use of server-side technologies is effectively impossible.

  3. The standard puts a great emphasis in the client-side of the learning process.

    Two problems arise from this fact. Firstly, the possibility of security breaches in the API. Secondly, the impossibility of using server-side resources since all learning objects must be independent from the LMS in which they will be used, as previously mentioned.

  4. The standard relies on current technology not currently widespread.

    In fact, implementing a generic API today is a big challenge since there’s no uniform way to do it. Since the API needs to communicate with a server from within a browser, there’s a need to resort to multiple communication mechanisms, which complicates and weakens the implementation.

  5. The security of the API can only be guaranteed in a very limited way since it must be accessed from JavaScript and consequently can also be manipulated externally.

  6. The standard has only incipient provisions for tests and assessments. Also, the fact that they are primarily based on client-side implementation raises many questions about the security of such approach. There is no indication of the way such questions will be addressed in future versions of the standard.


Even though SCORM seems to have more disadvantages than advantages, its implementation has ample benefits for any LMS. The problems can be solved if some concessions are made in the implementation, and even if they limit what can be achieved with the standard, they don’t nullify the investment. On the contrary, just the first advantage listed above is more than worth the investment for many companies.

In the next entries I will look at some specific aspects of the implementation, exploring the solutions I found to some of the issues listed above.

§ 9 Responses to Implementing SCORM: Advantages and Disadvantages"

  • Hi,

    Greetings from Kolkata, India.

    I came upon your blog searching Google for
    “javascript scorm”.

    Regarding usage of server-side resources the
    “HRef” of a Resource may point to any URI
    (say a servlet call). Can this be considered
    usage of server-side resource?



  • Ronaldo says:

    Yes, that could be considered a server-side resource since it depends on a specific platform to run. If you moved your courseware to another server that didn’t support servlets, it would fail. This is, unfortunately, one of the most limiting aspects of SCORM.

  • Jason says:


    I found your post on the web today and it is exactly what I was looking for. I’ve been looking for a SCORM expert (or at least somebody who has implemented it) to ask some questions to so I hope you don’t mind my asking. I’m the system admin for a company called Targeted Learning and we’ve built a rather extensive elearning course called Making a Difference using php/mysql. The course is not SCORM compliant. At the time of its creation it was determined that what we wanted to do either couldn’t be done with SCORM or was not worth it. Now we are having second thoughts and are trying to determine what it would take to rebuild this thing as a SCORM compliant course. You can see the course I’m talking about by going to and logging in as pass=b. I believe I understand how SCORM works with having many SCOs and using javascript in the html pages to call the API to get and set data. What if I wanted to get/set large amount of data (maybe an array of strings)? What if I wanted to do complex branching (that is going to different SCOs) based on the user’s input (and not just a single user input value but a combination of user inputs). Can SCORM handle this. Currently all of the code to handle this is in the PHP server side code and from what I understand SCORM would force me to do everything on the client side instead? For a good example of what we are doing, go to Lesson 4 and then click on the “Self Assessment” button on the left side. Go ahead and try the self assessment a few times and see how dynamic of branching we are talking about here. Thanks for you input and I look forward to learning more about this. Feel free to email me if you so desire (jason AT targetedlearning dot com) -Jason

  • Ronaldo says:

    I’m glad my post helped. When I was implementing the SCORM standard for the first time, the hardest problem I met was the lack of information about real-world implementation. That problem led me to post those entries in my blog (I just posted another today), and to create a mailing list about it (in Portuguese).

    About your questions, if you decide to go with SCORM, it will probably mean a big change in the way your courses are implemented. As you mentioned, the standards places a big emphasis on the client side of the courses, and many thing you take for granted in a server-side environment are simply not possible.

    You will have, as you said, to drop PHP and go with simple HTML and JavaScript under the SCORM run-time environment. Data transmission is limited, in most cases, either to 255 or 4096 characters, depending on the data you are working with. You can, of course, ignore those limits in your our LMS, but if your courses need to work in other LMSes, you will have to abide to those rules.

    As for branching, you can do it inside a specific module. Of course, the restrictions aforementioned apply, which will make the task a bit difficult. However, navigation between modules from inside a module presents a big problem in the current version of the standard (1.2). It simply doesn’t exist. You will have to code you own non-compliant navigation inside the module; implement the 1.3 version of the standard and hope it doesn’t change; or ignore it, forcing the user to navigate externally, using the mechanisms provided by the LMS itself.

    Assessments are another trick part. The current version of the standard has a very limited support to them. In case of self-assessments and simple tests, you can implement them without much problem. Secure assessments, which will be used for real credit, are not entirely possible however.

    In short, SCORM compliance can be as much an asset as a liability. It’s a hard decision, to be taken with great care.

    I hope I helped. If you have further questions, feel free to continue this discussion.

  • Greetings…
    I’m writing from Mexico.

    I found this site searching information about SCORM. We are investigating
    everything about this standard and we want to create online courses under
    SCORM standard, but we know a few information.

    We know that we need the next files:


    to store all information about course for any LMS that support SCORM.
    My cuestion is: if we create a course that isn’t under SCORM can we
    enroll it at any LMS under SCORM standard?
    If the answer is yes can I tracking the course progress?

    Thank you for your answer
    Luis E. Garcia

  • Ronaldo says:

    You only need the manifest from the files above. The other files are just schema files that describe the information that goes in the manifest.

    About your question, some LMSes do indeed support non-SCORM courses, but in many cases they won’t provide any run-time support to the course. Anyway, if you want to run a course under SCORM-compliant LMSes, you’d better create it using the standard. As SCORM is now mainly a market requirement, you will be investing in your courses’ marketability.

  • Just a little further on SCORM. While it does provide a lot of benefits it limits the use of any content to what can be displayed in a browser – effectively HTML and Flash neither of which are suitable for subject matter experts to develop their own content – outside page turning or electronic manuals. (Yes I know programmers can do just about anything but usually SMEs are not programmers and do NOT like talking to their IT department)

    In my case, we have a sophisticated non-programming authoring system that creates highly interactive lessons with any type of content without programming. The system is now around 20 years old (updated through various op systems etc) and has been specifically developed for education and training.

    While security between client and server is important and data transport can be frustrating, an executable program run from a browser has no connection to the client or server. Our lessons are in fact a single Zipped file that uses an installed player (on Windows) to run. So we can easily start them from a link on a web page or anywhere.

    The only way I could confer SCORM compatibility was to write a ActiveX control that is used from Javascript to start the lesson and read and write information locally so that the player can read it when it starts. I also added AICC compliance but it suffers from needing to know the URL used.

    This works fine as long as you can use ActiveX. While I have developed a Windows network based LMS, we were reluctant to do a Web LMS so I am now looking for an Open Source PHP based implementation of the SCORM API or perhaps PHP/Javascript is a better description to fit into a PHP based LMS.

    I would appreciate any info on SCORM API development in a PHP environment.

  • Ronaldo says:

    That limitations prevented me from porting a LMS to SCORM for a whole year. At the time we felt we would spent too much time for little benefits. In fact, after we ported the system many customers complained about the reduced functionaly. Today, however, it’s almost impossible to ignore SCORM since the market strongy requires it.

    It’s really a hard decision… I hope someday SCORM will achieve such kind of functionaly — especially considering the direction browsers seem to be headed to. Today, it’s just to limiting.

    Yours, is an interesting solution. I think I would implement something similar if I were in your place. Maybe using Java instead, but it would work the same.

    Well, apart from doing a Web LMS, you can use Java or XML remoting in your system. The only problem would be cross-domain issues. I don’t know how they would play in a local system. But I think it would be possible, with some configuration.

    I don’t know of SCORM API implementations in PHP, but I will ask in a SCORM list I’m subscribed to (in Portuguese). Maybe somebody knows. I haerd that ILIAS, an open source LMS, would be implementing SCORM in its new release, but I don’t know the state of the implementation. today.

  • Rao says:

    what exactly is SCORM and why we need to follow this? Well I have recently joined a LMS company and they have asked me to develop SCORM being a novice to this I would like to get the information from you. Please help me as much as you can bcos I am a real beginner to SCORM.


What's this?

You are currently reading Implementing SCORM: Advantages and Disadvantages at Reflective Surface.