-
Notifications
You must be signed in to change notification settings - Fork 15
Opaque Keys Rollout Plan
This first phase is currently implement on the opaque-keys branch (https://github.com/edx/edx-platform/pull/2905). In this phase, the older key format (org/course/run
and i4x://org/course/category/name@version
) will be serialized/deserialized at the system extremities. The external interfaces to the LMS won't change (this includes external apis such as LTI, and XQueue, the relational database, event logs, and html ids). Studio URL formats will be upgraded to the new key serialization schema.
The opaque_keys
library, the CourseKey
, UsageKey
, DefinitionKey
, and AssetKey
base classes, and the locations.py
and locators.py
implementations of those base classes will be extracted into a separately installable library. This library will be published to Github and PyPI, and included into the LMS and Studio via a pip installation dependency.
During this phase we will also be looking to consolidate the currently separate Location
and Locator
key classes, as they have drifted closer and closer in design over the course of the project, and at this point it appears that Locator
is simply a superset of the Location
functionality.
This phase depends on 2., and may be merged only after giving the research community sufficient notice so that they can update their code to use the OpaqueKeys
library.
In this phase, the LMS will be updated to support the new OpaqueKeys serialization format in incoming urls, and to send keys using the new serialization format for new key types (*Locator
keys) when communicating to 3rd parties (XQueue, LTI, relational database).
In this phase, the data accessible using the OpaqueKeys
api will be explicitly represented in the event context in emitted events.
In this phase, the data accessible using the OpaqueKeys
api will be made available to XBlocks via an XBlock service. This data will be exposed to CapaProblem input types and response types, and made available in html for access by instructor-written javascript in course content.