Stopping work on SCORM 2004

May 6th, 2013

I’ve been the official maintainer of SCORM in Moodle since 2008 when we implemented full SCORM 1.2 support thanks to funding from Moodle HQ. Since then with the help of a handful of other developers in the community I have spent over one thousand volunteer hours supporting and improving the SCORM module and occasionally funds have been provided for my time by organisations to fix a particular issue.

SCORM 2004 is now over 8yrs old and despite many efforts no-one has been interested in funding the time required to complete native support for SCORM 2004 in Moodle – I’ve run some successful GSOC projects which which have been a great learning experience for the students involved but have not made a significant dent in the work required to complete SCORM 2004 support. This year we received no valid GSOC applications for improving SCORM 2004 support in Moodle.

I spent a lot of time discussing the opportunity to run a crowd-funded project to complete SCORM 2004 in Moodle but it’s hard to define a fixed figure that would allow us to complete the project and I wonder if such a large amount of my time could be spent on projects that are more current.

Full support for SCORM 2004 is already available in Moodle by using the Rustici SCORM cloud plugin for Moodle and I think it is more cost-effective to purchase a subscription to their hosted solution which is much more stable/reliable and feature rich than what we could provide directly in Moodle anyway.

There is also a new version of SCORM (Tin Can) and I think it makes more sense to focus development effort on that rather than continuing effort to get an old standard working within Moodle that so far no-one has cared enough about to fund.

I will continue as a volunteer to maintain support for SCORM 1.2 and AICC packages in Moodle and the new Tin Can work that is currently underway. I will also make best efforts to avoid regressions in the existing SCORM 2004 code.

I will no longer be spending any time as a volunteer to support or improve SCORM 2004 in Moodle, I will accept patches from community contributors to improve SCORM 2004 support as long as they meet coding guidelines and are easy to test. All existing SCORM 2004 bugs will be closed as “won’t fix” – these will only be re-opened if a community member provides a good patch with full testing instructions or if someone funds my time to continue the work.

Thanks to everyone who has spent time working on SCORM over the years – hopefully drawing a line in the sand over SCORM 2004 support will allow us to focus on more current developments like Tin Can.

Moodle and 2 Million users.

March 19th, 2013

The team here at Catalyst have been working on this exciting project for a while and now that it’s gone live we can finally post publicly about it – the Saudi Arabian National Centre for E-learning and Distance Learning(NCEL), an agency established by the Saudi Arabian government is now running what is the biggest ever Moodle site (as far as we know) with over 2 million users expected to use the system this month.

more info here: 1 2

Managing SCORM content in Moodle 2

November 1st, 2012

There are a range of ways to manage SCORM package files in Moodle

Uploaded package.
This method is the only option shown by default in a new Moodle installation. The teacher uses the Moodle file picker to select or upload a new SCORM package.

The site administrator is able to set up a range of different repository types that could contain SCORM zip packages.

External Package type
External package type is disabled by default on new installations – it is not a great method of linking to packages as under certain circumstances your packages will not pass back any grade or tracking information to Moodle.

If enabled and selected it provides a text field to paste a URL to a remote imsmanifest.xml (in an unzipped remote SCORM package) – this allows SCORM content to be hosted outside your Moodle site and the content is played from the external location and is not unpacked/copied into Moodle storage. This also means that if you update the SCORM package then the latest content will always be loaded (unless you update your core imsmanifest.xml file as this file is copied into Moodle) – be very careful updating your imsmanifest.xml file; if your SCO identifiers change then tracking information for any removed SCO identifiers for any previous user attempts will be cleared from the Moodle database.

For the external package type to work – your SCORM content MUST be located under the same url as your Moodle site – If the base url is different from your Moodle url then built in web browser security will block cross-domain communication and no grades/tracking information will be passed back to Moodle. Adobe Flash and modern browsers (ever since IE 6) prevent cross-domain communication. If you really need your packages to sit outside Moodle on a different URL you should look at other options for hosting your content.

To enable the External package type go to:
Admin > Plugins > Activity modules > SCORM package
tick the box for “Enable external package type”

Downloaded package type
Downloaded package type is disabled by default on new installations. It allows your SCORM zip package to be hosted on an external location.

If enabled and selected it provides a text field to paste a URL to a remotely hosted SCORM zip package. Moodle will download the package and unzip into the Moodle file system. Moodle will only check for a new SCORM package each time the settings page is opened and re-saved unless you configure the option “Auto-update frequency” – this is an advanced setting by default so make sure you hit the “show advanced options” button on the SCORM settings page – this option will also only appear if you have either the downloaded/external package types enabled and selected.

