- Get Started
- Write Code
cmi5 is a contemporary elearning specification intended to take advantage of the Experience API as a communications protocol and data model while providing definition for necessary components for system interoperability such as packaging, launch, credential handshake, and consistent information model. It is the culmination of a great deal of work starting from an AICC working group and brought to relase by pioneers of the xAPI community under the stewardship of ADL, all of whom have extensive experience in the elearning specification authoring space. It was released for production use in June of 2016, and implementations of both parts of a cmi5 system are now available.
cmi5 introduces a new “manifest” like file named `cmi5.xml` that contains XML metadata that describes a Course Structure which is a series of containers (Blocks) and Assignable Units (AUs). This file is stored in a ZIP file and is provided to cmi5 compatible launching systems (LMSs) for import. An AU is the launchable content in this type of package, and the content assets may be included inside of the package or hosted remotely.
The cmi5 launch mechanism is very similar to existing models and provides several important pieces of information to AUs during launch. While a browser will be a common launch platform, other launch scenarios are supported such as simulators, mobile apps, etc. The launch process includes capturing statements from both the launching system and the content, providing content with a Experience API context template to leverage in statement creation, making learner preferences available, and generally establishing a learning session.
As part of the launch process the AU retrieves credentials from the launching system in a separate request which allows those credentials to only be provided once, making them inherently more secure than previous credentialing processes. Credentials are expected to be tied to a specific session, expirable, and generally include limited permissions when accessing the LRS endpoint.
cmi5 includes precise categories for the statements captured by the AU as well as the launching system, grouping them into two categories as either “cmi5 defined” statements or “cmi5 allowed” statements. The former set are heavily specified in their use and what data they must and must not include, the order in which they can be sent, whether or not they must be unique within the session, and how they should be interpreted. The “cmi5 defined” statement set is specifically designed for capturing session details and core elearning principles such as pass/fail, content completion, duration, and score. They contain a Experience API Activity to make recognizing and grouping them simple. The latter set is left nearly open ended and is what allows cmi5 to maintain the inherent flexibility for which xAPI is so well known, though even those statements need to include the previously mentioned context template to allow them to be correlated with the rest of the cmi5 session mechanics.
There is a great deal more to explore in the cmi5 specification and on the quickly expanding website for the project. Find the specification itself at https://github.com/AICC/CMI-5_Spec_Current/blob/quartz/cmi5_spec.md and the website with Best Practices, JSON Samples, and more at http://aicc.github.io/CMI-5_Spec_Current/.
Read more about launching content here.