LTI in Ulmo analyzed (new)

LTI in Ulmo analyzed (new)

LTI capabilities in Ulmo & pros/cons

LTI in Ulmo has 3 configuration interfaces with different scopes and tradeoffs.

1. LTI Consumer XBlock

This is where course authors can configure and place an LTI component inside course content.

  • LTI 1.3 can be configured entirely in the XBlock config modal.

  • LTI 1.1 requires authors to first create an LTI Passport on Advanced Settings page, reference it in the XBlock, and then complete the configuration.

Pros

  1. Configuration and placement is done in a single workflow within Studio which speeds up authoring.

Cons

  1. Each configuration is tied to a single XBlock. Copy/pasting or duplicating the XBlock is NOT practical for LTI 1.3 because the duplicated XBlock generates its own client_id, Keyset URL and Access Token URL which requires users to register it again in the tool.

    1. Codio, H5P don’t allow multiple client_id for the same registration and so, authors will need to create multiple registrations of the platform within the tool.

    2. JupyterHub don’t allow multiple Keyset URL and Access Token URL for the same platform. See LTI Consumer and multiple Blocks.

image-20260219-112313.png
For LTI 1.3, these 4 parameters have 1:1 mapping with the XBlock.

Related docs

  1. https://docs.openedx.org/en/latest/educators/concepts/exercise_tools/about_lti_component.html

  2. Guide: Codio integration

  3. Guide: H5P 1.3 integration

2. Reusable LTI Store

The Reusable LTI Store allows:

  • Operators to define LTI configurations (1.1 & 1.3) in Django Admin.

  • Authors to use those configurations in multiple LTI Consumer XBlocks in Studio.

  • Authors can override launch URL in each XBlock by turning on the waffle flag lti_consumer.enable_external_multiple_launch_urls.

Pros

  1. This is the closest thing Open edX has to a “tool registry” and overcomes the con listed above.

image-20260219-112530.png
In LTI store, all 4 parameters mentioned in LTI Consumer XBlock are have 1:1 relation with tool registration.

Cons

  1. It is a plugin and will need to be installed by operators.

  2. Only users with access to django admin panel can create reusable configurations.

  3. Configurations are available site-wide. Any course on the site can use the config if they know it’s filter key.

Related docs

  1. Authors: https://docs.openedx.org/en/latest/educators/how-tos/course_development/exercise_tools/setup_lti_reusable_consumer.html

  2. Operators: https://docs.openedx.org/en/latest/site_ops/how-tos/setup_lti_store.html

  3. Ulmo release notes: https://docs.openedx.org/en/latest/community/release_notes/ulmo/ulmo_reusable_lti.html

3. Course level integrations

Course-level integrations (configured via Pages & Resources) currently support only 6 tools and use  LTI 1.1.

  • Discussions: Ed Discussion, Piazza, Inscribe, Yellowdig

  • Live: Zoom, BigBlueButton

Pros

  • This is the only course-level “tool selection” available today.

Cons

  • Limited to LTI 1.1

  • Limited to only 6 tools

Related docs

  1. https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/course_assets/course_live.html


What makes a “good” LTI experience?

Let’s define what “good” looks like for LTI in Open edX using a few measurable parameters:

  • Speed

    • Time to first successful launch

    • Number of fields the author must touch

    • How often ops/admin help is needed

  • Scale

    • Time to add N similar items (reuse)

    • Effort to change a tool setting once and have it apply everywhere it’s used

  • Governance

    • Number of duplicate configs across a course/site

    • Exposure of credentials

    • Ability to enforce privacy policy

  • Configuration scope

    • Course level

    • Org level

    • Site level

  • Reliability

    • Launch success rate

    • Grade sync success rate

    • Ease of troubleshooting

 

Likely preferences for each user persona are:

  1. Course author: speed + scale

  2. Operator/admin: governance + reliability

  3. Learners/instructors: reliability

image-20260220-060559.png
Typical structure of an Open edX instance

Registration vs Placement

A potential improvement is to separate placement from registration. This will likely improve governance and scale but it may reduce authoring speed if steps are added.

A better choice would be a separation that exists under the hood, while authoring feels fast.