Before I started writing this post, the marketing team threw out the idea that I could start the post with a quote or two from Bill & Ted’s Excellent Adventure (as you may have predicted after seeing the title). I’ve been scouring the Internet Movie Database’s quotes listing, and I actually found a few relevant snippets.
“Be excellent to each other” is usually a good choice, but it’s already one of Rustici’s mottos, so that feels like a bit of a cop-out. “Strange things are afoot at the
Circle-K LTI platform we haven’t worked with before” could fit a lot of our support interactions, but I honestly added in too many words and ruined the joke. I even thought about going with “ Billy Luke, you are dealing with the oddity of time travel LTI 1.3 integrations with the greatest of ease” to brag on our QA team leader’s uncanny ability to troubleshoot connection issues, but this is a post about LTI, not about how helpful Luke is (hint hint, marketing team).
Overall, I think the best quote I could misappropriate might be:
Bill (quoting Socrates): “The only true wisdom consists in knowing that you know nothing.”
Ted Rustici Software support and developers (talking about LTI): “That’s us, dude.”
We’ve been helping a lot of people with LTI for a long time now, but no matter how much we’ve seen, it feels like there’s always room for the spec, or someone’s implementation, to surprise us. Because we know first-hand how steep the learning curve can be with this standard, we wanted to spread the knowledge and help you get up to speed.
(Heads up, most of this post is actually ripped from the transcript of a talk that Luke Wiedeman and I gave last year during Rustici: The Gathering. If you’d like access to the original talk, including a hands-on demo from The Vice-President of Not Doing Things Wrong himself, just fill out this form, and we’ll hook you up).
What is LTI?
LTI is an acronym for Learning Technology Interoperability. It’s the learning standard that we see used most by higher education in a way that we don’t see with some other learning standards.
LTI vs SCORM?
If you’re already familiar with Rustici products, then the easiest way to wrap your head around LTI is probably by comparing it to SCORM. The biggest difference here is that LTI is built around providing remote access to the content, while SCORM courses traditionally bundle everything you need in a zip file that is imported directly into an LMS. The usual SCORM approach leaves all the intellectual property of the course in that zip file, but LTI works differently. Instead, LTI just relies on sending links to your content. The content provider actually gets to keep the intellectual property on their own servers and just give out access to the platforms launching the content.
LTI vocabulary and terminology
Let’s cover some terminology before we go further. The key dynamic to keep in mind here is between the “tool” and the “platform.” If you’re familiar with Rustici’s products already, you can think of Rustici Dispatch and Content Controller as “tools” in an LTI relationship. The tool is the system that hosts and distributes the content.
Conversely, the “platform” is the system that receives the content. The most common example we see here is Canvas, but you could also use Rustici Engine or SCORM Cloud. The “platform” is the system that learners interact with to launch their content, and it’s where grades usually show up.
While we’re still establishing our terms here, let’s also talk about LTI Advantage. You can think of LTI Advantage as an umbrella that covers the core LTI 1.3 and its various “fixins.”
LTI 1.3 Core
The LTI 1.3 core covers the absolute minimum functionality. This is mostly focused on how to establish the relationship between tools and platforms, and how to launch content after that relationship has been established. Importantly, this does not include any way to report a score from the tool back to the platform.
Assignment and Grading
Next up is the assignment and grading service. For most use cases, this is a pretty important part of a learning standard. It establishes how the tool should communicate how well a student did back to the platform that launched the content. There is also an element of “assigning” courses to individual students, but we frankly haven’t dipped our toes too deeply into that pool just yet.
Deep linking, to me, is the standout feature of LTI. It provides a way for platform admins and instructors to look at a catalog of content available from the tool, pick what they want, and import their courses directly into their platform.
If you’re coming from the SCORM world, then you probably have to deal with either manually going through your catalog, picking the content that is relevant to a particular customer, and sending over those files. Or maybe just zip up the entire catalog and send them a huge folder of content, and they have to pick through it to find what they actually care about.
Neither of these options feels great for anyone. Instead, deep linking bypasses all of that and lets someone just pick their courses from a menu that you provide. This really simplifies the hand-off process, and it significantly cuts down on the back-and-forth required.
Names and roles services
The last part of LTI Advantage is the names and roles service. This is for communicating student info between the tool and the platform as it goes both ways. While we currently don’t support this service in our products, it’s worth mentioning as part of the LTI Advantage umbrella.
Why implement LTI?
Now that I’m finally done covering vocabulary, let’s talk about why you might want to support LTI.
On the other hand, the LTI grading service is based on direct communication between the tool and the platform. This happens behind the scenes as API calls directly between the servers; since these calls never go through the learner’s browser, it’s potentially more secure than SCORM (depending heavily on the implementation details of both the tool and platform).
The second reason you might want to implement LTI is strictly for deep linking support. I already covered this in an earlier section so I won’t belabor the point, but if you’d like some more details and maybe a hands-on demo, please reach out to our sales team. They’d be happy to give you the tour.
Why wouldn’t you want to support LTI?
LTI definitely has some upsides that might be tempting you, but let’s cover the flip side of the issue here.
LTI’s grading service isn’t very in-depth. It pretty much only includes the learner’s score and completion. It can optionally include the comments of an assessor, if the assessment was hand-graded, but from what we’ve seen, this seems to be a fairly uncommon practice. If you want anything more precise like SCORM’s idea of success vs. completion or the depth of xAPI’s statements, then you won’t be satisfied by LTI’s offerings.
We’ve been supporting LTI 1.3 for a few years now and candidly, the initial setup can be sort of a pain. Negotiating the relationship between a tool and platform requires exchanging a lot of information between the two systems. This involves a lot of copying and pasting, and not every system uses the same terms for these fields. It’s really easy to mess up through no fault of your own. If you’re coming from a SCORM world where you just import a zip file, then LTI might be more work than you’d like undertake.
Lastly, this standard can just be difficult to troubleshoot. While the server-to-server communication makes things more secure, it also makes issues harder to diagnose. With all that communication happening behind the scenes, it’s more difficult to understand where something went wrong, compared to something like SCORM where everything happens in the learner’s browser.
The Overall LTI Flow
With all this context in mind, let’s put all these pieces together and briefly go through the overall flow of LTI that’s not too technical.
- Before anything else, the platform and tool need to exchange info. The analogy I like to use here is trading business cards. We need the platform and the tool to trust each other and know how to get in touch. This is the part that I mentioned can be a bit error-prone.
- Once the tool and platform know about each other, the tool will generate a launch URL. This is the remote access thing I mentioned at the top of this post. In the SCORM world, you would download a zip file, but in an LTI world, you just generate a link. This link is where the learner is as part of the launch process.
- From there, you need to import that launch URL into the platform. The exact details will vary depending on the platform you’re importing into, but it’s usually some combination of course name, launch links, and a bunch of other stuff. This step is just so the platform knows about the course in your tool. (If you’re using deep linking, then that will take care of steps 2 and 3 for you).
- Once the platform knows about the course, we need to assign the learner to the activity. Again, this will vary per platform, but we just need some way for the learner to get access to the activity.
- Finally, the learner is going to launch the content. From a technical perspective, there’s a whole bunch going on here, but to the learner, it’s just a green button that says “Launch”, and then they see the content.
- As an optional last step, the tool may send the learner’s score back over to the platform. This will only happen if both sides of the equation support assignment and grading.
Believe it or not, I have tried to keep things here at a really high level. To fully understand how these pieces work together, you might want to see it all in action. If you’re interested in seeing a tour of how our products support LTI, you can watch our session recording or reach out for a personalized walk-through. And of course, if you have any LTI implementation questions, feel free to ask us anything, really.