Contact Us Support Forum Get Email Updates

Thanks! Someone will be in touch with you shortly.

Rather just email us? Email us here.
Rather speak with someone in person?
Call any time with Experience API questions:


The Open Source Landscape

Posted by

Categories: Adopters, LRS, Spec Effort, Standards, Statements, Use Cases, xAPI

Posted 11 July 2013


“If you have the right attitude, interesting problems will find you”
— Eric S. Raymond, The Cathedral and the Bazaar

Open efforts and open source are a big part of how the spec and adoption have made it to where we are today. Without the involvement of everyone in the community, we all would be sad pandas — or at least less-interesting pandas. This post is a bit about open source in general, but mostly about the projects out there using the spec, from people across the community who deserve credit for their hard work.

What does it really mean when someone says xAPI is open source?

By nature, xAPI is intended to be used by everyone. It’s a specification that will become a standard. It’s not open source in the way most of us think of it: a piece of software being delivered with it’s source code. The main point is that the spec is open to everyone in the community who wants to be involved. The 1.0.0 specification has an Apache 2.0 license on it. That license makes the specification free to use, build on, redistribute, etc. It’s on GitHub where anyone who wants to contribute and grow the spec further is welcome to.

Open Source Licenses

There are a number of open source licenses out there. When you’re looking for open source software to use, you really do want to make sure there is a license on the project and make sure you know what that license means. It’s better to ask the owner than assume something is open source just because the code is publicly available. There are a few licenses used often in the projects I found. They’re mainly MIT, GNU and Apache 2.0. You can find out more about these licenses and others here.

Finally, here they are. These are open source projects, specs, experiments and prototypes from across the internet. I put a call out on twitter, on ADL’s mailing list and did some searches to gather these. If you have something to contribute, email me and I will add it.


Applications (Mobile)

Experience Cam

Captures an image and includes that image as an attachment to a statement. These could be real work experiences in real time, showing what you’re actually doing… Could be your vacation photos. This is a prototype.

Quick Touch Math

An open source math learning game, modified to make xAPI statements about problems solved to an LRS. This is a web app that is styled for mobile delivery.

xAPI Reader

A prototype iOS application that allows viewing and annotating of a PDF file. It makes statements about those activities to an LRS. You can download any PDF from a URL to the device and use this.

xAPI Draw

This is an application that records a drawing interaction on a touch interface as a statement. The drawing is included in the statement that is sent to the LRS from this application.

Twilio SMS Learning App

A connector to Twilio that creates and captures statements about text messages.


Applications (Web)

Experience API Client Examples

Collection of .95 and 1.0.0 clients, many of the original prototypes from the BAA to be used for testing.

I Read This (Tin Book)

Allows a person to search for a book and make a statement to an LRS stating they read the book.


These are the original prototypes that resulted from the BAA effort. This includes a Tetris game, a location based tour activity, and a traditional e-learning course about golf.

xAPI Email Connector

For use with Google Apps Engine, converts specially formatted emails to xAPI statements and sends them to an LRS.


Code Samples and Libraries

C Sharp Library

Java Library

JavaScript Library

Node Experiment (under development)

Objective C Library

PHP Samples

Sinatra Experiment (under development)


Data Normalization

Tin Repo (under development)

An extension repository to be accessed, added to and moderated for the community to use common identifiers across statements.

Verb Repository

A repository of verbs to be accessed and used by the community in statements.


Learning Record Store

Learning Record Store (under development)

This is a learning record store that uses Python and Ubuntu. It is currently being built by ADL and is ready for personal use and testing.


Modifications of Existing Tools

Captivate Launcher

Launches Captivate 7 content and records the xAPI statements back to an LRS.

Captivate Wrapper

A Captivate wrapper for swfs from versions 5 and 6 that allows them to make statements to an LRS.

Drupal 7 module

Configurable module for Drupal 7 that creates statements and sends them to an LRS.

Google Course Builder

Basic statement support for Course Builder. Lets Course Builder users collect data from a MOOC and send it to an LRS.

Moodle – Statement handling

This collects statements from Moodle and sends them to an LRS.

Moodle – Package handling

This launches xAPI packages and plays them, specifically built for Articulate Storyline.

Moodle – Launcher and Statement Handler —

This a new project that is currently being worked on. It will launch eLearning courses and record statements from them to an LRS.


The basics of creating statements in Sakai and sending them to an LRS are in the trunk of Sakai CLE and ready for the next major release.

uPortal (under development)

This project is in progress, they are working to add xAPI support to this open source project.


Personal Data Locker

Learning Locker (under development) — 

Not much to see here at present, but there will be soon.



Interim Packaging & Launch Spec

This spec describes how traditional e-learning packages should be dealt with and tracked in xAPI environments, this is being used in the interim until CMI-5 is ready for adoption.

THE spec

You know what this is. Though you can only find the Apache license on this pdf, it’s not in GitHub.

The spec, in Persian

For reading, obviously.



Experience API Translator

Experience API Translator. Turns Experience API statements into plain English. Works on 0.95 statements.

Statement Validator

Validates 1.0.0 statements from xAPI to ensure quality json.

Statement Creator

A generator for statements that sends to an LRS

xAPI Statement Viewer

Creates a non-technical readable list of statements from an LRS.