[Draft] Multi-score support in Open edX

[Draft] Multi-score support in Open edX

Open edX course content components have a single score. This proposal explores use cases where associating a single course component with multiple independently identifiable scores would be helpful.

Use Case 1: Supporting Competency-Based Education in Open edX

Open edX associates one score with a course component. This works for components that produce a single result, but it does not fully support activities that may evaluate learners against multiple competencies or criteria.

To support competency-based education, Open edX should be able to associate separate competency-level scores with the same content component. The platform should be able to store, display, and use those scores in completion/grading calculations.

Use Case 2: Receiving Multiple Scores from an LTI Tool

Some LTI tools, such as Author by Muzzy Lane, can generate and post multiple scores for an activity represented by a single Open edX LTI Consumer XBlock.

Open edX can receive and store multiple scores posted to those line items. These records are available in the LTI model, but they are not connected to the Open edX gradebook. The LTI consumer XBlock only receives the latest score.

image-20260716-094238.png
The screenshot of Moodle gradebook showing grades for an activity named “Activate Assessment: Resilience + Growth Mindset 2”. It shows 8 line items below this activity name, which were created by Author via AGS endpoint. Author then sent scores for each of these line items. If a learner attempts the same assessment, Author finds and updates each of these line items.

Supporting multiple scores/XBlock in OEX means:

  1. Having those scores contribute towards course grade and completion

  2. Making grades visible to learners and instructors

A simpler way to do this is to skip modifying the gradebook and only get aggregated scores per component. And use the lti_consumer_XBlock model to directly power instructor and learner views in Grading MFE and progress page.

However, full support will likely require modifying the gradebook to accommodate multiple scores for a course component. 

image-20260716-084716.png
In the case where an LTI tool is sending multiple scores, there’s two ways to show them in OEX: with gradebook support or directly from the LTI model.

Use Case 3: Sending Multiple Scores Through LTI

When Open edX content is delivered to another learning platform through LTI, Open edX currently sends scores based on the Open edX grading model. Since each XBlock has only one grade in that model, Open edX sends only one score for each XBlock.

If an embedded LTI tool, such as Author by Muzzy Lane, generates multiple scores for a single XBlock, Open edX may receive and retain those scores at the LTI layer. However, Open edX cannot currently transmit those individual scores to the external learning platform consuming the Open edX content.

When Open edX acts as an LTI tool provider, it should be able to send multiple independently identifiable scores for a single content component to the consuming learning platform. This may be supported either through the Open edX grading model, if the scores become native gradebook items, or through a bridge that reads directly from the LTI score records.

image-20260716-090527.png
In the case where OEX is acting as a bridge between an LTI tool and another LMS, there’s two options to build this capability: with or without the gradebook.

Open questions

  • Which use case should drive the first increment: local visibility, aggregation, downstream LTI passback, or competency-based education?

  • Should Open edX support one aggregate grade for a component that has multiple scores? If yes, what should the aggregation policy be like?