We’re delighted to announce the next version of Learning Locker, V1.0rc1, is now available.  Why the catchy name you ask? Well, this is the first ‘Release Candidate’ for version 1.0 of Learning Locker. This means we think we’ve got everything in place that we need to have for us to call version 1.0 complete. But it also means we need further testing before we announce everything is good.

Read on to find out more about our latest enhancements and how you can help us as we push towards our final version 1.0 later this month…

ll-dashWe have just tagged the first release candidate for Learning Locker v1.0 and would really appreciate it if interested people could help us test and debug.

Key Developments

Validator class

The majority of issues reported were a result of incorrect validation of statements either due to bugs or misinterpretation of the spec. As a result, the class was reworked and should now provide an improved validation process. This needs extensive testing.

Backbonejs

We decided to start introducing backbone to some of the pages to improve the user experience. This is just a start as there is more we would like to do in this area.

LL API

As well as implementing the core xAPI, we have develop a Learning Locker specific API to help developers building reporting tools. This API provides some additional views of the data to supplement the core xAPI. Documentation will be available shortly.

Theme

The base theme has been updated. Built with Twitter Bootstrap, it has been tested across modern browsers but, as with all aspects of this release candidate, we would appreciate issue reports and pull requests if you have a fix.

Reporting

Built on top of the LL API, this is the first phase of an internal reporting tool.

MongoDB

Learning Locker uses both MySQL and MongoDB to handle various aspects of the core LRS. In this release candidate we have introduced a couple of indexes on the statement collection. The aim here is to optimize queries. If you have advice on how we can continue to improving this area, we would love to hear from you as it is something we will be monitoring closely.

Statements

Up until last week, Learning Locker included a custom extension in all incoming statements that contained details of the specific LRS the statement was being stored against. If you are unfamiliar with Learning Locker – one install lets you create multiple LRSs. However, it was highlighted that this contravened one of the specs key requirements: that statements are immutable.

Ticket: https://github.com/LearningLocker/learninglocker/issues/122

To fix this, we changed the statement document structure to include 2 individual elements; the lrs and statement. This allows us to store the relevant LRS details without altering statements. Implementing this change touched quite a few parts of the core engine so all testing welcome!

(There are instructions below for those needing to migrate statements to this new format.)

Next Steps and Some Thanks

There is one ticket left to complete, statement attachments. We are looking to close this off early next week.

Over the next couple of weeks we are going to gather feedback, test, fix bugs and build out documentation. If you would like to get involved, please do. There are several ways you can help out:

  • Submit pull requests
  • Test and report issues
  • Join in community discussion
  • Help others reporting issues

We would like to say thanks to everyone who helped over the past couple of months with bug reports / suggestions and feedback. Special mention goes to @fugu13 @gazzastone @garemoko @Klaasie @barrysampson

Getting Started with v1.0rc1

Want to get started with v1.0rc1?  Check out the install instructions on our wiki.

Please remember this is a release candidate so make sure you back up your current installation before migrating to this version!

If you are running a developer version of Learning Locker (pre 1.0rc1) then you will need to migrate all your statements in order to use this version:

  • Open up a terminal and get your mongo shell running
  • Rename the statements table to old_statements
    db.statements.renameCollection(‘old_statements’)
  • Visit /migrate and follow the instructions. (make sure you are logged in)

Full installation instructions.