The Downloaded package type doesn’t have the same issues around cross-domain communication as the external package type as the SCORM package is downloaded and stored inside the Moodle file system. The main disadvantage of this type is that your SCORM package must be on a url accessible by your Moodle server which usually means that it will be available publicly for anyone to download (unless you configure some form of firewall on your external SCORM content server to prevent this sort of access and only allow the Moodle server to download the file over http/https)

To enable the downloaded package type go to:
Admin > Plugins > Activity modules > SCORM package
tick the box for “Enable downloaded package type”

IMS package type
IMS package type is disabled by default on new installations. The IMS package type is only included for backwards compatibility with old content still in your site – Moodle 1.6 -1.9 had a badly implemented/not well supported/undocumented/buggy feature called the “imsrepository” – this allowed you to store your SCORM packages in unzipped form in a folder within your moodledata and select/link to these packages. This feature is not supported in Moodle 2 but if you have legacy data in your installation that has not been moved, enabling the IMS package type will allow this old content to play/function correctly until you migrate to one of the other package types. I’m not aware if this actually works – I’d be keen to hear from anyone still using imsrepository content to know if it works or not. At some point this option will be removed from Moodle core – maybe 2.5?

Direct AICC url
Direct AICC url type is disabled by default on new installations.

The Moodle SCORM module also supports AICC content – AICC can use a different way to communicate with an LMS without using JavaScript which allows the content to be stored externally without running into cross-domain communication issues. We call this method “external AICC HACP” – this content communicates directly with your Moodle server rather than via the learners browser session. To use this form of communication, you must enable the setting “Enable external AICC HACP” in admin > plugins > activity modules > SCORM

Usually when connecting to an external AICC HACP package you are provided with a small AICC zip package which contains a file with a link to the external AICC content – to make it easier for AICC authors we have included an option that allows you to paste a url to the external AICC content instead of having to create a zip package with the file to link to the content.

It’s best to leave the Direct Aicc url type disabled unless you have an AICC content provider that provides urls to their external AICC content instead of AICC package files. It is a good idea to enable external AICC HACP

Future Improvements.
Moodle 2.3 has an “alias” feature that means when an uploaded file is re-used elsewhere on Moodle, the teacher has the option to create a shortcut or alias.

If an alias is created, then when the original file is updated, it will change in all instances of the alias. More info:

Implementing this for SCORM is possible but will need to be managed carefully – more information on this is available in MDL-28579

*UPDATE 24 Sept 2013* – Moodle 2.6 now implements some more options – see here for more details:

SCORM doesn’t work in Moodle?

August 8th, 2012

I see a lot of posts with very limited information about issues with SCORM in Moodle – Here is a common question:

My SCORM package works fine 90% of the time but 10% of my users report that it doesn’t save their score or flag as complete – help?

