[{"data":1,"prerenderedAt":1382},["ShallowReactive",2],{"footer-categories":3,"app-search-categories":227,"category-lms-and-plugins":237,"mdc--jcks6t-key":1338},[4,30,55,80,105,130,155,180,205],{"id":5,"title":6,"extension":7,"faq":8,"icon":21,"intro":22,"meta":23,"name":24,"order":25,"slug":26,"stem":27,"tagline":28,"__hash__":29},"categories\u002Fcategories\u002Fauthoring-tools.yml","SCORM authoring tools and course frameworks","yml",[9,12,15,18],{"q":10,"a":11},"Which authoring tools publish cmi5?","Far fewer than claim to. cmi5 needs the full AU lifecycle — launch, session identifier, moveOn rules — not just an xAPI endpoint. The standards matrix on each listing shows what we could verify and where the claim came from; the cmi5 hub page lists the tools together.\n",{"q":13,"a":14},"Do I need a paid authoring tool at all?","Not necessarily. If your courses are text, images and simple assessment, an open-source framework or a markdown-to-SCORM converter produces a perfectly conformant package. Paid suites earn their money on complex interactions, branching simulation, review workflows and support.\n",{"q":16,"a":17},"What is the difference between SCORM 1.2 and 2004 output?","1.2 is simpler, universally supported, and limited: one completion status, a coarse data model. 2004 adds sequencing and navigation, a separate success\u002Fcompletion distinction, and richer objectives — at the cost of LMSs implementing it inconsistently. Publish 1.2 unless something specific requires 2004.\n",{"q":19,"a":20},"Can I move a course between authoring tools?","Rarely without rework. Published packages are portable; source projects generally are not. That lock-in is the strongest argument for the code-first frameworks in this category, where the source is plain text you own.\n","i-lucide-pen-tool","The authoring tool decides what standard your course speaks, long before anyone uploads it. That makes\n\"which standards does it publish?\" the first question worth asking, and the one vendor comparison pages\nanswer least clearly — plenty of tools advertise xAPI support that turns out to mean a statement endpoint\nrather than a conformant launch.\n\nThree quite different things live in this category. **GUI authoring tools** are the familiar commercial\nsuites: you assemble slides, interactions and quizzes, then publish a package. **Code-first frameworks**\nhand you a build pipeline instead, which is the right shape when courses are versioned in git and reviewed\nlike software. **Markdown and document converters** sit between the two, turning writing into a package\nwith the least ceremony.\n\nTwo practical notes. Publishing SCORM 1.2 remains the safest default for reaching old LMSs, and most tools\nstill offer it alongside 2004 — check which edition. And accessibility varies enormously between tools that\nclaim WCAG conformance; if that matters to your client, test the published output rather than trusting the\nbrochure.\n",{},"Authoring tools & course frameworks","1","authoring-tools","categories\u002Fauthoring-tools","Where the course gets made — and where its SCORM output is decided.","CkWCyRM7Yrc2GVdbc65rAQjKCeNcgRzCqKcYYXPQVQk",{"id":31,"title":32,"extension":7,"faq":33,"icon":46,"intro":47,"meta":48,"name":49,"order":50,"slug":51,"stem":52,"tagline":53,"__hash__":54},"categories\u002Fcategories\u002Fconverters-migration.yml","SCORM converters and migration tools",[34,37,40,43],{"q":35,"a":36},"How do I convert PowerPoint to SCORM?","Either with a self-serve converter that wraps the exported slides in a player and manifest, or by rebuilding the deck in an authoring tool. The first is minutes and cheap; the second gives you real interactions, narration and accessibility. Both appear in this directory.\n",{"q":38,"a":39},"Does converting a deck preserve animations and narration?","It depends entirely on the export path. Tools that go through PDF or images lose both. Tools that drive PowerPoint itself can keep timings and audio. Check the listing, and test with your most complicated slide rather than your simplest.\n",{"q":41,"a":42},"Can I convert an existing SCORM package to xAPI?","Partly. Wrappers exist that intercept SCORM API calls and re-emit them as xAPI statements, which preserves completion and score. What they cannot do is give you the richer verbs that make xAPI worth having — that needs authoring for xAPI in the first place.\n",{"q":44,"a":45},"Is SCORM 1.2 to 2004 conversion safe?","Structurally, usually. Behaviourally, test it. 2004's stricter data model rejects values 1.2 tolerated, and sequencing defaults can change how a multi-SCO course navigates.\n","i-lucide-repeat","Most SCORM work does not start from a blank canvas. It starts with a PowerPoint deck that has been through\nfour rounds of review, a folder of MP4s, an H5P activity, or a course built for a platform the client has\nsince left. The tools here move that content across the gap.\n\nThey divide by what goes in. **Document and deck converters** wrap slides into a package, usually adding a\nplayer shell, navigation and a completion rule. **Video and media wrappers** do the same for a single asset,\nwhere the only real question is what counts as \"complete\". **Format bridges** move between the standards\nthemselves — SCORM to xAPI, SCORM 1.2 to 2004, H5P to SCORM — and are the fiddliest, because the two ends\ndisagree about what a result means.\n\nThe honest caveat for the whole category: a converter can guarantee a conformant package, but it cannot\ninvent instructional design. A converted deck is a deck in an LMS. That is often exactly what a compliance\nmodule needs, and rarely what a flagship course needs — worth being clear about before the budget is set.\n",{},"Converters & migration","2","converters-migration","categories\u002Fconverters-migration","Turning what you already have — decks, video, H5P, old packages — into something an LMS accepts.","l5wpzElL1rBxqlsmtpMVsuvZRxfSFas4hwwMc2CXT5o",{"id":56,"title":57,"extension":7,"faq":58,"icon":71,"intro":72,"meta":73,"name":74,"order":75,"slug":76,"stem":77,"tagline":78,"__hash__":79},"categories\u002Fcategories\u002Fplayers-runtimes-debuggers.yml","SCORM players, runtimes and debuggers",[59,62,65,68],{"q":60,"a":61},"What is the difference between a SCORM player and a SCORM runtime?","A runtime is a library that implements the SCORM API surface a course calls; a player is a whole application that loads a package, hosts it in an iframe and provides that runtime. Every player contains a runtime, but you can embed a runtime without a player.\n",{"q":63,"a":64},"Do I need a full LMS just to check a package works?","No. An in-browser debugger will unzip the package locally, serve it, and show you every API call it makes. That catches the majority of packaging faults — missing manifest entries, wrong SCORM version, completion never being set — in a minute rather than a deployment cycle.\n",{"q":66,"a":67},"Why does my course work in one player but not in an LMS?","Usually one of three things: the LMS enforces the data-model constraints the player relaxes (string lengths, vocabularies, read-only elements), the LMS restricts cross-origin access to the API object, or the course relies on a sequencing behaviour the LMS implements differently. Tools with LMS quirk profiles exist specifically to reproduce these differences.\n",{"q":69,"a":70},"Which JavaScript runtime should I embed in a new project?","Look for one that supports both SCORM 1.2 and 2004, is still receiving commits, and has an explicit persistence interface so you can decide where learner state goes. The listings here show the standards matrix and the last commit date for exactly that comparison.\n","i-lucide-play-circle","A SCORM package is inert until something gives it an API to talk to. That something is a runtime: the\nJavaScript object a course looks for on `window.API` (SCORM 1.2) or `window.API_1484_11` (SCORM 2004),\nwhich answers `LMSInitialize`, `GetValue`, `SetValue` and `Commit` and persists the data model somewhere.\n\nThe tools here fall into three groups that are easy to confuse. **Runtimes and API wrappers** are libraries\nyou embed — either in a course, to talk to whatever LMS it lands in, or in your own application, to play the\nrole of the LMS. **Players** are complete applications that unzip a package, serve it, and drive it end to\nend. **Debuggers** are players with the lid off: they show the API call transcript, the current CMI data\nmodel, suspend data, sequencing decisions and the moment something returns error 101.\n\nIf you are testing whether a package works before it reaches a client's LMS, start with a debugger. If you\nare building a product that must host SCORM content, start with a runtime and read its persistence adapter\ncarefully — that is where most integrations go wrong.\n",{},"Players, runtimes & debuggers","3","players-runtimes-debuggers","categories\u002Fplayers-runtimes-debuggers","Run a SCORM package outside an LMS — and watch what it actually does.","hcDF7H9nETO_B5A3g2eWnh5kzICgufiyMse4cjh7gHk",{"id":81,"title":82,"extension":7,"faq":83,"icon":96,"intro":97,"meta":98,"name":99,"order":100,"slug":101,"stem":102,"tagline":103,"__hash__":104},"categories\u002Fcategories\u002Ftesting-validation-conformance.yml","SCORM testing, validation and conformance tools",[84,87,90,93],{"q":85,"a":86},"How do I test a SCORM package without an LMS?","Use an in-browser debugger or a local test harness: both provide the SCORM API, record every call, and show you the resulting data model. For automated checks, a harness that can be scripted lets you assert on completion and score in CI.\n",{"q":88,"a":89},"Is there an official SCORM conformance test?","Yes — ADL publishes conformance test suites for SCORM 1.2 and SCORM 2004, and a separate suite for xAPI. They are the reference for whether an implementation is conformant. They are exacting and slow, which is why lighter validators exist for day-to-day work.\n",{"q":91,"a":92},"What should be in a SCORM QA checklist?","At minimum: the package imports cleanly, the correct SCORM version is declared, initialise and terminate are called, completion and success statuses are set as intended, score is reported in the right range, suspend data survives a resume, and the package behaves when the LMS returns an error. Testing against more than one LMS catches the rest.\n",{"q":94,"a":95},"Why does the same package pass one validator and fail another?","Validators differ in strictness and in which optional parts of the specification they enforce. A package can be schema-valid and still break in an LMS that applies stricter data-model rules — which is why manifest validation and runtime testing are two different jobs.\n","i-lucide-check-check","Most SCORM failures are found late, by the wrong person, in production. The course was signed off, uploaded\nto the client's LMS, and then learners' completions did not record — and now the problem is a support ticket\nrather than a build step.\n\nThe tools in this category move that discovery earlier. **Manifest validators** check `imsmanifest.xml`\nagainst the schema and the common packaging mistakes (missing resources, wrong `scormType`, broken hrefs,\nidentifiers that collide). **Test harnesses** drive a package programmatically and assert on what it sent —\nuseful in CI, where a regression in a course template can otherwise ship silently. **Conformance test\nsuites**, notably ADL's, are the formal article: they exercise the full data model and sequencing behaviour\na conformant implementation must support. **Test packages** are the inverse — known-good and known-bad\ncontent you fire at an LMS to find out what *it* actually implements.\n\nA note on the word \"certified\": conformance certification is granted by the bodies that own the\nspecifications, not by tools and not by us. Where a product appears in an official registry we link to it\nand mark the fact `registry-verified`; everything else is a vendor's own claim or our own check.\n",{},"Testing, validation & conformance","4","testing-validation-conformance","categories\u002Ftesting-validation-conformance","Prove a package is correct before a client's LMS proves it isn't.","NiGuliqtBVM9lTcU49a0WOVt0jMaZ2d1QAI3sJyZhdY",{"id":106,"title":107,"extension":7,"faq":108,"icon":121,"intro":122,"meta":123,"name":124,"order":125,"slug":126,"stem":127,"tagline":128,"__hash__":129},"categories\u002Fcategories\u002Fpackagers-sdks-libraries.yml","SCORM packagers, SDKs and libraries for developers",[109,112,115,118],{"q":110,"a":111},"Which JavaScript SCORM library should I use?","Look for one supporting SCORM 1.2 and 2004, still receiving commits, with an explicit persistence interface. The listings show licence, stars and last commit so you can judge maintenance rather than guess. Several long-abandoned wrappers still rank well in search — the badges here say plainly which.\n",{"q":113,"a":114},"Do I need a library, or can I call the SCORM API directly?","You can call it directly; it is not a large API. What libraries buy you is the tedious part — finding the API object across nested frames, handling initialisation order, normalising the differences between 1.2 and 2004, and coping with LMSs that return errors in creative ways.\n",{"q":116,"a":117},"What is the difference between a packager and an authoring tool?","A packager takes content you have already built and wraps it conformantly. An authoring tool creates the content. If you have a web app and need it to run in an LMS, you want a packager.\n",{"q":119,"a":120},"Are these production-ready?","Some are used in thousands of courses; some are a weekend project with three stars. The maintenance badge and the metrics panel on each listing exist precisely so you can tell which is which.\n","i-lucide-package","This is the developer end of the directory, and the part no other directory covers — general software\nindexes exclude libraries and CLIs, and e-learning listings only track products with a pricing page.\n\n**Packagers and CLIs** take a built web app and emit a conformant zip: manifest, resource declarations,\nthe right SCORM version, sensible identifiers. Several are bundler plugins, so a course built with Vite or\nwebpack produces a package as a build artefact rather than a manual step. **API wrappers** live on the\ncontent side and give your application a sane interface over the raw SCORM API — initialise, get, set,\ncommit, terminate — while handling the LMS quirks that make raw integration miserable. **Manifest tooling**\nparses and validates `imsmanifest.xml`, which is where a surprising share of import failures originate.\n**Framework integrations** wrap all of that for React, Vue, Angular, Svelte, Unity and Godot.\n\nWhat to look at before adopting one: does it support both SCORM 1.2 and 2004, does it expose a persistence\nboundary you can control, and is it still maintained? Every listing here carries the licence, the last\ncommit date and an honest maintenance badge, because a wrapper abandoned in 2019 can still be the right\nanswer — but you should know that going in.\n",{},"Packagers, SDKs & libraries","5","packagers-sdks-libraries","categories\u002Fpackagers-sdks-libraries","The pieces you build with when the course is an application, not a slide deck.","3KvCkFwRNYzh9-fZmEfQdmLiSCT3pp7bsS3eQcBnG6c",{"id":131,"title":132,"extension":7,"faq":133,"icon":146,"intro":147,"meta":148,"name":149,"order":150,"slug":151,"stem":152,"tagline":153,"__hash__":154},"categories\u002Fcategories\u002Flms-and-plugins.yml","Learning management systems with SCORM support",[134,137,140,143],{"q":135,"a":136},"Which LMSs support cmi5?","Genuine cmi5 support is still uncommon, and considerably rarer than the marketing suggests. The cmi5 standards page groups every listing we could verify, and flags which claims are vendor-stated rather than checked.\n",{"q":138,"a":139},"Why does my package work in one LMS and not another?","Usually strictness. A permissive LMS accepts data-model values the specification forbids; a stricter one rejects them, and the course silently stops recording. Sequencing and cross-origin access to the API object are the other two common causes.\n",{"q":141,"a":142},"Is an open-source LMS good enough for SCORM?","Often better than the alternatives, because the implementation is inspectable and its bugs are public. Moodle's SCORM module in particular has been exercised by more courses than most commercial engines.\n",{"q":144,"a":145},"Do I need an LMS at all to deliver SCORM?","No. Distribution and licensing platforms in this directory host the content and report back without a full LMS, which suits publishers selling courses into clients' own systems.\n","i-lucide-graduation-cap","Every SCORM package eventually meets an LMS, and the LMS decides whether the standard is honoured or\nmerely claimed. That gap is why this category exists in a tools directory: not to rank platforms on\nfeatures, but to record what each one actually does with a package.\n\nIncluded here are **open-source platforms** whose SCORM implementation you can read, **commercial platforms**\nwhose support you have to take on trust or test, and **plugins** that add or replace SCORM handling in a\nplatform that ships with something weaker. The plugins matter more than they look: a good deal of real-world\nSCORM behaviour on any given installation comes from a module rather than core.\n\nThe facts worth comparing are narrow and specific. Which SCORM version, and which 2004 edition. Whether\nsequencing is implemented or quietly ignored. How suspend data is stored and how much of it survives.\nWhether xAPI and cmi5 are genuinely supported or approximated. Each listing carries these with provenance,\nbecause vendor marketing and vendor documentation frequently disagree with each other.\n",{},"LMS & LMS plugins","6","lms-and-plugins","categories\u002Flms-and-plugins","Where the package finally has to run — and how well each platform actually implements the spec.","xW4Pab08lObiEGf6iWf0S-QGh8jj2jJWV3vWoKcRrFU",{"id":156,"title":157,"extension":7,"faq":158,"icon":171,"intro":172,"meta":173,"name":174,"order":175,"slug":176,"stem":177,"tagline":178,"__hash__":179},"categories\u002Fcategories\u002Fxapi-cmi5.yml","xAPI learning record stores and cmi5 tooling",[159,162,165,168],{"q":160,"a":161},"What is the difference between xAPI and cmi5?","xAPI is a statement format and a store API — deliberately unopinionated. cmi5 is a profile of xAPI that specifies how a course is launched, how a session is identified, and how completion is determined. If you need SCORM-like accountability with xAPI's reach, you need cmi5, not xAPI alone.\n",{"q":163,"a":164},"Do I need an LRS?","Only if you are using xAPI or cmi5. SCORM reports to the LMS and needs nothing extra. Once statements leave the LMS, something has to store them, and that something is an LRS.\n",{"q":166,"a":167},"Is xAPI replacing SCORM?","Not in practice, and not soon. SCORM remains what procurement asks for and what every LMS imports. xAPI is additive — it captures what SCORM cannot — and most real deployments run both.\n",{"q":169,"a":170},"How do I know an LRS is conformant?","ADL publishes a conformance test suite and maintains a list of adopters. We link that registry rather than certifying anything ourselves; listings backed by it carry the Verified chip.\n","i-lucide-share-2","SCORM records what happened inside a course, in a course's own terms, to the LMS that launched it. xAPI\nbreaks all three assumptions: any activity, anywhere, reported to any record store. cmi5 then puts the\ndiscipline back — it is an xAPI profile that restores the parts of SCORM an administrator actually needs,\na defined launch, a session, and rules for what counts as completion.\n\nThis category holds the infrastructure. **Learning record stores** receive, validate and serve statements;\nthey are ordinary databases with a specific API and specific conformance expectations, and several good\nopen-source ones exist. **Client libraries** send statements from courses and applications. **cmi5 tooling**\ncovers players, assignable-unit runtimes and the conformance test suite that decides whether an\nimplementation is real.\n\nA caution worth stating plainly, because it is the fact this directory most often has to correct: an xAPI\nendpoint is not cmi5 support. Receiving statements is the easy half. Honouring the AU lifecycle, the\nsession identifier and the moveOn rules is what makes a completion mean something — and it is what we\ncheck before recording cmi5 as supported.\n",{},"xAPI & cmi5","7","xapi-cmi5","categories\u002Fxapi-cmi5","The standards after SCORM — and the tools that actually implement them.","Z08AoeVOVPwRcuEk4GxjtdqYuXVacfkkSSQMb14CEP4",{"id":181,"title":182,"extension":7,"faq":183,"icon":196,"intro":197,"meta":198,"name":199,"order":200,"slug":201,"stem":202,"tagline":203,"__hash__":204},"categories\u002Fcategories\u002Fdistribution-licensing.yml","SCORM distribution, licensing and hosting platforms",[184,187,190,193],{"q":185,"a":186},"What is SCORM dispatch?","A small SCORM package that acts as a pointer rather than the content. The LMS imports and launches it normally; the package fetches the real course from a hosting platform and relays tracking back. The client's LMS sees an ordinary course; you keep the file.\n",{"q":188,"a":189},"Why not just send the client a zip?","You can, and for a one-off it is fine. What you lose is control of updates, any visibility of usage, and any ability to time-limit access — which is precisely what a licensing arrangement needs.\n",{"q":191,"a":192},"Does dispatch work in every LMS?","Not quite. Some LMSs sandbox course content in ways that break the proxy's connection back to its origin, and some corporate networks block the content domain. Any serious platform in this category publishes a tested-LMS list; ask for it before committing.\n",{"q":194,"a":195},"What happens when a licence expires?","Platform-dependent, and worth testing. The good implementations fail politely with a message; weaker ones leave a blank frame and an LMS recording an incomplete attempt.\n","i-lucide-send","If you sell courses, you have the publisher's problem: the client wants the content inside their own LMS,\nand the moment you hand over a zip you have handed over the asset. Every update becomes a redistribution\nexercise, and you cannot tell how many people took the course or when the licence should end.\n\nThe tools here solve it the same way. The client installs a small proxy package — a few kilobytes, a\nmanifest and a launcher — which streams the real content from the platform at run time and reports tracking\nback. The course never leaves your control, updates take effect without anyone re-importing anything, and\nlicences can carry seat counts, expiry dates and domain locks.\n\nThe vocabulary varies: dispatch, distribution, licensing, content delivery. What differentiates them in\npractice is narrower than the marketing suggests — whether the proxy works in restrictive LMSs that block\ncross-origin access, what happens when the licence expires mid-session, how tracking is reconciled if the\nconnection drops, and whether you can white-label the whole thing for your own clients.\n",{},"Distribution, licensing & hosting","8","distribution-licensing","categories\u002Fdistribution-licensing","Getting a course into someone else's LMS without giving away the course.","nkIpVD2NvqBC7m2F3MZ57C3AjDoCZ0eJjUNGd2oE9ZI",{"id":206,"title":207,"extension":7,"faq":208,"icon":218,"intro":219,"meta":220,"name":221,"order":222,"slug":223,"stem":224,"tagline":225,"__hash__":226},"categories\u002Fcategories\u002Fanalytics-tracking.yml","SCORM and xAPI analytics and tracking tools",[209,212,215],{"q":210,"a":211},"Can I get analytics from SCORM without moving to xAPI?","Yes, within limits. SCORM reports completion, score, time and a small data model — enough for drop-off and pass rates, not enough for fine-grained interaction analysis. Launch-tracking tools add a layer of their own without requiring you to re-author anything.\n",{"q":213,"a":214},"Do I need a separate analytics tool if I have an LRS?","Often, yes. Most record stores are built to store and serve statements correctly rather than to visualise them well. Some ship a reporting layer; the rest expect you to bring one.\n",{"q":216,"a":217},"What should I measure?","Start with completion rate, time to complete, and per-question failure. They are cheap, comparable across courses, and answer the question that actually gets asked — is this course working?\n","i-lucide-bar-chart-3","An LMS will tell you who completed a course. It is usually much less helpful about anything else: where\npeople dropped out, which question everybody fails, whether the course is worth its production cost, or\nwhat happened across the six systems your organisation actually uses.\n\nThe tools here fill that gap from two directions. **Statement analytics** sit on top of an xAPI record store\nand turn a stream of statements into dashboards, cohorts and reports — the natural pairing if you have\nalready adopted xAPI. **Launch and delivery tracking** works at the package level instead, recording when\nand where a course was opened and how far it got, which is the pragmatic option when the content is SCORM\nand always will be.\n\nOne thing to settle early, because it is a data-protection question and not just a technical one: how much\nof this is personally identifiable, how long it is kept, and who can see it. Learner-level analytics are\ngenuinely useful and genuinely sensitive, and the answer should be written down before the dashboard is\nbuilt rather than after someone asks.\n",{},"Analytics & tracking","9","analytics-tracking","categories\u002Fanalytics-tracking","Turning completion records into something worth reading.","eGUFwQLbgbMeYmVcG_VLX1KbidUQxzBPyNR2G2IyenU",[228,229,230,231,232,233,234,235,236],{"slug":26,"name":24},{"slug":51,"name":49},{"slug":76,"name":74},{"slug":101,"name":99},{"slug":126,"name":124},{"slug":151,"name":149},{"slug":176,"name":174},{"slug":201,"name":199},{"slug":223,"name":221},{"category":238,"categories":245,"tools":308},{"id":131,"title":132,"extension":7,"faq":239,"icon":146,"intro":147,"meta":244,"name":149,"order":150,"slug":151,"stem":152,"tagline":153,"__hash__":154},[240,241,242,243],{"q":135,"a":136},{"q":138,"a":139},{"q":141,"a":142},{"q":144,"a":145},{},[246,253,260,267,274,281,288,295,302],{"id":5,"title":6,"extension":7,"faq":247,"icon":21,"intro":22,"meta":252,"name":24,"order":25,"slug":26,"stem":27,"tagline":28,"__hash__":29},[248,249,250,251],{"q":10,"a":11},{"q":13,"a":14},{"q":16,"a":17},{"q":19,"a":20},{},{"id":31,"title":32,"extension":7,"faq":254,"icon":46,"intro":47,"meta":259,"name":49,"order":50,"slug":51,"stem":52,"tagline":53,"__hash__":54},[255,256,257,258],{"q":35,"a":36},{"q":38,"a":39},{"q":41,"a":42},{"q":44,"a":45},{},{"id":56,"title":57,"extension":7,"faq":261,"icon":71,"intro":72,"meta":266,"name":74,"order":75,"slug":76,"stem":77,"tagline":78,"__hash__":79},[262,263,264,265],{"q":60,"a":61},{"q":63,"a":64},{"q":66,"a":67},{"q":69,"a":70},{},{"id":81,"title":82,"extension":7,"faq":268,"icon":96,"intro":97,"meta":273,"name":99,"order":100,"slug":101,"stem":102,"tagline":103,"__hash__":104},[269,270,271,272],{"q":85,"a":86},{"q":88,"a":89},{"q":91,"a":92},{"q":94,"a":95},{},{"id":106,"title":107,"extension":7,"faq":275,"icon":121,"intro":122,"meta":280,"name":124,"order":125,"slug":126,"stem":127,"tagline":128,"__hash__":129},[276,277,278,279],{"q":110,"a":111},{"q":113,"a":114},{"q":116,"a":117},{"q":119,"a":120},{},{"id":131,"title":132,"extension":7,"faq":282,"icon":146,"intro":147,"meta":287,"name":149,"order":150,"slug":151,"stem":152,"tagline":153,"__hash__":154},[283,284,285,286],{"q":135,"a":136},{"q":138,"a":139},{"q":141,"a":142},{"q":144,"a":145},{},{"id":156,"title":157,"extension":7,"faq":289,"icon":171,"intro":172,"meta":294,"name":174,"order":175,"slug":176,"stem":177,"tagline":178,"__hash__":179},[290,291,292,293],{"q":160,"a":161},{"q":163,"a":164},{"q":166,"a":167},{"q":169,"a":170},{},{"id":181,"title":182,"extension":7,"faq":296,"icon":196,"intro":197,"meta":301,"name":199,"order":200,"slug":201,"stem":202,"tagline":203,"__hash__":204},[297,298,299,300],{"q":185,"a":186},{"q":188,"a":189},{"q":191,"a":192},{"q":194,"a":195},{},{"id":206,"title":207,"extension":7,"faq":303,"icon":218,"intro":219,"meta":307,"name":221,"order":222,"slug":223,"stem":224,"tagline":225,"__hash__":226},[304,305,306],{"q":210,"a":211},{"q":213,"a":214},{"q":216,"a":217},{},[309,382,441,516,578,632,704,766,838,904,966,1027,1086,1152,1214,1278],{"id":310,"title":311,"addedAt":312,"alternatives":313,"body":314,"categories":334,"checkedAt":312,"claimed":335,"description":320,"docs":336,"editorsPick":337,"extension":338,"faq":339,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":347,"license":348,"listing":349,"logo":335,"meta":350,"name":351,"navigation":352,"openSource":352,"path":353,"platforms":354,"pricing":356,"registries":359,"repo":358,"seo":360,"standards":361,"status":373,"stem":374,"tagline":375,"tags":376,"vendor":379,"website":380,"__hash__":381},"tools\u002Ftools\u002Fcanvas-lms.md","Canvas Lms","2026-08-24",[],{"type":315,"value":316,"toc":330},"minimark",[317,321,324,327],[318,319,320],"p",{},"Canvas is the LMS with the largest open-source footprint in higher education, developed in the open by Instructure under AGPL-3.0 and pushed to daily. For a directory concerned with standards, the interesting question is not whether it is good software — it plainly is — but which standards the published code actually implements.",[318,322,323],{},"The answer is LTI, thoroughly. Both the legacy 1.1 signing path and the full 1.3 stack are present: OIDC login, JWK storage, deep linking, and LTI Advantage services including grade passback. If you are building a SCORM or cmi5 player and want it to appear inside a mainstream LMS, Canvas is one of the best-documented platforms to certify against.",[318,325,326],{},"SCORM is the gap, and it is a widely misreported one. Canvas identifies SCORM 1.1, 1.2 and 2004 manifests during content migration, then fails, because no converter is registered for them in the open-source tree. Content packaging support here means Common Cartridge, not SCORM.",[318,328,329],{},"For a buyer that distinction is the whole decision. Canvas plus a SCORM player registered over LTI is a normal, well-trodden architecture — but it is two products, two licences and two support relationships, and anyone who costed the deployment on the assumption that SCORM came in the box has costed it wrong.",{"title":331,"searchDepth":332,"depth":332,"links":333},"",2,[],[151],null,"https:\u002F\u002Fgithub.com\u002Finstructure\u002Fcanvas-lms\u002Fwiki",false,"md",[340,343],{"q":341,"a":342},"So can Canvas run a SCORM course or not?","Not from this repository alone. The usual route is an LTI tool that hosts the package and reports a grade back — Instructure's own paid SCORM offering, or a third-party player registered as an external tool. Because Canvas is a capable LTI 1.3 platform, that route works well; it is simply not what \"open-source Canvas supports SCORM\" would imply.\n",{"q":344,"a":345},"Is self-hosting it realistic?","It is a large Rails application with Postgres, Redis and a background job tier, released continuously rather than in versions. Institutions do run it, but budget for a platform team; most Canvas users buy the hosted service.\n","self-hosted","US","AGPL-3.0","full",{},"Canvas LMS",true,"\u002Ftools\u002Fcanvas-lms",[355],"web",{"model":357,"freeTier":352,"source":358},"open-source","https:\u002F\u002Fgithub.com\u002Finstructure\u002Fcanvas-lms",[],{"description":320},{"scorm12":362,"scorm2004":366,"lti":367},{"supported":337,"provenance":363,"checkedAt":312,"source":364,"note":365},"editor-checked","https:\u002F\u002Fgithub.com\u002Finstructure\u002Fcanvas-lms\u002Fblob\u002Fmaster\u002Flib\u002Fcanvas\u002Fmigration\u002Fpackage_identifier.rb","The open-source code recognises a SCORM 1.1, 1.2 or 2004 manifest by namespace, but no converter plugin is registered for those types — only QTI, Moodle and Academic Benchmark are — so the import raises UnsupportedPackage. SCORM playback on Instructure's hosted Canvas is a separately licensed add-on and is not this repository.\n",{"supported":337,"provenance":363,"checkedAt":312,"source":364},{"supported":352,"versions":368,"provenance":363,"checkedAt":312,"source":371,"note":372},[369,370],"1.1","1.3","https:\u002F\u002Fgithub.com\u002Finstructure\u002Fcanvas-lms\u002Ftree\u002Fmaster\u002Flib\u002Flti","lib\u002Flti carries both a v1p1 signing path and the 1.3 stack — OIDC login, key storage, deep linking and LTI Advantage access tokens.\n","active","tools\u002Fcanvas-lms","Instructure's open-source LMS — a strong LTI platform, with no SCORM engine in the repo",[377,346,378],"lms","lti","Instructure, Inc.","https:\u002F\u002Fwww.instructure.com\u002Fcanvas","qP_nGCSZt85msNMAuvOE2etD-3EnjRl6kXwTyLgs9Vk",{"id":383,"title":384,"addedAt":312,"alternatives":385,"body":386,"categories":402,"checkedAt":312,"claimed":335,"description":390,"docs":403,"editorsPick":337,"extension":338,"faq":404,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":335,"license":408,"listing":349,"logo":335,"meta":409,"name":410,"navigation":352,"openSource":352,"path":411,"platforms":412,"pricing":414,"registries":415,"repo":416,"seo":417,"standards":418,"status":373,"stem":434,"tagline":435,"tags":436,"vendor":438,"website":439,"__hash__":440},"tools\u002Ftools\u002Fchamilo.md","Chamilo",[],{"type":315,"value":387,"toc":400},[388,391,394,397],[318,389,390],{},"Chamilo is a general-purpose learning management system — courses, sessions, gradebook, quizzes, attendance, certificates, surveys, e-commerce catalogue — maintained by the Chamilo Association and released under GPL-3.0. It has a large installed base in Latin America and in francophone education, and its sixty-plus fully translated interface languages, including RTL support, are a genuine differentiator against LMSs that treat localisation as an afterthought.",[318,392,393],{},"For standards buyers the relevant part is the learning path. Chamilo imports SCORM 1.2 and AICC packages and tracks them against its own runtime, and its LTI plugin lets a course launch external tools over both 1.1 and 1.3. What it does not appear to do, in the Chamilo 3 tree we read, is SCORM 2004 — there is no 1484.11 runtime in master. If your content library is 2004 with sequencing, this is the wrong platform.",[318,395,396],{},"It suits an institution that wants a self-hosted LMS with modest hosting requirements, strong translation coverage and no per-seat licence. It suits a team wanting a modern API-first admin surface less well: master is a Symfony and Vue rewrite still carrying a large amount of legacy PHP, and 452 open issues against 985 stars reflects a wide feature surface as much as neglect.",[318,398,399],{},"Development is unambiguously live — commits land daily, and CI runs Behat and PHPUnit.",{"title":331,"searchDepth":332,"depth":332,"links":401},[],[151],"https:\u002F\u002Fdocs.chamilo.org",[405],{"q":406,"a":407},"Is the master branch the version I would install?","Probably not. master is Chamilo 3, the Symfony and Vue rewrite; most production deployments still run the 1.11 line. If you are evaluating standards support, check it against the branch you actually intend to deploy, because the two trees differ considerably.\n","GPL-3.0",{},"Chamilo LMS","\u002Ftools\u002Fchamilo",[355,413],"saas",{"model":357,"freeTier":352},[],"https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms",{"description":390},{"scorm12":419,"scorm2004":422,"aicc":424,"xapi":426,"lti":430},{"supported":352,"provenance":363,"checkedAt":312,"source":420,"note":421},"https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms\u002Fblob\u002Fmaster\u002Fpublic\u002Fmain\u002Flp\u002FScormApi.php","The learning-path runtime (ScormApi.php, assets\u002Fvue\u002Fservices\u002FscormRuntimeApi.js) implements the SCORM 1.2 data model — lesson_status, core_exit, suspend data, interactions — and there is a SCORM export path for quizzes.\n",{"supported":337,"provenance":363,"checkedAt":312,"note":423},"We found no SCORM 2004 runtime in the Chamilo 3 master tree: the learning-path API is 1.2-shaped and there is no API_1484_11 adapter or 2004 schema set. Treat 2004 packages as unsupported until the project says otherwise.\n",{"supported":352,"provenance":363,"checkedAt":312,"source":425},"https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms\u002Fblob\u002Fmaster\u002Fpublic\u002Fmain\u002Flp\u002Faicc.class.php",{"supported":352,"provenance":427,"checkedAt":312,"source":428,"note":429},"vendor-stated","https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms#readme","Claimed in the project README's feature list. The xAPI code we located in the master tree sits inside the bundled CStudio plugin rather than in core, so read this as plugin-level emission rather than a core LRS integration.\n",{"supported":352,"versions":431,"provenance":363,"checkedAt":312,"source":432,"note":433},[369,370],"https:\u002F\u002Fgithub.com\u002Fchamilo\u002Fchamilo-lms\u002Ftree\u002Fmaster\u002Fpublic\u002Fplugin\u002FImsLti","The bundled ImsLti plugin ships OAuth1.php for the 1.1 flow and jwks.php plus platform key generation for 1.3. Chamilo acts as the LTI platform consuming external tools, not as a tool provider.\n","tools\u002Fchamilo","Full open-source LMS with SCORM 1.2 and AICC learning paths and a bundled LTI plugin",[377,437,346],"php","Chamilo Association","https:\u002F\u002Fchamilo.org","4-XJNNVCnO3dojYC3NNoPSK_6s0lSSS1klZX_mP0qw8",{"id":442,"title":443,"addedAt":312,"alternatives":444,"body":446,"categories":475,"checkedAt":312,"claimed":335,"description":476,"docs":477,"editorsPick":337,"extension":338,"faq":478,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":335,"license":348,"listing":349,"logo":335,"meta":485,"name":486,"navigation":352,"openSource":352,"path":487,"platforms":488,"pricing":490,"registries":492,"repo":493,"seo":494,"standards":495,"status":373,"stem":510,"tagline":511,"tags":512,"vendor":513,"website":514,"__hash__":515},"tools\u002Ftools\u002Fclaroline.md","Claroline",[445],"openolat",{"type":315,"value":447,"toc":473},[448,456,467,470],[318,449,450,451,455],{},"Claroline Connect is the Symfony and React rewrite of the long-standing Claroline project, developed by the Claroline Consortium. Its shape is workspace-centric: a workspace holds a resource tree, and everything — a text, a quiz built with the ",[452,453,454],"code",{},"exo"," plugin, a file, a SCORM package — is a resource with the same permissions and tracking model. That consistency is its main strength and the reason it suits institutions that want to build course structures rather than upload finished modules.",[318,457,458,459,462,463,466],{},"SCORM lives in a plugin with its own entities for SCOs and per-learner tracking, and it is the stronger half of the platform's standards story: both 1.2 and 2004 are handled, with the player exposing ",[452,460,461],{},"window.API"," or ",[452,464,465],{},"window.API_1484_11"," as appropriate. Import is strict about the manifest version string, which is worth knowing before you migrate a library.",[318,468,469],{},"The gap is everything else. There is no LTI, no xAPI and no cmi5 in the repository. If your integration plan involves launching external tools or forwarding statements to an LRS, this is not the platform.",[318,471,472],{},"Development is steady — 351 stars, active commits through August 2026, releases tagged — but it is a smaller ecosystem than Moodle or OpenOLAT, and the documentation is thinner than the codebase deserves. AGPL-3.0 is a real consideration for hosted use.",{"title":331,"searchDepth":332,"depth":332,"links":474},[],[151],"Claroline Connect is the Symfony and React rewrite of the long-standing Claroline project, developed by the Claroline Consortium. Its shape is workspace-centric: a workspace holds a resource tree, and everything — a text, a quiz built with the exo plugin, a file, a SCORM package — is a resource with the same permissions and tracking model. That consistency is its main strength and the reason it suits institutions that want to build course structures rather than upload finished modules.","https:\u002F\u002Fclaroline.github.io\u002FClaroline",[479,482],{"q":480,"a":481},"Which SCORM packages will it refuse to import?","Anything whose manifest schemaversion is not exactly \"1.2\", \"2004 3rd Edition\" or \"2004 4th Edition\". That includes 2004 2nd Edition and any package with a non-standard version string, which some older authoring tools produce.\n",{"q":483,"a":484},"Does the AGPL matter for a hosted deployment?","Yes. AGPL-3.0 extends the copyleft to users reaching the software over a network, so a modified Claroline offered to learners as a service carries an obligation to make the modified source available.\n",{},"Claroline Connect","\u002Ftools\u002Fclaroline",[355,489],"linux",{"model":357,"currency":491,"freeTier":352},"EUR",[],"https:\u002F\u002Fgithub.com\u002Fclaroline\u002FClaroline",{"description":476},{"scorm12":496,"scorm2004":499,"lti":505,"xapi":508},{"supported":352,"provenance":363,"checkedAt":312,"source":497,"note":498},"https:\u002F\u002Fgithub.com\u002Fclaroline\u002FClaroline\u002Ftree\u002F15.0\u002Fsrc\u002Fplugin\u002Fscorm","The scorm plugin's ScormManager accepts a manifest schemaversion of \"1.2\", and its player exposes window.API with the LMS* method set. Read in source, August 2026.\n",{"supported":352,"editions":500,"provenance":363,"checkedAt":312,"source":503,"note":504},[501,502],"3rd","4th","https:\u002F\u002Fgithub.com\u002Fclaroline\u002FClaroline\u002Fblob\u002F15.0\u002Fsrc\u002Fplugin\u002Fscorm\u002FManager\u002FScormManager.php","ScormManager matches the schemaversion string against exactly \"2004 3rd Edition\" and \"2004 4th Edition\" and throws InvalidScormArchiveException on anything else — so 2004 2nd Edition packages are rejected at import. The player exposes window.API_1484_11. Read in source, August 2026.\n",{"supported":337,"versions":506,"provenance":363,"checkedAt":312,"note":507},[],"No LTI plugin or class in the repository as of August 2026.",{"supported":337,"provenance":363,"checkedAt":312,"note":509},"No xAPI or LRS code in the repository as of August 2026.","tools\u002Fclaroline","Symfony and React learning platform with a SCORM 1.2 and 2004 player plugin",[377,437,346],"Claroline Consortium","https:\u002F\u002Fwww.claroline.com","_1Jq4s4-NJYlx23CKWldZxfp9my6pVzCa5edtD4jHME",{"id":517,"title":518,"addedAt":312,"alternatives":519,"body":520,"categories":540,"checkedAt":312,"claimed":335,"description":524,"docs":541,"editorsPick":337,"extension":338,"faq":542,"firstParty":337,"foundedYear":335,"hosting":549,"hqCountry":550,"license":551,"listing":349,"logo":335,"meta":552,"name":553,"navigation":352,"openSource":352,"path":554,"platforms":555,"pricing":556,"registries":558,"repo":559,"seo":560,"standards":561,"status":570,"stem":571,"tagline":572,"tags":573,"vendor":576,"website":559,"__hash__":577},"tools\u002Ftools\u002Fescolalms-scorm.md","Escolalms Scorm",[],{"type":315,"value":521,"toc":538},[522,525,532,535],[318,523,524],{},"This is the SCORM component of EscolaLMS, an open-source Polish LMS built on Laravel, published separately on Packagist so it can be dropped into any Laravel application. It handles the unglamorous half of SCORM hosting: accept a zip, parse the manifest, unpack it to storage, expose a player endpoint, and persist per-learner tracking into three tables — package, SCO, and SCO tracking.",[318,526,527,528,531],{},"Parsing is delegated to ",[452,529,530],{},"devianl2\u002Flaravel-scorm","; the value added here is the API surface, the tracking strategies for 1.2 and 2004, the permission seeders and a Swagger definition. Two endpoints do the work, one to upload and one to play, and the player is returned as HTML wrapping an iframe, which makes it straightforward to embed in a decoupled front end.",[318,533,534],{},"Be clear about scope before adopting it. It is a backend component, not a product: there is no authoring, no conformance testing, no reporting beyond the tracking rows, and the maintainers' own README links two open issues admitting the package \"does not support all available scorm formats\". A 2004 2nd Edition manifest is simply refused.",[318,536,537],{},"Maintenance is quiet rather than dead. Thirteen stars, CI and coverage wired up, tests worth reading as documentation, but the last push was January 2025. Treat it as stable-and-parked: fine to build on, unlikely to gain features, and you should expect to maintain your own fork if you hit an edge case.",{"title":331,"searchDepth":332,"depth":332,"links":539},[],[151],"https:\u002F\u002Fescolalms.github.io\u002FScorm\u002F",[543,546],{"q":544,"a":545},"Do I have to run the whole EscolaLMS platform?","No. It is an ordinary Composer package for any Laravel application, but it does pull in escolalms\u002Fcore and escolalms\u002Fauth, so you inherit that project's authentication and permission conventions rather than your own.\n",{"q":547,"a":548},"Which licence applies?","The LICENSE file says MIT; composer.json says Apache-2.0. Both are permissive and the discrepancy is almost certainly an oversight, but if your compliance process records licences per dependency, raise it with the maintainers before shipping.\n","library","PL","MIT",{},"EscolaLMS Scorm","\u002Ftools\u002Fescolalms-scorm",[355,549],{"model":357,"source":557},"https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fescolalms\u002Fscorm",[],"https:\u002F\u002Fgithub.com\u002FEscolaLMS\u002FScorm",{"description":524},{"scorm12":562,"scorm2004":565,"xapi":568,"cmi5":569},{"supported":352,"provenance":363,"checkedAt":312,"source":563,"note":564},"https:\u002F\u002Fgithub.com\u002FEscolaLMS\u002FScorm\u002Fblob\u002Fmain\u002Fsrc\u002FServices\u002FScormService.php","ScormService maps a manifest schemaversion of '1.2' to the SCORM_12 constant, and Scorm12FieldStrategy handles the 1.2 tracking fields.\n",{"supported":352,"editions":566,"provenance":363,"checkedAt":312,"source":563,"note":567},[501,502],"The version switch accepts exactly '2004 3rd Edition' and '2004 4th Edition'. A 2nd Edition manifest falls through and is rejected as an invalid package.\n",{"supported":337,"provenance":363,"checkedAt":312},{"supported":337,"provenance":363,"checkedAt":312},"maintained","tools\u002Fescolalms-scorm","Laravel package that stores, plays and tracks SCORM packages over a REST API",[574,437,575],"laravel","api","EscolaSoft","yEVSQM88FQ7c4-yX68UuDd1r-ZDxSM0tlN855ShtePs",{"id":579,"title":580,"addedAt":312,"alternatives":581,"body":582,"categories":606,"checkedAt":312,"claimed":335,"description":586,"docs":335,"editorsPick":337,"extension":338,"faq":607,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":335,"license":611,"listing":349,"logo":335,"meta":612,"name":613,"navigation":352,"openSource":352,"path":614,"platforms":615,"pricing":616,"registries":618,"repo":619,"seo":620,"standards":621,"status":373,"stem":627,"tagline":628,"tags":629,"vendor":335,"website":617,"__hash__":631},"tools\u002Ftools\u002Fforma-lms.md","Forma Lms",[],{"type":315,"value":583,"toc":604},[584,587,598,601],[318,585,586],{},"Forma LMS is a self-hosted PHP platform aimed at corporate training rather than schools: catalogues, classrooms, certificates, competency and reporting, with an e-commerce module for selling courses. It descends from the community edition of Docebo 4.0.5, forked in 2012 when that product moved to SaaS, and remains largely an Italian-speaking community project.",[318,588,589,590,593,594,597],{},"For this directory the relevant part is that it ships its own SCORM player rather than embedding someone else's. The run-time adapter reads the manifest's ",[452,591,592],{},"schemaversion"," and instantiates a 1.2 or a 2004 API object accordingly, storing tracking in dedicated ",[452,595,596],{},"learning_scorm_*"," tables, so both content generations run natively. There is a class named for xAPI in the same file, but no evidence of a working statement pipeline, so no xAPI or cmi5 claim is recorded here.",[318,599,600],{},"Where it fits: an organisation that wants a conventional, ledger-style corporate LMS on its own servers and does not want to run Moodle. Where it does not: anyone needing a modern deployment story. The install documentation still specifies PHP 8.0–8.1 and MySQL 5.7, and PHP 8.1 reached end of security support at the end of 2025 — a real consideration for a system holding staff records.",[318,602,603],{},"Maintenance is steady but small: commits through 2026, roughly forty stars, and this GitHub repository is described as a mirror, so issues and discussion happen on formalms.org rather than here.",{"title":331,"searchDepth":332,"depth":332,"links":605},[],[151],[608],{"q":609,"a":610},"Which licence does it actually carry?","GPL-2.0. The repository has no LICENSE file, so GitHub reports none, but the header of every PHP source file points at the GPL-2.0 text and records the project's descent from Docebo 4.0.5 CE.\n","GPL-2.0-only",{},"Forma LMS","\u002Ftools\u002Fforma-lms",[355,489],{"model":357,"source":617},"https:\u002F\u002Fwww.formalms.org",[],"https:\u002F\u002Fgithub.com\u002Fformalms\u002Fformalms",{"description":586},{"scorm12":622,"scorm2004":624},{"supported":352,"provenance":363,"checkedAt":312,"source":623},"https:\u002F\u002Fgithub.com\u002Fformalms\u002Fformalms\u002Fblob\u002Fmaster\u002Fhtml\u002FappLms\u002Fviews\u002Fplayerscorm\u002Flib\u002FSCORM\u002FAPI.js",{"supported":352,"editions":625,"provenance":363,"checkedAt":312,"source":623,"note":626},[501,502],"The player dispatches on the manifest schemaversion and accepts \"1.2\", \"2004 3rd Edition\" and \"2004 4th Edition\"; anything else is rejected as an unsupported version.\n","tools\u002Fforma-lms","Corporate-focused PHP learning platform with its own SCORM 1.2 and 2004 player",[437,346,630],"corporate","axkymF6BNKWWZXCnKS2F_LHCLCR_Z9lzZNYzlDF8V4I",{"id":633,"title":634,"addedAt":312,"alternatives":635,"body":636,"categories":674,"checkedAt":312,"claimed":335,"description":640,"docs":675,"editorsPick":337,"extension":338,"faq":676,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":335,"license":348,"listing":349,"logo":335,"meta":680,"name":634,"navigation":352,"openSource":352,"path":681,"platforms":682,"pricing":683,"registries":685,"repo":686,"seo":687,"standards":688,"status":373,"stem":697,"tagline":698,"tags":699,"vendor":335,"website":684,"__hash__":703},"tools\u002Ftools\u002Ffrappe-learning.md","Frappe Learning",[],{"type":315,"value":637,"toc":672},[638,641,666,669],[318,639,640],{},"Frappe Learning is a full LMS — courses, batches, cohorts, assignments, quizzes, certificates, live classes — built on the Frappe framework and sharing an identity and database with ERPNext. It is the natural choice for an organisation already running that stack, and it is genuinely well maintained: thousands of stars, a large fork count, and commits most days.",[318,642,643,644,646,647,649,650,653,654,657,658,661,662,665],{},"Its SCORM support should be understood as a chapter type, not a runtime. Reading the player, both ",[452,645,461],{}," and ",[452,648,465],{}," are declared so content of either generation will find something and initialise. Beyond that the implementation is a stub: every function returns ",[452,651,652],{},"\"true\"",", ",[452,655,656],{},"GetLastError"," always returns ",[452,659,660],{},"\"0\"",", and of the whole data model only completion status and ",[452,663,664],{},"cmi.suspend_data"," reach the server. Scores, interactions, objectives and timing are printed to the browser console and dropped.",[318,667,668],{},"For a lot of compliance work that is enough — the question being asked is whether someone finished the module, and bookmarking survives a reload. It is not enough where a score, an attempt history, question-level reporting or a regulator's evidence trail is required, and it is not the platform to test a package against if you want to know whether that package is correct.",[318,670,671],{},"Deciding today: adopt it for its own authoring and cohort features, treat imported SCORM as a secondary path, and test your specific package before committing.",{"title":331,"searchDepth":332,"depth":332,"links":673},[],[151],"https:\u002F\u002Fdocs.frappe.io\u002Flearning",[677],{"q":678,"a":679},"Will it record quiz scores from a SCORM package?","No. The adapter accepts every SetValue call and returns success, but only completion status and suspend data are written back to the server. A score set by the package is not stored, so \"completed\" is the only outcome you can report on.\n",{},"\u002Ftools\u002Ffrappe-learning",[355,413],{"model":357,"freeTier":352,"source":684},"https:\u002F\u002Ffrappe.io\u002Flearning",[],"https:\u002F\u002Fgithub.com\u002Ffrappe\u002Flms",{"description":640},{"scorm12":689,"scorm2004":692,"xapi":695,"cmi5":696},{"supported":352,"provenance":363,"checkedAt":312,"source":690,"note":691},"https:\u002F\u002Fgithub.com\u002Ffrappe\u002Flms\u002Fblob\u002Fdevelop\u002Ffrontend\u002Fsrc\u002Fpages\u002FSCORMChapter.vue","A window.API object is exposed, but only cmi.core.lesson_status and cmi.suspend_data are persisted; every function returns \"true\" and LMSGetLastError always returns \"0\".\n",{"supported":352,"editions":693,"provenance":363,"checkedAt":312,"source":690,"note":694},[],"window.API_1484_11 is exposed with the same minimal behaviour — completion status and suspend data only. Scores, interactions and objectives are logged to the browser console and discarded.\n",{"supported":337,"provenance":363,"checkedAt":312},{"supported":337,"provenance":363,"checkedAt":312},"tools\u002Ffrappe-learning","Open-source LMS from the Frappe stack, with a deliberately minimal SCORM chapter type",[700,701,346,702],"python","vue","frappe","lprNCqouqAr9vqZKZkNNr3ZAv3FvBgtDon8ZxNECF7Y",{"id":705,"title":706,"addedAt":312,"alternatives":707,"body":709,"categories":725,"checkedAt":312,"claimed":335,"description":713,"docs":726,"editorsPick":337,"extension":338,"faq":727,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":734,"license":408,"listing":349,"logo":335,"meta":735,"name":736,"navigation":352,"openSource":352,"path":737,"platforms":738,"pricing":739,"registries":741,"repo":740,"seo":742,"standards":743,"status":373,"stem":760,"tagline":761,"tags":762,"vendor":335,"website":764,"__hash__":765},"tools\u002Ftools\u002Filias.md","Ilias",[708,445],"moodle",{"type":315,"value":710,"toc":723},[711,714,717,720],[318,712,713],{},"ILIAS is a PHP learning management system that has been developed at the University of Cologne and by a German-speaking association of universities, public bodies and companies since 1998. It is the platform of choice for a specific institutional profile: European public-sector and higher-education organisations that need a system they host themselves, with documentation and support in German, and with data-protection questions treated as first-class design constraints rather than configuration.",[318,715,716],{},"For standards work it is unusually well equipped. SCORM 1.2, SCORM 2004 and cmi5\u002FxAPI are separate repository object types in core, not plugins, and the SCORM 2004 component contains a real sequencer rather than a run-time shim. The cmi5 component's design — routing statements through ILIAS to an external LRS so identifying data can be stripped or deleted on the way — is a genuinely distinctive answer to the privacy problem that stops many European institutions adopting xAPI at all.",[318,718,719],{},"It is not a light system. The codebase is large, the release cadence is slow and deliberate, upgrades between major versions are projects in themselves, and the interface will feel institutional to anyone arriving from a commercial LXP. Nor is it the right choice if you want an LRS: ILIAS deliberately is not one.",[318,721,722],{},"Maintenance is not a concern. The repository is committed to daily, releases are regular, and the association behind it has outlasted most of its contemporaries.",{"title":331,"searchDepth":332,"depth":332,"links":724},[],[151],"https:\u002F\u002Fdocu.ilias.de",[728,731],{"q":729,"a":730},"Does ILIAS store xAPI statements itself?","No. It sits between the content and an external Learning Record Store, which is the point of the design — data can be pseudonymised or dropped before it leaves the institution. You still have to run an LRS.\n",{"q":732,"a":733},"What happens to a SCORM 1.2 package on import?","The 2004 learning-module object converts it: `convert_1_2_to_2004()` applies an XSL transform to the manifest before the package is stored. Worth knowing if a package behaves differently in ILIAS than elsewhere.\n","DE",{},"ILIAS","\u002Ftools\u002Filias",[355],{"model":357,"source":740},"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS",[],{"description":713},{"scorm12":744,"scorm2004":747,"cmi5":751,"xapi":754,"lti":756},{"supported":352,"provenance":363,"checkedAt":312,"source":745,"note":746},"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS\u002Ftree\u002Ftrunk\u002Fcomponents\u002FILIAS\u002FScormAicc","The `ScormAicc` component holds the SCORM 1.2 learning-module object, import parser and per-SCO tracking tables.\n",{"supported":352,"editions":748,"provenance":363,"checkedAt":312,"source":749,"note":750},[501,502],"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS\u002Fblob\u002Ftrunk\u002Fcomponents\u002FILIAS\u002FScorm2004\u002Fclasses\u002Fclass.ilObjSCORM2004LearningModule.php","Import accepts manifests whose schemaversion is \"CAM 1.3\", \"2004 3rd Edition\" or \"2004 4th Edition\"; SCORM 1.2 packages are converted to 2004 on import by an XSL transform. A sequencer ships in the same component.\n",{"supported":352,"provenance":363,"checkedAt":312,"source":752,"note":753},"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS\u002Fblob\u002Ftrunk\u002Fcomponents\u002FILIAS\u002FCmiXapi\u002FREADME.md","The `CmiXapi` component's own README states support for xAPI 1.0.3 and cmi5 \"provided that single assignable units are used\".\n",{"supported":352,"provenance":363,"checkedAt":312,"source":752,"note":755},"ILIAS is not itself an LRS. Statements are proxied through ILIAS to an external LRS so that data can be pseudonymised and reduced on the way; some reporting queries are specific to Learning Locker.\n",{"supported":352,"versions":757,"provenance":363,"checkedAt":312,"source":758,"note":759},[],"https:\u002F\u002Fgithub.com\u002FILIAS-eLearning\u002FILIAS\u002Ftree\u002Ftrunk\u002Fcomponents\u002FILIAS\u002FLTIConsumer","Both `LTIConsumer` and `LTIProvider` components are in the tree, and the consumer implements line items and grade services. We did not confirm which LTI versions are certified, so no version is claimed here.\n","tools\u002Filias","German open-source LMS carrying SCORM 1.2, SCORM 2004 and cmi5 objects in core",[377,437,763],"higher-education","https:\u002F\u002Fwww.ilias.de","z68DduKVDlaKuG1OaVx7iiHmJGFTxeL55Ry1epAKJ8s",{"id":767,"title":768,"addedAt":312,"alternatives":769,"body":770,"categories":793,"checkedAt":312,"claimed":335,"description":794,"docs":795,"editorsPick":337,"extension":338,"faq":796,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":803,"license":804,"listing":349,"logo":335,"meta":805,"name":768,"navigation":352,"openSource":352,"path":806,"platforms":807,"pricing":808,"registries":809,"repo":810,"seo":811,"standards":812,"status":373,"stem":831,"tagline":832,"tags":833,"vendor":835,"website":836,"__hash__":837},"tools\u002Ftools\u002Fmoodle.md","Moodle",[],{"type":315,"value":771,"toc":791},[772,779,782,785,788],[318,773,774,775,778],{},"Moodle matters to this directory for a reason that has little to do with its feature list: it is the LMS your content is most likely to land in, and ",[452,776,777],{},"mod_scorm"," is the de facto reference against which a great deal of SCORM content is informally tested. Whatever else you build for, you will end up building for this.",[318,780,781],{},"As a SCORM host it is genuinely capable. The activity module implements SCORM 1.2 and 2004 data models separately, handles AICC, tracks multiple attempts, and exposes reporting that most commercial platforms charge for. Because everything is inspectable PHP, when a course misbehaves you can read the code that decided it misbehaved — which is not a small advantage during a support call.",[318,783,784],{},"The honest caveat is SCORM 2004 sequencing. It is implemented, and it has diverged from the reference behaviour in edge cases for years. Content that depends on non-trivial sequencing rules should be tested here specifically rather than assumed to work; content that passes here should still be tested elsewhere.",[318,786,787],{},"It is also not an xAPI platform. Core's xAPI code serves H5P internally, and reaching an LRS means adding the separately maintained Logstore xAPI plugin. There is no cmi5 support at all.",[318,789,790],{},"Development is continuous — the main branch is 5.3dev with commits within the week — and the plugin ecosystem around it is the largest in the category.",{"title":331,"searchDepth":332,"depth":332,"links":792},[],[151],"Moodle matters to this directory for a reason that has little to do with its feature list: it is the LMS your content is most likely to land in, and mod_scorm is the de facto reference against which a great deal of SCORM content is informally tested. Whatever else you build for, you will end up building for this.","https:\u002F\u002Fdocs.moodle.org",[797,800],{"q":798,"a":799},"If a package works in Moodle, will it work everywhere?","Not reliably, and the reverse trips people up more often. Moodle's SCORM 2004 sequencing has known divergences from the reference behaviour, so content that leans on sequencing can pass here and fail elsewhere, or the other way round. Treat Moodle as one target among several, not as a conformance test.\n",{"q":801,"a":802},"Can Moodle send xAPI to an external LRS?","Not out of the box. The core xAPI code handles statements from H5P activities internally. Sending to an LRS is the job of the Logstore xAPI plugin, which is maintained separately from core.\n","AU","GPL-3.0-or-later",{},"\u002Ftools\u002Fmoodle",[355,489],{"model":357,"freeTier":352},[],"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle",{"description":794},{"scorm12":813,"scorm2004":816,"aicc":820,"lti":822,"xapi":826,"cmi5":829},{"supported":352,"provenance":363,"checkedAt":312,"source":814,"note":815},"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Ftree\u002Fmain\u002Fpublic\u002Fmod\u002Fscorm\u002Fdatamodels","mod_scorm ships separate scorm_12 and scorm_13 data models plus a sequencing handler; SCORM 1.2 is the better-exercised of the two.\n",{"supported":352,"editions":817,"provenance":363,"checkedAt":312,"source":818,"note":819},[501,502],"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Fblob\u002Fmain\u002Fpublic\u002Fmod\u002Fscorm\u002Fdatamodels\u002Fscormlib.php","scormlib.php accepts a schemaversion matching '2004 3rd Edition' or '2004 4th Edition'. Sequencing and navigation are implemented but have long-standing gaps; complex sequencing trees are where Moodle most often diverges from a commercial LMS.\n",{"supported":352,"provenance":363,"checkedAt":312,"source":821},"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Fblob\u002Fmain\u002Fpublic\u002Fmod\u002Fscorm\u002Fdatamodels\u002Faicclib.php",{"supported":352,"versions":823,"provenance":363,"checkedAt":312,"source":824,"note":825},[369,370],"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Fblob\u002Fmain\u002Fpublic\u002Fmod\u002Flti\u002Flang\u002Fen\u002Flti.php","mod_lti covers LTI 1.0\u002F1.1 and 2.0 under OAuth 1.0a and LTI 1.3 Advantage under JWT. Moodle can act as both consumer and publisher of tools.\n",{"supported":337,"provenance":363,"checkedAt":312,"source":827,"note":828},"https:\u002F\u002Fgithub.com\u002Fmoodle\u002Fmoodle\u002Ftree\u002Fmain\u002Fpublic\u002Flib\u002Fxapi","Core ships an internal xAPI subsystem, but it exists to receive statements from H5P content inside Moodle. Core cannot launch an xAPI package or forward statements to an external LRS; that needs the separate Logstore xAPI plugin.\n",{"supported":337,"provenance":363,"checkedAt":312,"note":830},"There is no cmi5 activity module in core — the activity list runs scorm, imscp, lti, h5pactivity and so on, with nothing for cmi5.\n","tools\u002Fmoodle","The most widely deployed open-source LMS, and the SCORM behaviour most content gets tested against",[377,346,437,834],"mod-scorm","Moodle Pty Ltd","https:\u002F\u002Fmoodle.org","f-reXiVaJTR3s73DYQU8uKELvzFMpYN4oUbHjiWOGuY",{"id":839,"title":840,"addedAt":312,"alternatives":841,"body":843,"categories":864,"checkedAt":312,"claimed":335,"description":865,"docs":866,"editorsPick":337,"extension":338,"faq":867,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":335,"license":348,"listing":349,"logo":335,"meta":874,"name":875,"navigation":352,"openSource":352,"path":876,"platforms":877,"pricing":878,"registries":879,"repo":880,"seo":881,"standards":882,"status":373,"stem":897,"tagline":898,"tags":899,"vendor":901,"website":902,"__hash__":903},"tools\u002Ftools\u002Fopen-edx.md","Open Edx",[842],"openedx-scorm-xblock",{"type":315,"value":844,"toc":862},[845,856,859],[318,846,847,848,851,852,855],{},"Open edX is the platform behind edx.org and a long list of university and government deployments — Studio for authoring, an LMS for delivery, and an XBlock plugin architecture that most of its standards support hangs off. The repository is one of the larger open-source education codebases in existence: over eight thousand stars, four thousand forks, and daily commits under Axim Collaborative's stewardship. Note that ",[452,849,850],{},"openedx\u002Fedx-platform"," now redirects to ",[452,853,854],{},"openedx\u002Fopenedx-platform",".",[318,857,858],{},"Its relevance here is as a destination rather than a tool. If you are shipping SCORM courseware to an organisation that runs Open edX, what you are really shipping to is the SCORM XBlock, and its limits — no sequencing, no rollup, no edition-specific 2004 behaviour — are your limits. If you are choosing a platform and standards support is the axis, understand that SCORM, xAPI and LTI each arrive as a separately versioned package with its own maintainers and its own release cadence.",[318,860,861],{},"It is a poor fit for a small team wanting a course online this quarter. The install is a substantial Django estate; Tutor makes it tractable but does not make it small. Against that, the licence is AGPL-3.0 with no seat charges, the codebase is genuinely alive, and the community edition is the same software the large deployments run — which is not true of every open-core LMS in this directory.",{"title":331,"searchDepth":332,"depth":332,"links":863},[],[151],"Open edX is the platform behind edx.org and a long list of university and government deployments — Studio for authoring, an LMS for delivery, and an XBlock plugin architecture that most of its standards support hangs off. The repository is one of the larger open-source education codebases in existence: over eight thousand stars, four thousand forks, and daily commits under Axim Collaborative's stewardship. Note that openedx\u002Fedx-platform now redirects to openedx\u002Fopenedx-platform.","https:\u002F\u002Fdocs.openedx.org",[868,871],{"q":869,"a":870},"Does Open edX support SCORM out of the box?","Not in the core platform. It supports SCORM through the openedx-scorm-xblock plugin, which is bundled by default in official Tutor releases — so on a Tutor install it is effectively out of the box, and on a hand-rolled deployment it is a pip install and a config change.\n",{"q":872,"a":873},"Is it realistic to self-host?","With Tutor, yes for a technically capable team; without it, this is a large Django estate with a substantial service footprint. Budget for an operator, not just a server.\n",{},"Open edX","\u002Ftools\u002Fopen-edx",[355,489],{"model":357,"freeTier":352},[],"https:\u002F\u002Fgithub.com\u002Fopenedx\u002Fedx-platform",{"description":865},{"scorm12":883,"scorm2004":886,"xapi":889,"cmi5":892,"lti":893},{"supported":352,"provenance":363,"checkedAt":312,"source":884,"note":885},"https:\u002F\u002Fgithub.com\u002Foverhangio\u002Fopenedx-scorm-xblock","Not in edx-platform itself. SCORM comes from the separate openedx-scorm-xblock (AGPL-3.0), which its readme says ships bundled in official Tutor releases — Tutor being the standard distribution.\n",{"supported":352,"editions":887,"provenance":363,"checkedAt":312,"source":884,"note":888},[],"Same plugin, same caveats: no sequencing or rollup, and editions are not distinguished.\n",{"supported":352,"provenance":363,"checkedAt":312,"source":890,"note":891},"https:\u002F\u002Fgithub.com\u002Fopenedx\u002Fevent-routing-backends","Provided by openedx\u002Fevent-routing-backends, which ships xAPI transformers that convert platform tracking events into statements and forward them to an LRS. The package's readme still describes this as work in progress; the transformer code is present and shipped.\n",{"supported":337,"provenance":363,"checkedAt":312},{"supported":352,"versions":894,"provenance":363,"checkedAt":312,"source":895,"note":896},[369,370],"https:\u002F\u002Fgithub.com\u002Fopenedx\u002Fxblock-lti-consumer","As a consumer, through openedx\u002Fxblock-lti-consumer — LTI 1.1 with Basic Outcomes, and LTI 1.3 with Advantage services.\n","tools\u002Fopen-edx","The large self-hosted learning platform, with SCORM and xAPI arriving via plugins",[377,346,700,900],"django","Open edX \u002F Axim Collaborative","https:\u002F\u002Fopenedx.org","j5BVBh_lC1wuzcyIU9hZgSWbeAcxISh-rO9myY_UHUs",{"id":905,"title":906,"addedAt":312,"alternatives":907,"body":909,"categories":929,"checkedAt":312,"claimed":335,"description":930,"docs":931,"editorsPick":337,"extension":338,"faq":932,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":335,"license":348,"listing":349,"logo":335,"meta":939,"name":940,"navigation":352,"openSource":352,"path":941,"platforms":942,"pricing":944,"registries":945,"repo":884,"seo":946,"standards":947,"status":373,"stem":959,"tagline":960,"tags":961,"vendor":964,"website":884,"__hash__":965},"tools\u002Ftools\u002Fopenedx-scorm-xblock.md","Openedx Scorm Xblock",[908],"open-edx",{"type":315,"value":910,"toc":927},[911,918,921,924],[318,912,913,914,917],{},"This is the block that makes Open edX able to hold SCORM content at all. You add a Scorm module in Studio, upload a zip with an ",[452,915,916],{},"imsmanifest.xml"," at its root, and the package is extracted to the platform's storage backend and rendered in an iframe with a Python-backed API shim behind it. Learner state persists on the block, the score feeds the normal Open edX grading machinery including rescoring, and staff get a full data report of the stored CMI elements.",[318,919,920],{},"It is for Open edX operators who have bought or inherited SCORM courseware and need it inside an existing programme. The Django Storages integration is what makes it viable at scale — packages land on S3 or a configured bucket, and the storage function is overridable per organisation.",[318,922,923],{},"What it does not do is behave like a dedicated SCORM runtime. There is no sequencing or rollup, editions of SCORM 2004 are not distinguished, and complex multi-SCO packages built around navigation rules will disappoint. Test a specific package before promising a client it will work.",[318,925,926],{},"Maintenance is good by the standards of this category: Overhang.IO maintain it as part of the Tutor ecosystem, the last push was August 2026, and version 19.0.4 in June 2026 decoupled the block's version from the Open edX release train — which means you can now upgrade the block without waiting for a platform release. Sixty-three forks against thirty-eight stars is the usual signature of a plugin people patch for their own deployment.",{"title":331,"searchDepth":332,"depth":332,"links":928},[],[151],"This is the block that makes Open edX able to hold SCORM content at all. You add a Scorm module in Studio, upload a zip with an imsmanifest.xml at its root, and the package is extracted to the platform's storage backend and rendered in an iframe with a Python-backed API shim behind it. Learner state persists on the block, the score feeds the normal Open edX grading machinery including rescoring, and staff get a full data report of the stored CMI elements.","https:\u002F\u002Fpypi.org\u002Fproject\u002Fopenedx-scorm-xblock\u002F",[933,936],{"q":934,"a":935},"Do I need to install it if I run Tutor?","No. The block's readme states it ships bundled in official Tutor releases, so on a Tutor platform you only need to add \"scorm\" to the course's Advanced Module List. On other deployments, install the PyPI package and set X_FRAME_OPTIONS to SAMEORIGIN in lms.yml and studio.yml.\n",{"q":937,"a":938},"Can I migrate from the older Raccoon Gang xblock?","Not directly — the readme is explicit that old blocks cannot simply be migrated. Both can run side by side on the same platform, which is the intended transition path.\n",{},"Open edX SCORM XBlock","\u002Ftools\u002Fopenedx-scorm-xblock",[943,355],"lms-plugin",{"model":357},[],{"description":930},{"scorm12":948,"scorm2004":951,"xapi":955,"cmi5":957,"aicc":958},{"supported":352,"provenance":363,"checkedAt":312,"source":949,"note":950},"https:\u002F\u002Fgithub.com\u002Foverhangio\u002Fopenedx-scorm-xblock\u002Fblob\u002Fmaster\u002Fopenedxscorm\u002Fscormxblock.py","The block reads schemaversion from imsmanifest.xml and treats \"1.2\" as SCORM 1.2, storing cmi.core.* elements and mapping cmi.core.lesson_status to the Open edX grade.\n",{"supported":352,"editions":952,"provenance":363,"checkedAt":312,"source":953,"note":954},[],"https:\u002F\u002Fgithub.com\u002Foverhangio\u002Fopenedx-scorm-xblock\u002Fblob\u002Fmaster\u002Fopenedxscorm\u002Fstatic\u002Fjs\u002Fsrc\u002Fscorm.js","Anything whose schemaversion is not \"1.2\" is handled as SCORM 2004 and served an API_1484_11 object; completion_status, success_status, score.scaled and progress_measure are persisted. Editions are not distinguished, and sequencing is not implemented — a multi-SCO package with sequencing rules will not behave as it would in a full LMS.\n",{"supported":337,"provenance":363,"checkedAt":312,"note":956},"Not in this block. Open edX emits xAPI through the separate event-routing-backends package.\n",{"supported":337,"provenance":363,"checkedAt":312},{"supported":337,"provenance":363,"checkedAt":312},"tools\u002Fopenedx-scorm-xblock","Upload a SCORM package into an Open edX course and grade it like any other block",[908,962,963,700],"xblock","tutor","Overhang.IO","NTPKTADH-d0CRtakTZnD97NXyyNVeRyfrkxXDKygy0k",{"id":967,"title":968,"addedAt":312,"alternatives":969,"body":970,"categories":986,"checkedAt":312,"claimed":335,"description":974,"docs":987,"editorsPick":337,"extension":338,"faq":988,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":995,"license":996,"listing":349,"logo":335,"meta":997,"name":998,"navigation":352,"openSource":352,"path":999,"platforms":1000,"pricing":1001,"registries":1003,"repo":1004,"seo":1005,"standards":1006,"status":373,"stem":1020,"tagline":1021,"tags":1022,"vendor":1024,"website":1025,"__hash__":1026},"tools\u002Ftools\u002Fopenolat.md","Openolat",[],{"type":315,"value":971,"toc":984},[972,975,978,981],[318,973,974],{},"OpenOLAT is the continuation of the OLAT platform begun at the University of Zurich, now developed by frentix in Switzerland. It is a full LMS in the university sense rather than the corporate one: course authoring by assembling a tree of typed course nodes, strong QTI 2.1 assessment support, curriculum and lecture management, appointments, portfolios. Where most open-source LMSs treat assessment as a plugin, here it is the centre of gravity.",[318,976,977],{},"For standards work the picture is specific. SCORM support is a first-class course-node type with a server-side runtime and a result archiver, but it is SCORM 1.2 and only 1.2 — the content-packaging classes in the tree are named for that version and there is no 2004 API endpoint. LTI is the opposite story: both Basic LTI and a properly built LTI 1.3 implementation with deep linking, and OpenOLAT can act as platform as well as tool. There is no xAPI or cmi5 anywhere in the codebase.",[318,979,980],{},"Maintenance is not in doubt — 437 stars understates it, since the real activity is commits, and those run daily through August 2026 with a paid team behind them. Deployment is a Java and PostgreSQL affair; budget accordingly.",[318,982,983],{},"Choose it for assessment-heavy academic or regulated training, and for LTI integration. Look elsewhere if your course library is SCORM 2004 or your reporting strategy is xAPI.",{"title":331,"searchDepth":332,"depth":332,"links":985},[],[151],"https:\u002F\u002Fdocs.openolat.org",[989,992],{"q":990,"a":991},"Is it really free, given the membership programme?","The code is Apache-2.0 and you can run it without paying anyone. frentix sells hosting, support and a community membership that funds development. Nothing in the repository is gated behind that membership.\n",{"q":993,"a":994},"Can it run SCORM 2004 packages?","Not as shipped. The runtime is SCORM 1.2. Many 2004 packages will fail import outright, and a 2004 package that happens to degrade will lose its sequencing. Test before committing a course library to it.\n","CH","Apache-2.0",{},"OpenOLAT","\u002Ftools\u002Fopenolat",[355,489],{"model":357,"currency":491,"freeTier":352,"source":1002},"https:\u002F\u002Fwww.openolat.com\u002Fopen-source\u002F",[],"https:\u002F\u002Fgithub.com\u002FOpenOLAT\u002FOpenOLAT",{"description":974},{"scorm12":1007,"scorm2004":1010,"lti":1013,"xapi":1017,"cmi5":1019},{"supported":352,"provenance":363,"checkedAt":312,"source":1008,"note":1009},"https:\u002F\u002Fgithub.com\u002FOpenOLAT\u002FOpenOLAT\u002Ftree\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Folat\u002Fmodules\u002Fscorm","A full SCORM course-node type plus a server-side runtime under org.olat.modules.scorm, with SCORM12_Core and SCORM12_DocumentHandler doing the content-package parsing. Read in source, August 2026.\n",{"supported":337,"editions":1011,"provenance":363,"checkedAt":312,"note":1012},[],"The SCORM module contains only 1.2 content-packaging classes and no API_1484_11 endpoint anywhere in the tree. Checked against the full repository file listing, August 2026.\n",{"supported":352,"versions":1014,"provenance":363,"checkedAt":312,"source":1015,"note":1016},[369,370],"https:\u002F\u002Fgithub.com\u002FOpenOLAT\u002FOpenOLAT\u002Ftree\u002Fmaster\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Folat\u002Fims\u002Flti13","org.olat.ims.lti implements Basic LTI launches with outcomes; org.olat.ims.lti13 implements LTI 1.3 with deep linking, JWKS key handling and both tool and platform roles. Read in source, August 2026.\n",{"supported":337,"provenance":363,"checkedAt":312,"note":1018},"No xAPI, LRS or TinCan code in the repository. If you need statement forwarding you are writing it or buying it from a partner.\n",{"supported":337,"provenance":363,"checkedAt":312},"tools\u002Fopenolat","Long-running Swiss open-source LMS with SCORM 1.2, QTI 2.1 and LTI 1.3 built in",[377,1023,346],"java","frentix GmbH","https:\u002F\u002Fwww.openolat.com","qJCQJ5M35y7rf2A11FgGI0_AA6fdIBp1Z1UvxBFtFtk",{"id":1028,"title":1029,"addedAt":312,"alternatives":1030,"body":1031,"categories":1054,"checkedAt":312,"claimed":335,"description":1035,"docs":1055,"editorsPick":337,"extension":338,"faq":1056,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":995,"license":1060,"listing":349,"logo":335,"meta":1061,"name":1062,"navigation":352,"openSource":352,"path":1063,"platforms":1064,"pricing":1065,"registries":1066,"repo":1067,"seo":1068,"standards":1069,"status":373,"stem":1079,"tagline":1080,"tags":1081,"vendor":1083,"website":1084,"__hash__":1085},"tools\u002Ftools\u002Fopigno.md","Opigno",[],{"type":315,"value":1032,"toc":1052},[1033,1036,1039,1042],[318,1034,1035],{},"Opigno is a Drupal distribution rather than a standalone application: a curated set of modules, configuration and a theme that turn Drupal into a learning platform with training paths, classes, certificates, badges, live meetings and H5P-based activities. It is maintained by the Swiss agency Connect-i, which also sells hosted and enterprise editions alongside the free Community release.",[318,1037,1038],{},"The case for it is straightforward. If an organisation already runs Drupal — with its content model, user management, translation handling and access control in place — Opigno makes training another part of the same site rather than a second system to integrate. The learning-path model is more flexible than the usual course-and-module hierarchy.",[318,1040,1041],{},"The case against it is equally clear. You inherit Drupal's operational reality: major-version upgrades, module compatibility, and PHP hosting that has to be maintained properly. SCORM support lives in a bolt-on module whose stated ceiling is 2004 3rd Edition, which is enough for most published content but not the deep sequencing implementation a purpose-built player offers. There is no cmi5 claim, and we would not infer one.",[318,1043,1044,1045,646,1048,1051],{},"Maintenance is healthy — the distribution page was updated in August 2026 and the 3.2 branch reports over a thousand reported installs — but note that ",[452,1046,1047],{},"opigno_scorm",[452,1049,1050],{},"opigno_tincan_api"," are updated on their own, slower cadence.",{"title":331,"searchDepth":332,"depth":332,"links":1053},[],[151],"https:\u002F\u002Fwww.drupal.org\u002Fproject\u002Fopigno_lms",[1057],{"q":1058,"a":1059},"Where is the source, if not on GitHub?","On drupal.org. The canonical repository is git.drupalcode.org\u002Fproject\u002Fopigno_lms, and the SCORM and xAPI pieces are separate projects — `opigno_scorm` and `opigno_tincan_api`. GitHub copies of Opigno are third-party mirrors and forks.\n","GPL-2.0-or-later",{},"Opigno LMS","\u002Ftools\u002Fopigno",[355,943],{"model":357,"source":1055},[],"https:\u002F\u002Fgit.drupalcode.org\u002Fproject\u002Fopigno_lms",{"description":1035},{"scorm12":1070,"scorm2004":1073,"xapi":1076},{"supported":352,"provenance":427,"checkedAt":312,"source":1071,"note":1072},"https:\u002F\u002Fwww.drupal.org\u002Fproject\u002Fopigno_scorm","The Opigno SCORM module's project page states compliance with SCORM 1.2. Taken from that page; not confirmed against a conformance suite here.\n",{"supported":352,"editions":1074,"provenance":427,"checkedAt":312,"source":1055,"note":1075},[501],"The distribution's own page says Opigno 3.x is \"SCORM compliant (1.2 and 2004 v3)\". The module page says only \"SCORM 2004\" without an edition.\n",{"supported":352,"provenance":427,"checkedAt":312,"source":1077,"note":1078},"https:\u002F\u002Fwww.drupal.org\u002Fproject\u002Fopigno_tincan_api","Provided by the separate Opigno TinCan API module, which emits statements to an external LRS. Its page names Learning Locker and Watershed as the LRSs it was tested against.\n","tools\u002Fopigno","Drupal distribution turned LMS, with SCORM and xAPI handled by its own modules",[1082,437,377],"drupal","Connect-i","https:\u002F\u002Fwww.opigno.org","i-rJVEMmiBprx-H298PCGP68NC38rTYlxrhtVQsRKxk",{"id":1087,"title":1088,"addedAt":312,"alternatives":1089,"body":1090,"categories":1117,"checkedAt":312,"claimed":335,"description":1094,"docs":1118,"editorsPick":337,"extension":338,"faq":1119,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":335,"license":1126,"listing":349,"logo":335,"meta":1127,"name":1088,"navigation":352,"openSource":352,"path":1128,"platforms":1129,"pricing":1130,"registries":1132,"repo":1133,"seo":1134,"standards":1135,"status":373,"stem":1147,"tagline":1148,"tags":1149,"vendor":335,"website":1150,"__hash__":1151},"tools\u002Ftools\u002Fsakai.md","Sakai",[],{"type":315,"value":1091,"toc":1115},[1092,1095,1106,1109],[318,1093,1094],{},"Sakai is a Java learning management system built for universities, developed in the open since the early 2000s by a consortium of institutions rather than a single vendor. It covers the academic case in depth — assignments, gradebook, assessments through Samigo, lessons, rosters, rubrics, plagiarism review — and is deployed at real scale by universities that want to own their teaching platform outright.",[318,1096,1097,1098,1101,1102,1105],{},"For a standards audience the interesting part is ",[452,1099,1100],{},"scormplayer",", a module in the main repository rather than a third-party add-on. It is descended from the ADL reference implementation: the package names are still ",[452,1103,1104],{},"org.adl",", and there is a genuine sequencer, not just a run-time API shim. That is more SCORM machinery than most open-source LMSs carry.",[318,1107,1108],{},"It is not a light option. This is a Tomcat-hosted Java application with a substantial operations burden, and it is a poor fit for anyone who wants to host a handful of compliance courses. The SCORM tool's own README is candid about a history of unfinished work and installation caveats, and xAPI amounts to a kernel-level event bridge rather than a supported LRS integration — do not choose Sakai for xAPI.",[318,1110,1111,1112,1114],{},"Maintenance is not in doubt, but the shape of it is worth understanding. Sakai 25.2 was tagged in June 2026, commits land most working days, and around fifteen named contributors have touched the tree in the past year — a consortium project's normal rhythm, not a vendor's roadmap. That also sets the real risk: nothing here rots, but priorities follow whichever member institutions have staff to spare, so a fix you need in ",[452,1113,1100],{}," specifically may wait unless you contribute it.",{"title":331,"searchDepth":332,"depth":332,"links":1116},[],[151],"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Fwiki",[1120,1123],{"q":1121,"a":1122},"Is the SCORM player part of core Sakai?","Yes — `scormplayer` is a module in the main repository and ships with the release, which is unusual among open-source LMSs. It is still a distinct tool that has to be enabled per site.\n",{"q":1124,"a":1125},"What is the history of the SCORM tool?","Its own README says it was started at UC Davis and never finished or deployed there, and was later picked up and stabilised by EDIA, who added gradebook synchronisation. That inheritance explains both the ADL-derived code and the long tail of SCO-prefixed issues.\n","ECL-2.0",{},"\u002Ftools\u002Fsakai",[355,943],{"model":357,"source":1131},"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Fblob\u002Fmaster\u002FLICENSE",[],"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai",{"description":1094},{"scorm12":1136,"scorm2004":1139,"lti":1143},{"supported":352,"provenance":363,"checkedAt":312,"source":1137,"note":1138},"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Ftree\u002Fmaster\u002Fscormplayer\u002Fscorm-api\u002Fsrc\u002Fjava\u002Forg\u002Fadl\u002Fapi\u002Fecmascript","The bundled `scormplayer` module implements `SCORM12APIInterface` alongside the ADL data-model classes it was derived from.\n",{"supported":352,"editions":1140,"provenance":363,"checkedAt":312,"source":1141,"note":1142},[501],"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Ftree\u002Fmaster\u002Fscormplayer\u002Fscorm-impl\u002Fadl\u002Fsrc\u002Fjava\u002Forg\u002Fadl\u002Fsequencer\u002Fimpl","`SCORM13APIInterface`, `SCORM_2004_DM` and a full `ADLSequencer` are present; the conformance package committed as a test fixture is a SCORM 2004 3rd Edition PITE test.\n",{"supported":352,"versions":1144,"provenance":363,"checkedAt":312,"source":1145,"note":1146},[369,370],"https:\u002F\u002Fgithub.com\u002Fsakaiproject\u002Fsakai\u002Ftree\u002Fmaster\u002Flti","The `lti` module carries both the legacy Basic LTI code and an `org.sakaiproject.lti13` package implementing LTI 1.3 Advantage services.\n","tools\u002Fsakai","Higher-education LMS with an in-tree SCORM player built on the ADL reference code",[377,1023,763],"https:\u002F\u002Fwww.sakailms.org","qfs4afiI1sPCTQYm53Hp_GaKdNUUsn0gxnb2rbfX7iA",{"id":1153,"title":1154,"addedAt":312,"alternatives":1155,"body":1156,"categories":1173,"checkedAt":312,"claimed":335,"description":1160,"docs":1174,"editorsPick":337,"extension":338,"faq":1175,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":1182,"license":408,"listing":349,"logo":335,"meta":1183,"name":1154,"navigation":352,"openSource":352,"path":1184,"platforms":1185,"pricing":1186,"registries":1190,"repo":335,"seo":1191,"standards":1192,"status":373,"stem":1207,"tagline":1208,"tags":1209,"vendor":1212,"website":1189,"__hash__":1213},"tools\u002Ftools\u002Ftotara-learn.md","Totara Learn",[708],{"type":315,"value":1157,"toc":1171},[1158,1161,1168],[318,1159,1160],{},"Totara Learn is the LMS component of Totara's platform, forked from Moodle in 2010 and shaped ever since around corporate and public-sector training rather than academic teaching: hierarchies and audiences, positions and organisations, certifications with recertification windows, competency frameworks, and the compliance reporting that follows from all of it. Those are the parts Moodle handles awkwardly, and they are the reason organisations pay for a Moodle derivative rather than running Moodle.",[318,1162,1163,1164,1167],{},"The licensing arrangement is the thing most buyers misread. The code is GPLv3 and subscribers can modify and host it themselves, which is a real difference from a closed SaaS LMS — but there is no public download. You subscribe, usually via a Totara partner, and receive source and updates for the term. Verified on 24 August 2026: the ",[452,1165,1166],{},"totara"," GitHub organisation contains vendored libraries and developer tooling only, no product core.",[318,1169,1170],{},"On standards, read the documentation closely rather than the marketing. SCORM 1.2 and AICC are stated as fully supported; SCORM 2004 is stated with exclusions broad enough that packages relying on sequencing should be tested before purchase; and xAPI is explicitly not supported by Totara, only by community plugins pointed at an external LRS. For a compliance-heavy SCORM 1.2 estate this is a mature, well-documented platform. For an xAPI-first programme it is the wrong starting point.",{"title":331,"searchDepth":332,"depth":332,"links":1172},[],[151],"https:\u002F\u002Ftotara.help",[1176,1179],{"q":1177,"a":1178},"Is Totara open source in the sense that I can download it?","Not from a public repository. The code is GPLv3 and subscribers receive source, but there is no public core repository on GitHub — the Totara organisation there holds vendored dependencies and developer tooling, not the product. Access comes with a subscription, usually through a partner.\n",{"q":1180,"a":1181},"Can I use it as an LRS or an xAPI target?","No. Totara's own xAPI page routes you to unsupported community plugins and an external LRS. If xAPI is central to your programme, treat that as an integration project rather than a platform feature.\n","NZ",{},"\u002Ftools\u002Ftotara-learn",[355],{"model":1187,"currency":1188,"freeTier":337,"source":1189},"quote","USD","https:\u002F\u002Fwww.totara.com",[],{"description":1160},{"scorm12":1193,"scorm2004":1196,"aicc":1199,"xapi":1200,"lti":1203},{"supported":352,"provenance":427,"checkedAt":312,"source":1194,"note":1195},"https:\u002F\u002Ftotara.help\u002Fdocs\u002Fadd-a-scorm-activity","Totara's own documentation says it \"fully supports the AICC and SCORM 1.2 specifications\".\n",{"supported":352,"editions":1197,"provenance":427,"checkedAt":312,"source":1194,"note":1198},[],"The same page qualifies 2004 heavily: support excludes \"Content Aggregation Model, The Run-Time Environment, Sequencing and Navigation\" extensions. Read that as basic 2004 playback without sequencing — test any 2004 package with sequencing rules before committing to it.\n",{"supported":352,"provenance":427,"checkedAt":312,"source":1194},{"supported":337,"provenance":427,"checkedAt":312,"source":1201,"note":1202},"https:\u002F\u002Ftotara.help\u002Fdocs\u002Fconfigure-xapi-with-totara","Totara documents an xAPI setup but states that it \"currently requires third-party plugins to work, and is not supported by Totara\". The plugins are the community Moodle logstore_xapi ones, and an external LRS is required. We record this as unsupported because the vendor does.\n",{"supported":352,"versions":1204,"provenance":427,"checkedAt":312,"source":1205,"note":1206},[369,370],"https:\u002F\u002Ftotara.help\u002Fdocs\u002Fexternal-tools","Documented as consumer only — \"Using Totara as a provider, i.e. exporting content to other sites, is not supported.\" LTI Advantage services are listed for 1.3.\n","tools\u002Ftotara-learn","Moodle-derived enterprise LMS, GPL-licensed but distributed only through a paid subscription",[377,437,1210,1211],"enterprise","compliance","Totara Learning Solutions","HMFmLJjZlrv4HLHdxJtzOYusqlP9Pg3Qy6GIFUqrm68",{"id":1215,"title":1216,"addedAt":312,"alternatives":1217,"body":1218,"categories":1245,"checkedAt":312,"claimed":335,"description":1246,"docs":1247,"editorsPick":337,"extension":338,"faq":1248,"firstParty":337,"foundedYear":335,"hosting":549,"hqCountry":335,"license":551,"listing":349,"logo":335,"meta":1255,"name":1256,"navigation":352,"openSource":352,"path":1257,"platforms":1258,"pricing":1259,"registries":1260,"repo":1261,"seo":1262,"standards":1263,"status":373,"stem":1273,"tagline":1274,"tags":1275,"vendor":335,"website":1261,"__hash__":1277},"tools\u002Ftools\u002Flaravel-scorm.md","Laravel Scorm",[],{"type":315,"value":1219,"toc":1243},[1220,1230,1233,1240],[318,1221,1222,1223,1225,1226,1229],{},"laravel-scorm is the server-side half of SCORM support for a Laravel application: upload a package, and it extracts the zip to a configured disk (local or S3), parses ",[452,1224,916],{}," into SCO records, creates the migrations for the tracking tables, and stores each learner's CMI data as they work through the course. Configuration is a published ",[452,1227,1228],{},"config\u002Fscorm.php",", with translatable runtime error messages.",[318,1231,1232],{},"It fits teams that already have a Laravel product with users, courses and a database, and want SCORM content to become one more trackable activity rather than a reason to buy an LMS. It is not a drop-in feature: the README's prerequisites include serving extracted content from a separate domain outside the application root, which is the right call for security but means infrastructure work before anything renders.",[318,1234,1235,1236,1239],{},"The gap to be clear about is 2004. Packages are detected and tracked, but the two-thousand-and-four story stops at the data model — no sequencing, no navigation requests, no rollup. Single-SCO courses behave; anything relying on ",[452,1237,1238],{},"imsss"," rules will not.",[318,1241,1242],{},"Maintenance is real but thin: pushed March 2026, forty-eight stars, thirty-seven forks, nine open issues, and a README that opens by asking for collaborators. One maintainer, actively responding — which is better than most packages in this category, and still a single point of failure.",{"title":331,"searchDepth":332,"depth":332,"links":1244},[],[151],"laravel-scorm is the server-side half of SCORM support for a Laravel application: upload a package, and it extracts the zip to a configured disk (local or S3), parses imsmanifest.xml into SCO records, creates the migrations for the tracking tables, and stores each learner's CMI data as they work through the course. Configuration is a published config\u002Fscorm.php, with translatable runtime error messages.","https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fdevianl2\u002Flaravel-scorm",[1249,1252],{"q":1250,"a":1251},"Does it give me a player UI?","No. It handles the zip, the manifest, the SCO records and the CMI persistence, and exposes them through a ScormManager service. The launch page, the iframe and the API object your course talks to are yours to build.\n",{"q":1253,"a":1254},"Why does it insist the content live outside the application?","Extracted SCORM packages are untrusted HTML and JavaScript. The README requires a separate domain or subdomain pointing at the extraction directory so that course code cannot execute against your application's origin — sensible, but it means a vhost change, not just a composer install.\n",{},"laravel-scorm","\u002Ftools\u002Flaravel-scorm",[549,943],{"model":357},[],"https:\u002F\u002Fgithub.com\u002Fdevianl2\u002Flaravel-scorm",{"description":1246},{"scorm12":1264,"scorm2004":1267,"xapi":1271,"cmi5":1272},{"supported":352,"provenance":363,"checkedAt":312,"source":1265,"note":1266},"https:\u002F\u002Fgithub.com\u002Fdevianl2\u002Flaravel-scorm\u002Fblob\u002Fmain\u002Fsrc\u002FManager\u002FScormManager.php","ScormManager reads \u003Cschemaversion> from the manifest and maps '1.2' to a SCORM 1.2 tracking model; ScormScoTracking persists the cmi.core elements.\n",{"supported":352,"editions":1268,"provenance":363,"checkedAt":312,"source":1265,"note":1270},[1269,501,502],"2nd","The manifest parser accepts 'CAM 1.3', '2004 3rd Edition' and '2004 4th Edition' and collapses all three into a single scorm_2004 tracking model. There is no sequencing or navigation engine, so multi-SCO 2004 packages that rely on imsss rules will not behave as they do in a full LMS.\n",{"supported":337,"provenance":363,"checkedAt":312},{"supported":337,"provenance":363,"checkedAt":312},"tools\u002Flaravel-scorm","Laravel package that unpacks SCORM zips and stores CMI tracking in your database",[574,437,1276],"composer","orE7pjKq8FtN2NTTyLjzzux40jMqLoaHMsXyJ4uaJl4",{"id":1279,"title":1280,"addedAt":312,"alternatives":1281,"body":1282,"categories":1302,"checkedAt":312,"claimed":335,"description":1286,"docs":335,"editorsPick":337,"extension":338,"faq":1303,"firstParty":337,"foundedYear":335,"hosting":346,"hqCountry":803,"license":804,"listing":349,"logo":335,"meta":1310,"name":1311,"navigation":352,"openSource":352,"path":1312,"platforms":1313,"pricing":1314,"registries":1315,"repo":1316,"seo":1317,"standards":1318,"status":373,"stem":1329,"tagline":1330,"tags":1331,"vendor":1335,"website":1336,"__hash__":1337},"tools\u002Ftools\u002Fmoodle-mod-scormremote.md","Moodle Mod Scormremote",[],{"type":315,"value":1283,"toc":1300},[1284,1287,1290,1297],[318,1285,1286],{},"This solves a specific commercial problem: you sell or licence SCORM content, and handing over a zip means handing over the asset. mod_scormremote inverts that. The client's LMS receives a wrapper SCO that loads the real course from your Moodle in a sandboxed iframe and relays the SCORM API across domains with postMessage. You keep the content, you can replace it in place, and you get usage back — accounts, enrolments and completion appear in your Moodle as remote learners work through it.",[318,1288,1289],{},"The seat-limiting is the other half of the pitch. Clients are defined by their domains, tiers cap how many seats each client may consume, and a single wrapper file identifies which client is using it from the requesting domain. That is closer to a licensing system than an activity module, and it is why the plugin exists at all.",[318,1291,1292,1293,1296],{},"Know the constraint before you build on it: the wrapper is SCORM 1.2. It vendors only the scorm12 build of scorm-again and never defines ",[452,1294,1295],{},"API_1484_11",", so 2004-specific tracking on the remote side is not available. Frame embedding must also be permitted at both ends, which not every corporate client's LMS will allow.",[318,1298,1299],{},"Catalyst maintain it against a single MOODLE_39_STABLE branch, with CI and commits as recent as July 2026 — a supported vendor plugin rather than a hobby project, though support is explicitly best-effort unless you sponsor work.",{"title":331,"searchDepth":332,"depth":332,"links":1301},[],[151],[1304,1307],{"q":1305,"a":1306},"What does the remote LMS actually receive?","A small wrapper zip, not the course. It loads the real content from your Moodle inside a sandboxed iframe and bridges the SCORM API across the domain boundary with postMessage, so the content itself never leaves your server and can be swapped without the client reinstalling anything.\n",{"q":1308,"a":1309},"What has to be true on the hosting Moodle?","allowframembedding must be enabled so the remote site can iframe your content, and the remote LMS has to permit the wrapper to embed a cross-origin frame. Either side blocking frames is the usual cause of a blank player.\n",{},"mod_scormremote","\u002Ftools\u002Fmoodle-mod-scormremote",[943],{"model":357},[],"https:\u002F\u002Fgithub.com\u002Fcatalyst\u002Fmoodle-mod_scormremote",{"description":1286},{"scorm12":1319,"scorm2004":1322,"aicc":1326,"xapi":1327,"cmi5":1328},{"supported":352,"provenance":363,"checkedAt":312,"source":1320,"note":1321},"https:\u002F\u002Fgithub.com\u002Fcatalyst\u002Fmoodle-mod_scormremote\u002Fblob\u002FMOODLE_39_STABLE\u002Famd\u002Fsrc\u002Flayer3.js","The generated wrapper SCO is SCORM 1.2. It sets window.API to a Scorm12API instance from scorm-again and bridges the LMS* calls back across postMessage.\n",{"supported":337,"editions":1323,"provenance":363,"checkedAt":312,"source":1324,"note":1325},[],"https:\u002F\u002Fgithub.com\u002Fcatalyst\u002Fmoodle-mod_scormremote\u002Fblob\u002FMOODLE_39_STABLE\u002Fscorm-again\u002Freadme_moodle.txt","Only the scorm12 build of scorm-again is vendored, and the bridge never defines API_1484_11. The wrapper the remote LMS receives therefore speaks SCORM 1.2, whatever version the underlying course is.\n",{"supported":337,"provenance":363,"checkedAt":312},{"supported":337,"provenance":363,"checkedAt":312},{"supported":337,"provenance":363,"checkedAt":312},"tools\u002Fmoodle-mod-scormremote","Serve a SCORM package from your Moodle into someone else's LMS via a thin wrapper SCO",[708,1332,1333,1334],"moodle-plugin","distribution","licensing","Catalyst IT Australia","https:\u002F\u002Fmoodle.org\u002Fplugins\u002Fmod_scormremote","wmIYV8uD_8rF7n_tNveYnTXO9efG8g5k7J-0Aqd4p9A",{"data":1339,"body":1340},{},{"type":1341,"children":1342},"root",[1343,1350,1377],{"type":1344,"tag":318,"props":1345,"children":1346},"element",{},[1347],{"type":1348,"value":1349},"text","Every SCORM package eventually meets an LMS, and the LMS decides whether the standard is honoured or\nmerely claimed. That gap is why this category exists in a tools directory: not to rank platforms on\nfeatures, but to record what each one actually does with a package.",{"type":1344,"tag":318,"props":1351,"children":1352},{},[1353,1355,1361,1363,1368,1370,1375],{"type":1348,"value":1354},"Included here are ",{"type":1344,"tag":1356,"props":1357,"children":1358},"strong",{},[1359],{"type":1348,"value":1360},"open-source platforms",{"type":1348,"value":1362}," whose SCORM implementation you can read, ",{"type":1344,"tag":1356,"props":1364,"children":1365},{},[1366],{"type":1348,"value":1367},"commercial platforms",{"type":1348,"value":1369},"\nwhose support you have to take on trust or test, and ",{"type":1344,"tag":1356,"props":1371,"children":1372},{},[1373],{"type":1348,"value":1374},"plugins",{"type":1348,"value":1376}," that add or replace SCORM handling in a\nplatform that ships with something weaker. The plugins matter more than they look: a good deal of real-world\nSCORM behaviour on any given installation comes from a module rather than core.",{"type":1344,"tag":318,"props":1378,"children":1379},{},[1380],{"type":1348,"value":1381},"The facts worth comparing are narrow and specific. Which SCORM version, and which 2004 edition. Whether\nsequencing is implemented or quietly ignored. How suspend data is stored and how much of it survives.\nWhether xAPI and cmi5 are genuinely supported or approximated. Each listing carries these with provenance,\nbecause vendor marketing and vendor documentation frequently disagree with each other.",1789388511139]