I have been talking with Greg Gay of the ATutor (www.atutor.ca) project about adding IMS Basic LTI to ATutor. ATutor already has a very solid certified implementation of IMS Common Cartridge 1.0 and so I wanted to see them with the Basic LTI certification as well and prepare them for IMS Common Cartridge 1.1 that includes Basic LTI.
I started working in earnest Sunday morning (coding helps me recover from jetlag) and finished it by Monday evening. Working in ATutor was quite nice – the module extensions are well documented and Greg and Cindy were quick with help any time I got stuck. The content system is less pluggable than the module system so my changes there are less elegant.
Here is a demonstration of the resulting work showing Wimba and the IMS Basic LTI test harness working in ATutor:
IMS Basic Learning Tools Interoperability in ATutor (Prototype) from Charles Severance on Vimeo.
It is always fun to experiment with and learn about a new architecture and approach to building an LMS, having now worked on Sakai, Moodle, and OLAT. I am in particular curious as to how to best build PHP applications and so it is nice to look at how a mature project views plug ins and how it implements Model-View-Controller.
The code consists of a module that primarily provides a new administrator capability called “Proxy Tools” to create instances of IMS Basic LTI Tools. I took this design approach from the Moodle/Blackboard approach rather than the Sakai approach but adapting it a bit to more naturally align with Full LTI when it comes out.
The other portion of the code is an extension to the ATutor content system. The content system is not designed for extensions – so I have patches scattered across ATutor. I am sure that when Greg takes a look at it, he will have some good suggestions as to how it can be improved structure-wise. I was in a hurry so I made things work.
Getting the Software
Source Code to be checked out into /atutor/docs/mods/basiclti
There is a README file with instructions.
You first check the code out into the module directory (above) and then apply the included patches to the rest of the ATutor (trunk) distribution to make the changes to the content system.
After that it is module installation and making some IMS LTI Tools and adding content and testing. The video (above) is a good test plan and shows what it should look like when everything is installed.
Next Steps
This is really only prototype code – written quickly. My next steps are to talk to Greg and the ATutor team to figure out how to do this properly in the ATutor code base in a way that is more maintainable.
It is always fun making prototypes – but then the hard work really begins.
ORM Experiment
I was creating some new tables and decided to build a simple ORM/form framework to automate common tasks of displaying displaying create/edit/view forms and INSERT/UPDATE SQL statements. I really like how this one turned out – it is the simplest ORM/FORM system I have ever built. It is here:
Dr. Chuck’s new FORM/ORM Experiment
I need to do a bit of re-factor to make the HTML generation more pluggable and separate the portable and reusable bits from the ATutor specfic bits. But it was good fun to write and saved me from lots of repeated cutting and pasting to make forms and avoided making classes for objects. It kept my re-typing of the same thing over and over again to a minimum and made my code easier to debug and validate.