SCORM Compliant Content Packaging for Wiki-based Content Development

This is one of the GSoC 2009 Projects.


This project is about creating an extension for the most advanced wiki module for the e-learning environment dotLRN. The main part of this project is an implementation of the import and export mechanisms for SCORM content packages, as well as the development of a SCORM compliant run-time environment and authoring platform based on XOWiki.


Paper: SCORM Compliant Content Packaging for Wiki-based Content Development

Follow-Up Project: SCORM Compliant Run-Time Environment for OpenACS

About Me

Please see my profile page

Setting up the Project

Idea Proposal

Because of the fact that I have already worked with the mentor of this concrete project (Prof. Dr. Gustaf Neumann), I am confident of establishing a solid environment for the success of the project. I would use the time until the actual beginning to

  • setup my development environment including a dedicated "playground" server, to which I can easily give full access to my mentor or other people interested.
  • become familiar with the SCORM standard
  • investigate the latest developments of XOWiki
  • define a timetable and concrete requirements for the milestones


The Sharable Content Object Reference Model (SCORM) is a de-facto standard in the e-learning world. It focuses on the interoperability of learning management systems. To achieve that, it standardizes the way, in which learning material should be packaged, so it can easily be transported (content aggregation / content packages). Moreover, it specifies how the communication between these content packages and the "hosting" system should take place (run time). Finally, SCORM provides the means for defining rules whether or not and in which order subparts of the content package can be accessed by the learner (sequencing).

SCORM as a reference model acts as an additional layer above other established e-learning standards, coming from a variety of organizations (IMS, ADL, ...). Most interesting for the context of this project is the fact that SCORM's content aggregation model relies on, and extends, IMS Content Packaging. Thus, a SCORM compliant content package is always an IMS CP compliant one.

One of the main deliverables of my project is the transformation of wiki content into content packages (export) that are valid in terms of the IMS Content Packaging Specification Version 1.1.4 (latest stable). I am going to encapsulate this part of the code, so that this interesting feature will be available to and usable by the community, even if other goals are not reached. As shown above in the timetable, the deadline for this goal is Milestone 3. I will have to discuss with my mentor whether it makes sense to implement this export feature before the content package import facilities.

Another emerging e-learning standard - and a potential successor of SCORM - is the IMS Common Cartridge Format, which also integrates IMS Content Packaging. For this project, complete support for Common Cartridge would be out-of-scope from its size and feature set. However, my implementation of IMS CP 1.1.4 should be reusable for a future integration of Common Cartridge as well. In the last two paragraphs, I have tried to sketch some feasible reuses of parts of the outcome of my project.

There are a number of different SCORM versions available, some of them are outdated, some are under development. Unfortunately, versions are not backward compatible. As the mature SCORM 1.2 is the most widely adopted version, I will first concentrate on the support of this version. If time allows, I will add support for SCORM 2004 3rd Edition as well - this will be decided in accordance with my mentor during the project, when we can estimate actual progress.

To test the compliance of the generated content packages, I will use the SCORM Test Suite provided by ADL, as well as the SCORM TestTrack Tool provided by Rustici Software.

The Community and I

As already mentioned, I personally know my mentor and also other members of the OpenACS community. The developments I have made so far (portal system prototype) are still subject to research and active change. That's why this has not been published so far, but it will be contributed to the community when it is mature enough.

I have chosen the "SCORM Compliant Content Packaging for Wiki-based Content Development" idea, because of two facts. First, I am already familiar with, and excited about, XOWiki and dotLRN, which is fundamental for the success of this project. Second, as I will try to get settled in the e-learning community, learning an important e-learning standard like SCORM seems to be a good investment for my future. Also, I believe in the power of XOWiki and would be proud to make a contribution to its success, so that even more people use it. Moreover, the support of established standards is an important feature for any e-learning application. Time Table

During the GSoC, I am willing to spend 30 hours a week for working at this project. I am currently moving and have to finish the last pages of my master's thesis, so during the next 2 or 3 weeks, I will have a little less than 30 hours per week, but I will get started and will be available. Please note, that I have already booked a vacation from 25.4. to 2.5. However, I am sure that this will not harm the success of the project, but rather affect it positively.

Milestone 1 - May 23 (GSoC Start)

  • Development Environment set up
  • Minimum requirements for the next two milestones are defined

Milestone 2 - June 15

  • Import of SCORM content packages (generated by odp2cp) as XOWiki instances works.
  • Authoring environment concept under development

Milestone 3 - Juli 13 (GSoc Mid term evaluations deadline)

  • Playing (viewing) of the imported package works.
  • Export works
  • Authoring (editing) of content package concept finished
  • Authoring environment feature freeze
  • Authoring environment prototype under development

Milestone 4 - Juli 31

  • Authoring environment works

Milestone 5 - August 10 (GSoC Pencil Down)

  • Import, export and authoring chain works

Milestone 6 - August 17 (Evaluation)

  • Code is clean, documented and finished
  • Project evaluation sent to Google


This is a summary of the progress of the project (13.7.2009):

After (and while) setting up my development environment, I got familiar with the IMS Content Packaging and SCORM 1.2 specifications. Also, I refreshed my knowledge about the xotcl-core package on the one hand (especially the database abstraction part) and the xowiki package.

One important part of the project is the ims-cp package. This package is meant to serve as a central content packaging facility for OpenACS, providing means for unpacking/importing and building/exporting IMS CP 1.1.4 compliant content packages from arbitrary OpenACS content repository items.

At runtime, the ims-cp package works with a composition of objects that represents the "current" content package. The central "manifest object" holds ordered composites for both organizations (i.e. "views" to the content) and resources (i.e. the actual content). This object structure can be built in two ways. In the first case (e.g. when importing a package), it is assembled by reading the imsmanifest.xml file provided by the content package. Alternatively the structure can be built "manually", i.e. when exporting a package. This composition of objects is used to render the content package as xml (manifest generation - export), to persist the content package to the database (import) and to display the contents to the user (i.e. transforming the organizations into an html representation).

Another part of the project is the package, that actually imports and exports the content package into an xowiki instance (xowiki-ims-cp). This is currently realized via mixins. The resources part (i.e. more or less the "files") of the object composition gets the "add to wiki functionality" mixed in, which separated this "xowiki only" functionality from the more generic ims-cp package. The xowiki-ims-cp package is also responsible for exporting the wiki-pages (of course by using the ims-cp api) in the end.

The second main part is the runtime environment (i.e. "playing and controlling" of the package). It is already possible to basically view and edit the contents of the package. The next steps in this area will be to provide means to control the "viewing process" (i.e. navigating through the contents of the package) using a web based "player". This player has to provide a so-called "API Instance" for the CP-LMS communication on the one hand, and "controls" (table of contents, previous and next buttons, etc.) on the other hand. I am currently focused on implementing this "player".

Beside the regular discussion with my mentor (which I am completely satisfied with), my interaction with the rest community mostly took place in-person or via private channels. For example, I managed to establish a connection to a german elearning expert (who is part of the OpenACS community) and used the opportunity to visit him personally, which was a great pleasure and helped me a lot. "Everyday questions" I simply discussed via private chat or mail with community members I personally know.

Finally I want to say, that I am completely dedicated to the project and will definitely continue working on it, regardless of any GSoC deadlines. The code is subject to permanent change and refactoring (as usual during development) - if you want to install it on your own OpenACS development instance, please contact me via email.