So the entire word Learning Tools Interoperability seems to be very hard right ? In short words it is nothing but a common set of rules to develop a Learning Management System (commonly termed as LMS) and how interconnection can be established between different LMSs.
Preface : In this blog I will try to cover the entire technological aspects of the Learning Tools Interoperability and how it can be implemented in an existing app.
An Interconnection between different Learning Management Systems 🚀
Suppose you are a teacher and your current school uses LMS-A but you have all your prepared course materials like various links, videos or any external tool which was associated with your previous school’s LMS-B, now every time it is not possible to import all the things from LMS-B to LMS-A manually. Here comes the advantage of LTI , if both the LMS supports the lMS Global specified LTI protocol then you can easily showcase your previous LMS contents to another LMS just by adding them as an External Tool.
Here the LMS-B will be the LTI-Provider and the other will be the LTI-A will be LTI-Consumer.
From the above image the working principle or LTI can be seen.
Integration of LTI with an existing app built on Ruby on Rails ✍️
Here i will you give you insights on how you can add the LTI protocol if you have an app built on Ruby on Rails
First you need to install the gem ims-lti , this gem is really helpful to implement LTI in any RoR application.
Step wise breakdown of implementation will be as follows
- First you need to verify the launch_url parameters which comes from the corresponding LMS end (here I am assuming that the Rails Application is Tool provider and the LMS is consumer).
2. Then you can check your application logic and can render a signle page which the user will be shown upon successfull launch request from the LMS side.
3. The pages will be only shown if they supports the ifrmae support so here I have used this to support iframe for the lti accessable pages.
Note : You shouldn’t enable the X-FRAME-OPTIONS globally for iframe embed enabling rather you can enable it per page basis, bacause your entire app shouldn’t be accessable from the LMS end.
4. Grade submission can also be done Using LTI, such that teachers can grade the students via your external tool and the grade will be directly sent to the corresponding LMS .More information about grade submission can be found here.
Sample implementation in a Rails App 🖥
I have already implemented the LTI with CircuitVerse platform as a part of my Google Summer of Code Project , here in the branch lms-lti my works can be found , I have integrated the whole codebase with LTI protocol using the ims-lti gem.
Here are some of the notable Pull Requests I made during this time
- Add assignments as LTI to LMS from CircuitVerse
- UI changes done for LMS credentials generation
- Grade Submission to LMS from CircuitVerse
Please have a look at the PRs , you can understand the flow of the LTI integration with an existing codebase.
Useful Resources for LTI Implementation 📚
- IMS Global documentation
- ims-lti gem documentation
- Instructure LTI example repository
- Instructure LTI provider engine repository
- Sample LTI launch request formation by matthanger
- LTI Starter app by atomicjolt
I hope this blog will help if anybody is interested in the implementation of an LTI based app.
Thanks for reading 🎉.