The 10,000 Pound Gorilla - SCORM integration
SCORM in a modern LMS is no easy feat.
The Shareable Content Object Reference Model (SCORM) is a standard for Learning Management Systems (LMSs) and content creators to adhere to in order to increase the interoperability and reusability of E-learning content. The SCORM Standard was created in 2000 by the ADL initiative to address issues in the state of the E-learning space. I was tasked with adding SCORM-conformance to the LMS one of our clients owns.
I knew that this would be a big project, so I started by doing some research. I found that there were several versions of the standard, with varying degrees of adoption in the industry. After consulting with the client, we decided to start by just supporting the most widely adopted version, SCORM 1.2, with plans to potentially support other versions in the future. From there I spent a time reading through the hundreds of pages of documentation for SCORM 1.2 and took notes on the parts that would impact the implementation.
As I read it became clear that there was one major problem with the SCORM standard: cross-domain scripting. The way that SCORM content works is that the LMS serves the html files that make up the content in an iframe, and the html uses JavaScript to access the parent window to facilitate communication. When the content and the LMS belong to different domains, this sort of access is a major security risk and is not possible in any modern browsers. Additionally, users of this system needed to be able to upload SCORM content and restrict access to it. The key to the solution was AWS CloudFront, as it allowed the use of authentication cookies that permitted access to wildcard paths, which was necessary because SCORM content can be made up of any number of files.
This project was a very rewarding experience, I found myself venturing into areas of software development that I never expected. While I am not done with SCORM, this represents a significant improvement in my knowledge base as an engineer. Working on this project mostly on my own has taught me a lot about planning for big projects and breaking down large problems into smaller ones. Additionally, while working with such an old specification was frustrating at times, I enjoyed the window into the past that it provided. The SCORM standard was designed by smart people working with the best information they had available, and it's equal parts humorous and humbling to see the ways the decisions they made have aged. Technologies, frameworks, and specifications come and go very quickly in this industry, and so the fact that SCORM is still widely supported is a testament to it's resilience. Ultimately, this experience has deepened my appreciation for the complexities of e-learning technology and the ongoing evolution of web development.