Installing into Open edX
How administrators can install and verify the Scaffold 0.1.2 XBlock.
This page is for the person installing scaffold into Open edX. It assumes you administer an Open edX instance and can install Python packages into the LMS and Studio environments.
The end state: scaffold appears as an advanced component in Studio. Educators add it to a unit; it renders inside both Studio (author view) and the LMS (learner view). Grades flow through Open edX’s standard grade event mechanism.
What you need
- Python 3.11 or later.
- An Open edX deployment that can install
XBlock>=5.2,<7. - Administrator access to rebuild and restart both the LMS and CMS/Studio services.
- Studio admin access to enable the advanced component.
Public package status
Scaffold 0.1.2 is published as
scaffold-xblock on PyPI.
The matching distributions are also attached to the Scaffold 0.1.2
GitHub prerelease.
Scaffold is currently alpha software. Evaluate it in a non-production environment before using it with live learners.
Install the published package
Install the released package with:
python -m pip install scaffold-xblock==0.1.2
For Tutor, pin it in the persistent Open edX requirements so the package survives container replacement:
tutor config save --append OPENEDX_EXTRA_PIP_REQUIREMENTS=scaffold-xblock==0.1.2
tutor images build openedx
tutor local reboot -d
Verify it in both services:
tutor local exec lms python -m pip show scaffold-xblock
tutor local exec cms python -m pip show scaffold-xblock
Each command must report version 0.1.2.
For a deployment without Tutor, install the same pinned package in the
Python environments used by both LMS and CMS/Studio, restart both
services, and run python -m pip show scaffold-xblock in each
environment.
PyPI will be the normal installation channel. The exact approved wheel on the versioned GitHub Release will be the verified fallback. Do not install GitHub’s automatically generated source archive.
Release 0.1.2 was smoke-tested on Open edX Ulmo.3 using Tutor 21.0.8, Python 3.11.8, and XBlock 5.2.0. The package requires Python 3.11 or later and supports XBlock 5.2 through the supported 6.x boundary.
Enable the xblock
The xblock identifier is scaffold. Add it to your Open edX
advanced settings policy under advanced_modules so educators can
add it to a course unit:
{
"advanced_modules": ["scaffold"]
}
This is the same place you enable any other advanced xblock.
After saving, open a unit and confirm that Advanced → Scaffold is available. Create a test component and check it in both Studio and the learner-facing LMS.
Add it to a course
In Studio, open a unit, choose Advanced under the Add New Component panel, and select Scaffold from the list. The block mounts the editor. Educators author inside Studio; learners see the rendered page inside the LMS.
Where the data lives
Scaffold pages are stored as JSON inside the xblock’s own state field. No new tables, no external service. The xblock owns the stored document.
Submitted answers, results, and attempt counts are stored in the xblock’s user-state field, so they survive page reloads.
Grades are published through Open edX’s standard grade event mechanism — scaffold doesn’t write to the gradebook directly.
Optional xAPI learning records are published to the Open edX tracking
pipeline as the scaffold.xapi event. Scaffold does not send them to a
separate Scaffold service or LRS. See Learning records and
xAPI.
Adapter behaviour worth knowing
- Single author per page. Real-time collaboration is disabled in the Open edX adapter; Studio is treated as a single-author surface.
- Media uploads use the Open edX contentstore. Uploads require Studio write permission. The LMS resolves existing assets but doesn’t upload new ones.
- Server-side grading. The xblock mirrors scaffold’s grading library on the server side. Browser submissions don’t decide the grade; the server reconstructs the answer key from the stored JSON and grades from there.
Upgrade Scaffold
Change the pinned package version, rebuild the Open edX image, reboot Tutor, and verify the package version in both LMS and CMS. For non-Tutor deployments, upgrade the same pinned version in both Python environments and restart both services. Read the versioned release notes before every upgrade.
What’s next
- Install scaffold lists every supported platform and the current public channels.
- Learning records and xAPI explains which learner events the integration publishes.