Skip to content

Files

Latest commit

e669400 · Sep 16, 2024

History

History
This branch is 501 commits behind openedx/edx-platform:master.

xmodule

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Sep 12, 2024
Oct 28, 2022
May 28, 2024
Jul 26, 2024
Sep 16, 2024
Aug 27, 2024
Jul 26, 2024
Jun 24, 2024
Apr 10, 2024
Sep 9, 2024
Jan 16, 2024
Jul 16, 2024
May 13, 2024
Jun 20, 2022
Aug 23, 2023
Jun 20, 2022
Apr 26, 2023
Jul 26, 2024
Aug 23, 2023
Sep 9, 2024
Dec 13, 2022
Jun 20, 2022
Apr 1, 2024
Dec 19, 2022
Jun 20, 2022
Apr 1, 2024
Jun 20, 2022
Jun 20, 2022
Apr 4, 2024
Jan 30, 2023
Dec 19, 2022
May 13, 2024
Jun 20, 2022
May 28, 2024
Aug 23, 2023
May 13, 2024
Jan 30, 2023
May 28, 2024
Aug 2, 2023
Aug 22, 2024
Aug 23, 2023
Jan 30, 2023
Jul 27, 2023
May 13, 2024
May 13, 2024
Jul 19, 2023
Mar 12, 2024
Jul 27, 2023
Jun 20, 2022
Jul 25, 2024
Jun 28, 2022
Apr 1, 2024
Apr 26, 2023
Jan 30, 2023
Jun 20, 2022
Mar 11, 2024
Aug 23, 2023
Dec 19, 2022
Apr 1, 2024
May 13, 2024

xmodule

The xmodule folder contains a variety of old-yet-important functionality core to both LMS and CMS, most notably:

  • the ModuleStore, edx-platform's "Version 1" learning content storage backend;
  • an XBlock Runtime implementation for ModuleStore-backed content;
  • the "partitions" framework for differentiated XBlock content;
  • implementations for the "stuctural" XBlocks: course, chapter, and sequential;
  • the implementations of several different built-in content-level XBlocks, such as problem and html; and
  • assets for those built-in XBlocks.

Historical Context

"XModule" was the original content framework for edx-platform, which gives the folder its current name. XModules rendered specific course run content types to users for both authoring and learning. For instance, there was an XModule for Videos, another for HTML snippets, and another for Sequences.

XModule was succeeded in ~2013 by the "XBlock" framework, which served the same purpose, but put additional focus into flexibility and modularity. XBlock allows new content types to be created by anyone, completely external the edx-platform repository. It remains the platform's flagship content plugin framework to this day.

For years, edx-platform supported both content frameworks simultaneously via a Frankenstein-ish hybrid XBlock+XModule runtime implementation in this directory. Fortunately, in 2021, all remaining XModules were converted into XBlocks. Since support for the XModule framework is no longer necessary, the BD-13 project is now working to radically simplify the remaining XBlock runtime implementation.

This folder was moved from ./common/lib/xmodule/xmodule to its current location, ./xmodule. The reasons that this folder (along with several others) were moved are detailed in this ADR about the dissolution of sub-projects.

Direction

Maintain, Simplify, Extract & Replace.

Currently, this directory contains a lot of mission-critical functionality, so continued maintenance and simplification of it is important. Still, we aim to eventually dissolve the directory in favor of more focused & decoupled subsystems:

To help with this direction, please do not add new functionality to this directory. If you feel that you need to add code to this directory, reach out on the forums; it's likely that someone can help you find a different way to implement your change that will be more robust and architecturally sound!