title | tags | authors | affiliations | date | bibliography | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ananke: A Jupyter distribution integrating JupyterHub and Nbgrader into learning management systems |
|
|
|
3 November 2024 |
paper.bib |
The Jupyter ecosystem [@jupyter] is widely used in STEM teaching. Major components include JupyterLab as the user-facing environment, JupyterHub for managing user access, and Nbgrader for autograding assignments. The Ananke Jupyter distribution on the one hand bundles pre-configured tools from the Jupyter ecosystem for academic teaching and research. On the other hand, Ananke provides tight integration of JupyterHub and Nbgrader into learning management systems (LMS) like Moodle [@moodle] and Canvas [@canvas] via the Learning Tools Interoperability (LTI) 1.3 standard. The aim of Ananke is to make installation and administration of server-based Jupyter deployments in academic environments as simple as possible. The focus is on small to medium-sized JupyterHubs running on one server, not on distributed large-scale ones.
The need for Ananke arose from the realization that the installation of each individual Jupyter component is easy, but the effort required for a practically usable overall system is very high. An even more difficult problem is that most universities run an LMS for managing students, grades and material. Thus, grading tools like Nbgrader should integrate seamlessly into the LMS. While JupyterHub already provides login through an LMS, Nbgrader requires that each course, instructor and student is manually enrolled to its database, which is far from suitable for everyday use. There's a standard for data transfer between LMS and external tools known as LTI [@lticore; @ltilink; @ltigrade; @ltiname]. So we developed the tool Kore, which handles all the data transfer. Due to its tight integration into JupyterHub and Nbgrader, it should not be considered a separate tool, but an integral part of the Ananke Jupyter distribution.
Due to its LTI abilities, with Ananke manual additions to Nbgrader's database are obsolete. Necessary information is copied on user login from the LMS to JupyterHub automatically. In addition, instructors may send all the grades generated by Nbgrader back to the LMS simply by clicking a button. Ananke thus greatly simplifies using Nbgrader in a multi-course and multi-instructor teaching environment.
Looking for a way to document and automate all installation steps the authors built a Podman image containing all components and configuration files. Podman [@podman] is a Docker-like and Docker-compatible containerization system. Apart from ease of install, containerization allows to run several Ananke instances in parallel, adapted to the needs of specific user groups, for instance.
You may also install Ananke without Nbgrader. With as well as without Nbgrader, Ananke provides lots of useful features for teaching:
- easy configuration of collaboration rooms, which are JupyterLabs shared among different users for real-time collaboration,
- configurable access to GPUs for machine learning,
- resource limits for the whole hub or per user,
- shared directories and pre-populated user homes,
- user-configurable access to cloud storage and other storage facilities via jupyter-fs [@jupyterfs].
Ananke ships with configuration templates for long-lived users (persistent data storage) and short-lived users (delete everything on logout). The extensive documentation in addition to Ananke specific topics also contains step-by-step guides for installing the whole server. Starting from a bare-metal server the documentation guides you through Linux installation and hardening, installation of the containerization framework, GPU driver installation, and Ananke installation. For instructors and students documentation contains everything they need to use an Ananke-based JupyterLab, like handling of custom Python environments, file transfer, GPU usage, and coding assistance tools.
Ananke and its predecessors are in daily use by the development team for 4 years now. The release cycle is at 6 months with each release updating all Jupyter components to the most recent version.
Future development will focus on making the LTI communication component Kore a separate package, which provides LTI communication not only to Nbgrader but also to other Jupyter based assignment tools.
The development team thanks Hendrik Weiß (Zwickau University of Technology) for extensive testing and various bug reports. The project obtained partial funding by the Saxon State Ministry of Education and Cultural Affairs (Sächsisches Staatsministerium für Wissenschaft, Kultur und Tourismus) in 2022 and 2023.