Jupyter XBlock for Open edX
Project description
Jupyter XBlock
This is an XBlock to integrate JupyterHub notebooks to your Open edX learning management system (LMS).
⚠️ THIS IS A WORK-IN_PROGRESS! We expect to release a first stable version sometime in March 2023.
Features:
- Integrate JupyterLab notebooks to the Open edX courseware.
- Fully editable notebooks and student workspaces.
- Simple integration of notebooks from public git repositories.
Here is a screenshot of the Jupyter XBlock in action:
Usage
Install this xblock with Tutor (Olive release):
echo "jupyter-xblock>=15.0.0,<16.0.0" >> "$(tutor config printroot)/env/build/openedx/requirements/private.txt"
tutor images build openedx
tutor local start -d
In your course "Advanced Settings", add "jupyter" to the "Advanced Module List":
Configuration
JupyterHub base URL
The JupyterHub cluster can be configured separately for every XBlock, but this can be quite tedious for course instructors. Instead, a default JupyterHub cluster URL can be defined globally by adding the LTI_DEFAULT_JUPYTER_HUB_URL
setting to both the LMS and CMS settings.
For instance:
LTI_DEFAULT_JUPYTER_HUB_URL = "https://hub.myopenedx.com"
If this setting is undefined, the base URL will default to https://hub.LMS_HOST
.
LTI passport ID
Similarly, the LTI passport ID can be defined globally for all Jupyter XBlock instances. When a passport ID is not explicitely defined in an XBlock, it will default to the LTI_DEFAULT_JUPYTER_PASSPORT_ID
setting. If this setting is also undefined, then it will default to LTI_DEFAULT_PASSPORT_ID
. The fallback value is "jupyterhub".
To define a global LTI passport ID to be used by all Jupyter XBlock instances, add to your LMS/CMS settings:
LTI_DEFAULT_JUPYTER_PASSPORT_ID = "myjupyterhub"
Then, the corresponding passport must be created in the course advanced settings, as described in the Open edX documentation.
Configuring JupyterHub
You will have to launch your own JupyterHub cluster separately from Open edX. Your cluster should support:
- LTI authentication via ltiauthenticator.
- LTI authentication must accept the key and secret defined in the course LTI passport (see above).
- Pulling git repositories via nbgitpuller.
- Iframe embedding in your LMS/CMS, via the "Content-Security-Policy" header.
Known limitations
- Grading is not supported at the moment.
- It is not possible to pull notebooks from a raw URL -- only from a public git repository.
Troubleshooting
This XBlock was kickstarted by Matthew Brett (@matthew-brett) and funded by a grant from the Chan Zuckerberg Initiative. This project is maintained by Régis Behmo from Overhang.IO. Community support is available from the official Open edX forum.
License
This work is licensed under the terms of the GNU Affero General Public License (AGPL).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.