Forum Discussion
Storyline Suspend Data Compression
No, not exactly... However, I have definitely encountered problems with some content authoring tools and certain LMS's where certain characters in the suspend_data cause problems with the LMS.
I first started working with the lower-level SCORM Javascript interface code (ADLnet's opensource version) when I needed to address a similar issue with a large client of ours. The client wasn't going to change or upgrade their LMS system and we couldn't change the content authoring tool since it we were just a distributor. What I discovered in that particular situation was that specific LMS imlementation of the SCORM interface was doing a Javascript eval() to save the suspend_data. So any Javascript escape characters were then causing problems. To address this, I simply wrapped the suspend_data with a btoa(), atob() as it was being sent to the LMS. Those are native Javascript functions to convert from binary to base64 and vice versa). This addressed that problem and the client was ecstatic to have the course working with their LMS.
The story then progresses when we had another large client that had another older LMS. The LMS only supported SCORM 1.2 and could not override the size of the suspend_data from the 4096 bytes specified in SCORM 1.2 for suspend data. We had authored this particular course in Articulate and the suspend_data size towards the end of the course was averaging 8-12 kbytes (the course has since grown and now averages around 24 kbytes). The behavior an Articulate course typically exhibits when this limit is reached is to just resume at whatever previous location is represented by that first 4 kbytes. Since we were invested in Articulate for this course, and the client couldn't just upgrade their LMS, we needed to figure something out. When I looked at the LMS api within Articulate and recognized that it was pretty much based on the ADLnet opensource, I knew exactly how to handle it.
Now, I don't have any experience with Moodle. We either support customer's LMS systems or our own that is based on cloud.scorm.com. And I haven't had to deal with any customer's that are using Moodle. I don't know if that's just because we haven't had any customer's using Moodle or whether Moodle generally works just fine and thus we haven't had any reported issues. What I do know is that the SCORM 1.2 specifications states suspend_data must be a "A set of ASCII characters with a maximum length of 4096 characters". Articulate does use some uncommon characters like ^ and ~. Those particular characters should not cause any Javascript problems, but then again it's hard to say how Moodle is implemented and what their interpretation of "ASCII characters" really is.
Lastly, I will say, that this patch does encode the compressed data in base64, so it should be very safe with any LMS. It might even address your issue with Moodle. Base64 is a very common standard for encoding to a minimum set of "safe" characters (that is characters that are common to most encodings and printable). You can read more about that here: https://wikipedia.org/wiki/Base64