Skip to content

docs: document third-party origin, build and AGPL/GPLv3 licensing (DIR-05) - #109

Merged
erseco merged 7 commits into
refactor/scorm12-runtime-clean-provenancefrom
docs/third-party-licensing
Jul 25, 2026
Merged

docs: document third-party origin, build and AGPL/GPLv3 licensing (DIR-05)#109
erseco merged 7 commits into
refactor/scorm12-runtime-clean-provenancefrom
docs/third-party-licensing

Conversation

@erseco

@erseco erseco commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Depends on PR 105 (the clean-provenance SCORM 1.2 runtime): these notes describe the state after that replacement lands — merge this one second, so the documentation never describes a transitional state.

What

The external validation of release 4.0.2 (finding DIR-05) recommended a written clarification for the AGPL-3.0 editor shipping inside a GPLv3 plugin, and the Moodle third-party library guidelines ask for a readme_moodle.txt next to imported code. Neither existed.

Changes

  • assets/scorm/readme_moodle.txt (new) — records the post-PR-105 provenance: SCORM_API_wrapper.js is the unmodified upstream pipwerks wrapper (MIT, v1.1.20180906, byte-identical to pipwerks/scorm-api-wrapper@82e455b), the plugin's only third-party library; SCOFunctions.js is first-party eXeLearning code (AGPL-3.0-or-later, written from the SCORM 1.2 RTE specification) and is therefore not listed in thirdpartylibs.xml. Includes the exact update path for both files.
  • dist/readme_moodle.txt (new) — origin and build instructions for the bundled editor, Moodle-convention style: what it is, why it is bundled, the licence rationale, that it is copied verbatim with no Moodle patches, and the exact commands to rebuild it (make build-editor + .editor-version + make package). Lives in dist/ rather than dist/static/ because the build empties dist/static/ on every rebuild.
  • README — "Third-party code" section (new) — states the one-MIT-library reality and explains why AGPL code ships inside a GPLv3 plugin: the editor and the SCORM runtime are the eXeLearning application itself, developed by the same team, bundled unmodified; the combination is expressly permitted by section 13 of the GPLv3 and section 13 of the AGPLv3, and each part keeps its own licence.

Verification

  • Both readme_moodle.txt files travel inside the release ZIP next to the code they document (checked on a locally built package).
  • The pipwerks claims come from the upstream rewrite (exelearning/exelearning pull request 2209 and its ADR-0001); the wrapper hash is recorded in the readme for byte-level verification.

Moodle Playground Preview

The changes in this pull request can be previewed and tested using a Moodle Playground instance.

Preview in Moodle Playground

ℹ️ The eXeLearning editor is fetched from the shared release and unpacked into the plugin when the playground boots, so the first load may take a few extra seconds. ELPX upload, viewer and preview work normally.

erseco added 4 commits July 24, 2026 08:36
The plugin ships two pieces of third-party code: the SCORM runtime wrappers in
assets/scorm/ and, in release ZIPs only, the compiled eXeLearning editor in
dist/static/. Both were declared in thirdpartylibs.xml but neither carried the
readme_moodle.txt that the Moodle third-party library guidelines ask for, and
nothing explained why an AGPL-3.0 editor is distributed inside a GPLv3 plugin.

Add readme_moodle.txt to both folders (origin, upstream path, modifications
applied, and the exact commands to rebuild or refresh them) and a "Third-party
code" section to the README covering the licence combination: section 13 of the
GPLv3 and of the AGPLv3 permit it, and each part keeps its own licence.

dist/readme_moodle.txt sits in dist/ rather than dist/static/ because
make build-editor empties dist/static/ on every rebuild.
The upstream runtime rewrite (exelearning/exelearning pull request 2209,
mirrored by the coordinated plugin update) changes what "third party" means
here: SCORM_API_wrapper.js becomes the unmodified upstream pipwerks wrapper
(MIT, v1.1.20180906, byte-identical, hash recorded) — the plugin's only
third-party library — and SCOFunctions.js becomes first-party eXeLearning code
(AGPL-3.0-or-later, written from the SCORM 1.2 specification), no longer listed
in thirdpartylibs.xml.

Update assets/scorm/readme_moodle.txt to record that provenance and the new
update path, the README third-party section to describe the one-MIT-library
reality and extend the AGPL/GPLv3 rationale to all bundled eXeLearning code,
and dist/readme_moodle.txt to drop the sentence about the removed moodledata
installer (the bundle is the only source since the installer removal).

This lands after the SCORM runtime replacement PR so the notes describe the
final state, not the transitional one.
@codecov-commenter

codecov-commenter commented Jul 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 92.31%. Comparing base (973a611) to head (71be920).
⚠️ Report is 3 commits behind head on refactor/scorm12-runtime-clean-provenance.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@                             Coverage Diff                              @@
##             refactor/scorm12-runtime-clean-provenance     #109   +/-   ##
============================================================================
  Coverage                                        92.31%   92.31%           
  Complexity                                         824      824           
============================================================================
  Files                                               51       51           
  Lines                                             3734     3734           
============================================================================
  Hits                                              3447     3447           
  Misses                                             287      287           
Flag Coverage Δ
javascript 94.11% <ø> (ø)
php 92.23% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
PHP (server-side) 92.23% <ø> (ø)
JavaScript (SCORM tracker) 94.11% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@erseco
erseco marked this pull request as draft July 24, 2026 13:45
@erseco
erseco changed the base branch from main to refactor/scorm12-runtime-clean-provenance July 25, 2026 13:35
@erseco
erseco marked this pull request as ready for review July 25, 2026 13:35
@erseco
erseco merged commit 0944a59 into refactor/scorm12-runtime-clean-provenance Jul 25, 2026
25 checks passed
@erseco
erseco deleted the docs/third-party-licensing branch July 25, 2026 13:35
@erseco

erseco commented Jul 25, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #105.

The documentation and licensing changes from this pull request were squash-merged into the refactor/scorm12-runtime-clean-provenance branch so the SCORM runtime replacement and its provenance, build instructions, and licensing documentation can be reviewed and merged atomically.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants