Gutenberg: A Training Platform for RSEs
Wilson, Alasdair; Robinson, Martin; Cooper, Fergus
- Publisher
- Zenodo
- Language
- en
Abstract
Gutenberg is an interactive training platform developed by RSEs for delivering training in software engineering and research computing related topics to researchers, students and other RSEs. It is built with a modern web stack, featuring a dynamic Next.js frontend and a robust API-driven backend. Gutenberg is open-sourced and permissively licensed, making it easy to adapt, extend, and deploy. This walkthrough will introduce the core components of the system and demonstrate how it can support material authors, learners and instructors. Authors develop course content purely in Markdown, with the addition of some custom callouts, to be stored in one or more separate Git repositories, allowing easy version control and collaboration. The platform renders this material into navigable courses with embedded challenges, code blocks, comment threads, and other multimedia content.Learners can browse available courses, enroll in them, and track their progress. Challenges let learners test their understanding, while embedded comment threads provide space for discussion and clarification both amongst peers and with instructors.Instructors and admins have access to an extended interface where they can design and schedule events, monitor learner progress, see feedback, and respond to and resolve questions and comments.We'll also briefly walk through how to set up and deploy your own Gutenberg instance. With configuration options and a containerized setup, it's easy to run a local or hosted version for your own or shared training materials, whether you're working individually or as part of a team.Acknowledgements Development of Gutenberg and the creation of training material was carried out under the UNIVERSE-HPC project, funded through the SPF ExCALIBUR programme under grant number EP/W035731/1A recording of this session is available on YouTube: https://youtu.be/zYUshpuaHoI
Full text
To change the image – 1. Delete the current image 2. Click on the icon in the centre of the image placeholder 3. Select a new image (from wherever you have it stored on your computer) 4. Once inserted, right-click on the new image and select “Send to Back” Gutenberg: A training platform for RSEs ALASDAIR WILSON, MARTIN ROBINSON & FERGUS COOPER | SEP 2025
Background Existing solutions: •Course material and publishing tightly integrated (e.g. carpentries is on jekyll, others use hugo), reduces portability of material •Generally based on static websites: •No interactivity between students and instructors •No facilities for running individual course events •No fine-grained and formal control of attributions as meta-data •E.g. want to integrate externally developed material and have attributions tracked Gutenberg Goals: •Course material separate from rendering, in a portable format •Interactivity: (a) student-instructor (b) course enrolment, tracking etc •Mix-match course material from different sources with attribution
Understanding and Nurturing an Integrated Vision for Education in RSE and HPC Project Partners: •University of Edinburgh •University of Oxford •University of Southampton •Imperial College London •British Computer Society Based around an aim to enhance skills in HPC and exascale but includes the complete path from beginner to advanced practitioner… Universe-HPC Project
Gutenberg Summary • Is a: • React/NextJS front + backend • Postgres DB • Renders markdown course material server side •
Useful Links • Docs: https://blog.oxrse.uk/gutenberg/ • Github: https://github.com/OxfordRSE/gutenberg • Course Material: https://github.com/UNIVERSE-HPC/course-material/ • Gutenberg: https://train.rse.ox.ac.uk/
Part 1: For Content Creators Part 2: For Students Part 3: For Course Organisers Gutenberg Walkthrough
Part 1: For Content Creators • Design your course • Include embedded multimedia • Include embedded challenges • Define metadata in front matters • Courses remain as md can be reused across any independent deployments https://train.rse.ox.ac.uk
Markdown • It’s just markdown, same as other solutions • Rendered with react-markdown • Most elements overwritten • Everything you’d expect to work works • Syntax highlighting • Copyable codeblocks • Latex math rendering • Embedding multimedia • Etc.
Challenges • Embed Problems and Solutions • Track course progress • Student • Instructor
Metadata: Attributions •Can assign any number of attributions •Can assign to all levels (Stages in hierarchy) of content •Citation: • Text • Url • Image • License
Metadata: Learning Outcomes •learningOutcomes can be added to any level of material •Just a collapsible list •Future plans: these to be used in more dynamic ways linked to learning pathways
Metadata: Dependencies • List of Dependencies via dependsOn • Any level of material can have a dependency assigned • Can organise lessons in a course • Can relate courses to each other • A complex tree of dependencies is built • Provides prev/next relationships • • More on this later… •
Metadata: Course Heirarchy • Can organises Sections in a Course. • Doesn’t have to be a single track • Same for Course in a Theme •
Metadata: Name and Id • Self explanatory • Name is how they are displayed • Id is internal reference Metadata: Tags • Tag things? •
CI • Several CI tools to make your life easier • Markdown is linted • Custom action for Front-matters yaml
CI • Several CI tools to make your life easier • Markdown is linted • Custom action for Front-matters yaml
CI • Several CI tools to make your life easier • Markdown is linted • Custom action for Front-matters yaml • Custom action to lint python codeblocks • Codeblocks stitched together • Linted as one .py file • Line numbers recovered ☺ • Non-interpreted languages harder…
CI • Several CI tools to make your life easier • Markdown is linted • Custom action for Front-matters yaml • Custom action to lint python codeblocks • Codeblocks stitched together • Linted as one .py file • Line numbers recovered ☺ • Non-interpreted languages harder… • Custom link-checker (retries, caching) • Needs built site: runs on the webapp repo
Part 2: For Students • Browse any course material • Enrol on courses/switch active course • View course schedule • Follow along with scheduled material • Leave feedback/ask questions • Complete challenges/track progress • (and leave feedback) • • • https://train.rse.ox.ac.uk
Leave Comments • Leave comments anywhere by highlighting text •
Custom learning pathways • Coming soon… • Outside of scheduled courses can filter and pick a learning pathway suitable to them • Takes into account their experience • Takes them from their to where they want to be
Part 3: For Course Organisers • • • https://train.rse.ox.ac.uk • Create Events (scheduled courses) • Monitor Student progress • • Host the website yourself… • Customise the material to your liking
Make an Event • Events are timed • Made up of EventGroups – a timeframe where material is scheduled like a lecture or a day or a week of your course • EventGroups have EventItems, the individual atoms that make up the content
Make an event • Event… •
Make an event • EventGroup… •
Make an event • EventItem •
Monitor Student progress •
Monitor Student progress •
Deploying the site If you want to deploy it yourself: • We deploy on Fly.io • Docker compose also available • Nextjs • Nginx • Postgres • Qdrant Both methods are in the repo and the docs