I am trying to create a new kind of activity module that would enable 'module reuse'. I am interested to hear whether others have had a similar need and how this has been approached.
The idea is that a new kind of 'alias' module would allow me to use the content and setup of an existing module. It would then save any grades or other user data with reference to the 'alias' module. The main motivation is to support the DRY principle: If a module is reused in several courses, it is best to maintain one version of it and reuse rather than replicate. In some cases, it also opens up the possibility of better reporting. If 20 feedback modules have the same set-up across different courses, for instance, at present the response analysis has to be done within each module in each course. If it is known that all of the modules feature the same questions, the report could integrate the responses across the whole site.
My implementation approach is to have this new activity module linking to the 'target' module. In the target module, all links are changed to include the alias_cmid in the URL parameters. Tables related to user data are changed to the include this alias_cmid and this is inserted when saving user data. Report queries are then adjusted to retrieve records with the alias_cmid if the target module has been accessed through the alias.
I have tried implementing this with the SCORM module but found that it was too complex to be workable. There were 40+ links that would have to be changed (to include the new cm_alias ID) and maintained. There were also many different reporting options that would have to be supported. It seemed like it would be too easy to miss something that could lead to bugs and access errors (users being directed to the original SCORM module rather than the alias).
I am now making a stab at it for the Feedback module, which seems somewhat more manageable. The biggest issue I can see is that there will be a large maintenance burden for any updates to the module since it has to be changed in so many places to support this.
I'm keen to hear whether there's a better approach. Has this been discussed here before?