Hello, I am a freelance web developer tasked with adding on some additional functionality to an existing Canvas LMS system. It seems the way to do this is to build and integrate an external LTI application, and I would likely do this in rails. While I have found the documentation on this and the course on building LTI applications, I haven't been able to find anything that clearly explains on a basic level what an LTI app does functionally, how it is structured, and how it interacts with the LMS system. I have the following questions and would greatly appreciate any help I can get getting started.
1. My understanding is that LTI applications are separate free standing applications that are run within the LMS system and share authentication. Is this correct? Several of the following questions are based on this assumption so please correct me if I am wrong and help me understand what LTI applications functionally do.
2. If LTI apps are in fact free standing applications, are they then deployed separately on their own servers with no particular integration with the Canvas LMS system to begin with?
3. If LTI applications are deployed separately, and if they are in fact run from within the LMS system, how do they interact with the LMS system while they are running? In other words, is there some direct interaction between the application and the LMS system, or is it simply rendered within a particular classroom with access to the user's data, say via an iframe?
4. If LTI applications are deployed separately, and if they are in fact run from within the LMS system, is the application, or the LMS system responsible for handling the data for the application? If there is a database for the LTI application, how should that be set up and structured to work with the LMS system? If all data is handled by the LMS system, is it possible to create and store specialized data for the LTI application?
5. What is the protocol for getting an application to be accessible and eventually integrated to a particular LMS system? Is there anything that needs to be arranged with my client or the CanvasLMS company? If I just want one client to be able to use my application, is this possible? (In this case client refers to the person I'm working with rather than the front end, sorry for the confusion)
6. What is the best way is to set up a hello world type application to get myself started? Eventually, I would like to have a test environment set up to continually update and test out my application as I build it. Is it feasible to set up a LSM system on my local machine with a decent knowledge of the rails framework and use this in the development of my LTI application, or is there some other way I should go about this?
6. Are there any specifics I should know about the particular LMS system that I would like to work with in order to be able to develop my application in the appropriate way?
Thanks in advanced. I will likely have some follow up questions, but right now I am just trying to understand the fundamentals, again I will greatly appreciate any help I can get here.
These slides from my friends at Harvard University have filled in a lot of the blanks for me as a technical director making LTI "build or buy" decisions. Based on my experience, I'll suggest some possible answers to your questions:
Canvas pioneered the notion of LTI placements the most common of which is within a course. (The next version of LTI should open up some additional interaction possibilities through message-passing between the LMS and tool.)
or is it simply rendered within a particular classroom with access to the user's data, say via an iframe?
73396fae490e357703ca9512472ce424b31700771b9369e148624b3b9d5ecb8d, since you posted the same prompt twice, we now have two separate conversations underway. All of the input is valuable. In the interest of keeping all commentary unified under a single discussion thread, I'm providing a link to the parallel discussion taking place at How can I get started building an LTI external application?
(Thanks to @garth for pointing this out and linking to here from the other discussion!)