This question is not very specific so it’s hard to give advice but here is a list of things to check.

  1. What version of SCORM are your packages authored in?
    Moodle only supports SCORM 1.2 and AICC packages – SCORM 2004 is not supported in any version of Moodle, more information here.
  2. What Moodle version are you running?
    SCORM in Moodle didn’t work very well until Moodle 1.9.12, If you’re using an earlier version of Moodle – don’t bother asking questions about why it doesn’t work – UPGRADE!
    SCORM in Moodle 2.0 is more stable/reliable than Moodle 1.9, and Moodle 2.3 is even better than 2.0 – if you are able to upgrade to the latest Moodle version it may help a lot.
  3. SCORM requires JavaScript
    Are your users trying to access with a browser that doesn’t support JavaScript? Moodle 2.0 has a setting called “Force users to enable JavaScript” – go to Admin > Plugins > Activities > SCORM and make sure this is set.
    Moodle policy states that everything must function with JavaScript disabled however I have been tempted to remove this setting and force SCORM to always require JS – drop me an e-mail if you disagree with this and give me reasons why you think it wouldn’t be a good idea.
  4. Browser specific bugs
    1. Internet Explorer 9
      There is a bug with Adobe Flash that prevents communication from occurring correctly. The fix is to run IE 9 in compatibility mode but you can fix this in Moodle by adding this line to your Moodle theme directly after the <head> tag in your theme (it must be the first item after the <head> tag or it will not work.
      <meta http-equiv=”X-UA-Compatible” content=”IE=8″ />
      More info here (although it states that bug as fixed the fix does not work as it doesn’t add it directly after the <head> tag)
    2. Internet Explorer and Moodle 1.9
      When using the “new window” option in Moodle 1.9 IE  may freeze during the load of the SCORM – the fix is to either use the “current window” option instead or upgrade to Moodle 2 (this fix requires a significant rewrite of the Moodle player so an easy to apply patch to fix this in 1.9 is not available) More info here.
    3. Chrome
      When using the pop-up window option, chrome may open a window with a size of 0x0 so the content is not displayed – the fix is to upgrade to the latest stable release as this is fixed in most stable branches. More info here.
    4. Moodle 1.9 has a range of other browser specific issues – especially when using the “new window” option – Moodle 1.9 is no longer supported for bug fixes so you should really upgrade asap.
  5. Debugging
    Moodle has a nice debugging tool that logs each call from your SCORM package to Moodle – this can be configured to be enabled for all users or for a specific user – If you are unable to reproduce the issue yourself, you can enable the debugger for the specific user and ask them to email you the results.
    To enable debugging see here: Moodle 1.9 Moodle 2
  6. Multiple Attempts
    The way attempts in SCORM works can be confusing – when a learner enters a SCORM package and gets a score, then re-enters the package their score can be changed or updated, losing their previous score. I’ve recently written an FAQ item on this in the Moodle docs site here.
  7. Grading
    SCORM packages can be graded in multiple ways – some SCORM packages return a raw_score, others only return a lesson_status. Moodle has a range of grading methods to suit these different packages – for help on this see here

If none of that helps with your issue, make sure you read the FAQ on asking for help in the Moodle SCORM forums – this explains a list of the things we need you to include in your post to allow us to help. Usually our biggest difficulty is trying to reproduce the issue you are having.

The majority of the time I spend on SCORM in Moodle is as a volunteer – so please be kind!

I’m thankful to all those who have helped with SCORM from the  original developer of SCORM in Moodle – Roberto Pinna and the GSOC program which has allowed us to progress on SCORM 2004 compliance, I’m especially thankful to those people who have provided funding for my time to work on specific bugs in SCORM that have been causing them grief.

There are still many other issues with SCORM in Moodle (let alone the work on SCORM 2004) but my volunteer time is limited so if there’s something in Moodle that doesn’t work the way you’d like, any funding you have available for my time to fix the issues would be really appreciated. I work for the certified Moodle Partner Catalyst IT, we have offices in the UK/AU/NZ and provide a range of services around free and open source software.

GSOC update

July 26th, 2012

We’re just past the half way mark of GSOC and Kanika and Mayank have been hard at work!

Kanika has pushed a range of improvements for the plagiarism API into Moodle 2.4 including support for Online text in assignments, Forum posts and the Workshop module. She has been working on adding support for these new api hooks into the Urkund plagiarism plugin and may have time to add support to the other plugins in future.

Mayank has been rewriting the way navigation works in SCORM – he has a pretty big patch incoming for SCORM which will hopefully enable us to pass a few more SCORM 2004 ADL Tests – we also have some special courses loaded on that contain all the ADL test package for both SCORM 1.2 and 2004 so we hope to run the test harness a lot more frequently when making changes to SCORM code.

Thanks to Kanika and Mayank for their valuable contribution!

GSOC 2012 Projects

April 23rd, 2012

Moodle is lucky to have 4 successful GSOC projects this year – hopefully this will be a rewarding experience for the successful students and will produce some useful code for Moodle! – Thanks to Google for providing the funding to allow this to happen!

The quality of applicants varied a lot this year – we had one applicant who copied the full Wikipedia Moodle page and submitted that as their proposal. There were several students who put a great effort into their applications and missed out this year – hopefully some of these may still engage further in the community – we appreciate the effort you put into your applications and the patches you provided as part of your application process!

Moodle 1.9 Long Term Support

April 2nd, 2012

Moodle HQ ends support for Moodle 1.9 Security fixes in June and there seems to be a large number of people in the community who aren’t ready to upgrade to Moodle 2 quite yet. I offered to personally continue support for Serious Security fixes until Dec 2012 and had a range of people get in touch with feedback(thanks!). I also sent a bunch of e-mails looking for someone to help to fund support for a longer period as the extension by 6 months wasn’t quite long enough for some people I’ve been talking with.

I’m pleased to announce that I have found a sponsor that will allow the team here at Catalyst IT to continue support for serious security issues with Moodle 1.9 until December 2013

Totara LMS is funding/sponsoring this work which is great! – hopefully this will ease the concerns of organisations who are not quite ready to upgrade to Moodle 2.

I’ve posted more info about these plans in the forums here.

My employer Catalyst IT is an authorised Moodle Partner and we have offices in UK/AU/NZ, we provide a range of services focused around free and open source technologies including products such as Moodle/Mahara/Drupal/Koha and many others.

Totara LMS is custom distribution of Moodle targeted at the corporate sector.

GSOC 2012

March 18th, 2012

GSOC is here again and Moodle has been approved as a participating organisation. GSOC students get USD $5,000 for participation in the program(thanks Google!).

Depending on the number of slots allocated to Moodle and the quality of the applicants, I’m planning to run 2 projects this year.

SCORM 2004 – building on the work from our GSOC 2011 student Mayank, I’d like to get some more progress towards SCORM 2004 compliance – there are a large number of tasks to complete 2004 and I may take on more than one student to work on this (depending on slots/applicants) If you know of any students good with Javascript and PHP – make sure you point them towards GSOC.

Improving Plagiarism API – The plagiarism api currently only hooks into the upload assignment types – I’ve been planning to add hooks into other Moodle modules but haven’t quite got round to it – this project will involve adding new hooks to other Moodle modules and probably some work on some plagiarism plugins like Crot.

For more info see:


Future of Moodle Turnitin plugins

March 6th, 2012

Ever since Moodle 1.5 I’ve enjoyed developing the Turnitin integration which has resulted in the new Plagiarism API in Moodle 2 – now we have plugins for Urkund, Crot, Moss and hopefully more to come!

I started developing the Turntin integration while working for Lincoln University and playing with the Turnitin basic assignment type developed by Turnitin which didn’t really suit our requirements. Since then a company called nLearning (now part of Turnitin) developed a 3rd plugin called “Moodle Direct” – so there are now 3 different ways of connecting Moodle to Turnitin.

Independently developing the Turnitin plugin has presented a range of challenges – including:

  •  Keeping in touch with new features/improvements to Turnitin services and implementing them in my plugin.
  • Providing support to people who have downloaded the plugin and have a contract with Turnitin but no support contract with me – I’ve spent a lot of volunteer time helping via e-mail/forum support but this can be quite time-consuming. It can also be confusing for people using the plugins – not knowing who to contact related to a problem.
  • Diagnosing issues can prove difficult – is there an issue with the code/Turnitin (Kudos to the Turnitin Devs who have provided a lot of support directly to me while developing/improving the plugin)
  • Enabling my plugin can be a convoluted process, emails to Turnitin, extra configuration required…

Where am I going with this you ask? – Turnitin are working directly with me to “merge” their “Turnitin Direct” plugin with my plagiarism plugin for Moodle 2.x – this will bring a range of very good benefits.

  • Single support base – support for the plugins will come direct from Turnitin for all plugins making it much easier to access support.
  • Larger feature-set available – my focus has been on the originality checking feature – Turnitin provides a range of other features which will be implemented and supported in both plugins.
  • Moodle admins will be able to choose between using the plagiarism plugin which uses the existing assignment types or to use a separate “turnitin” module.
  • The new plugin will be backwards compatible with data stored from my version. (planning to use the same tables)
  • The new plugin will sync grades entered via Grademark with Moodle.
  • The new plugin will support the existing featureset (and more).

Obviously there will be some form of changeover period where I will continue some level of support for the existing plugin but sites will be migrating to the newer version provided directly from Turnitin – Turnitin are hoping to provide the new code in a git repo and allow others to contribute patches back (I know I’ll probably be submitting a few in the long term)

This is all very new and there isn’t a specific time frame in place to have this completed except to say that you should keep an eye out for the initial code release in the upcoming months.

Thanks to everyone who has tested/provided feedback/provided patches/provided funding for the plugin – it’s been a cool project to be involved with. Now that the core plugin will be supported directly from Turnitin I may finally have time to implement the plagiarism api into other areas of the Moodle codebase like forum posts, workshop mod, Essay quiz questions etc – or maybe I’ll just waste away more time on SCORM… 🙂

Meta-course enrolments and failed Moodle 2 upgrades oh my!

January 23rd, 2012

We just upgraded one of our clients sites that makes extensive use of the meta-course enrolment feature combined with ‘nosyncroleids’ from 1.9 to 2.2  – they use meta-courses to enrol their students but use manual enrolments for their teachers so the teacher role was set in ‘nosyncroleids’ – during the upgrade these manual enrolments for teachers seem to have been corrupted – after upgrade the users show as “enrolled” using meta-enrolment but don’t have any roles in their courses. This seems strange as in the 1.9 site they were “manual” enrolments.

It looks like Petr Skoda may have fixed this as part of MDL-29684 but this is only fixed in master, not the stable branches. (and I haven’t tested it)

And unfortunately as the sync process has already screwed up the enrolments on the courses, simply applying the patch to the clients 2.2 site wouldn’t work – the only way it seems it might work would be to revert back to the 1.9 site and re-run the upgrade with the patch in place – or manually go through each course and fix the enrolments. Unfortunately we didn’t notice this early enough and the site was already being used so the client is now going through each course and manually fixing the enrolments for their teachers (time-consuming and frustrating!)

IMO this sort of issue should be back-ported but hopefully this post might help prevent others from experiencing the same pain!