“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 megan.bowe@tincanapi.com and I will add it.
Applications (Mobile)
Experience Cam — https://github.com/brianrogers/ExperienceCamera
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 — https://github.com/brianrogers/QuickTouchMath-TinCan
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 — https://github.com/brianrogers/TCReader
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 — https://github.com/RusticiSoftware/TinCanDraw
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 — http://github.com/fugu13/mlearnconsms
A connector to Twilio that creates and captures statements about text messages.
Applications (Web)
Experience API Client Examples — https://github.com/adlnet/experienceapi_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) — https://github.com/garemoko/tinBook
Allows a person to search for a book and make a statement to an LRS stating they read the book.
Prototypes — https://github.com/RusticiSoftware/TinCan_Prototypes
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 — https://github.com/brianrogers/TCEmailConnector
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 — https://github.com/RusticiSoftware/TinCanAPILibraryCSharp
Java Library — https://github.com/RusticiSoftware/TinCanJava
JavaScript Library — https://github.com/RusticiSoftware/TinCanJS
Node Experiment (under development) — https://github.com/Ken-Richard/tincan_nodejs
Objective C Library — https://github.com/RusticiSoftware/TinCanObjC
PHP Samples — https://github.com/garemoko/PHPCan
Sinatra Experiment (under development) — https://github.com/Ken-Richard/tincan_sinatra
Data Normalization
Tin Repo (under development) — https://github.com/garemoko/TinRepo
An extension repository to be accessed, added to and moderated for the community to use common identifiers across statements.
Verb Repository — https://github.com/fugu13/tin-can-verbs
A repository of verbs to be accessed and used by the community in statements.
Learning Record Store
Learning Record Store (under development) — https://github.com/adlnet/ADL_LRS
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 — https://github.com/garemoko/Tin-launcher
Launches Captivate 7 content and records the xAPI statements back to an LRS.
Captivate Wrapper — https://github.com/garemoko/tinCaptivate
A Captivate wrapper for swfs from versions 5 and 6 that allows them to make statements to an LRS.
Drupal 7 module — https://github.com/phkemper/xapi
Configurable module for Drupal 7 that creates statements and sends them to an LRS.
Google Course Builder — https://code.google.com/r/fugu13-tincan-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 — https://github.com/jgsmitty/Experience-API-for-Moodle
This collects statements from Moodle and sends them to an LRS.
Moodle – Package handling — https://github.com/jgsmitty/TCAPI-Moodle-SCORM-mod
This launches xAPI packages and plays them, specifically built for Articulate Storyline.
Moodle – Launcher and Statement Handler — https://github.com/garemoko/MoodleLaunch
This a new project that is currently being worked on. It will launch eLearning courses and record statements from them to an LRS.
Sakai — https://confluence.sakaiproject.org/display/TINCAN/Home
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) — http://www.jasig.org/uportal
This project is in progress, they are working to add xAPI support to this open source project.
Personal Data Locker
Learning Locker (under development) — https://github.com/davetosh/learninglocker
Not much to see here at present, but there will be soon.
Specs
Interim Packaging & Launch Spec — https://github.com/RusticiSoftware/launch
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 — https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md
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 — https://github.com/NewLearningTrendsResearchGroup/xAPI-Spec_Fa
For reading, obviously.
Statements
Experience API Translator — https://github.com/fugu13/georgetown
Experience API Translator. Turns Experience API statements into plain English. Works on 0.95 statements.
Statement Validator — https://github.com/ZackPierce/xAPI-Validator-JS
Validates 1.0.0 statements from xAPI to ensure quality json.
Statement Creator — https://github.com/garemoko/tinStatement
A generator for statements that sends to an LRS
xAPI Statement Viewer — https://github.com/RusticiSoftware/TinCanStatementViewer
Creates a non-technical readable list of statements from an LRS.