Grader and Login Updates

Welcome to summer, at least for many of you! This week we have a couple of updates that we would love feedback on. First, we have rewritten the grader, similar to the way we rewrote the assignment builder. We still need to add support for regrading an assignment for multiple students at once. Our focus has been on manually grading and reviewing individual questions. You can get to the new grader from the assignment builder by clicking on the “Grade” button for an assignment. You can also use this URL directly:.

Secondly we have also started work on a new login/registration system. The new login system is backward compatible with the old system, but we are hoping to get feedback on the new look and flow. You can try it out at logging in here. Or substitute register for login in the URL to see the new registration page. A new change course page is also available at My Courses. This will give us a single login and registration system instead of the current mix of old and new pages. It should also eliminate issues where you appear logged in on one page but not another.

Thirdly we have ongoing work on the peer instruction. It is already here I have an open PR that I am looking at this week that fixes some bugs and adds the async peer interface.

Finally, we have been working on a major refactoring of the code base. The goal is to make it easier to add new features and maintain the system going forward. We are nearly at the point where we can retire the code based on the initial web framework the project was built on in 2011. Not every feature is going to make the transition. But with all of the new services being based on a modern web framework, and having factored out the database access code into its own API, we are in a much better position to add new features and maintain the system going forward. Hopefully this will also make it easier for others to contribute to the project. We are nearly at the point where we can retire the code based on the initial web framework the project was built on in 2011. Not every feature is going to make the transition. But with all of the new services being based on a modern web framework, and having factored out the database access code into its own API, we are in a much better position to add new features and maintain the system going forward. Hopefully this will also make it easier for others to contribute to the project.

We will continue to work on these and make updates to the gradebook as well. Once all of these features are done and well tested, we will begin to make them the default, and eventually remove the old code. We will be sure to give plenty of notice before we do that, but we would love to get feedback on the new features as soon as possible. The goal is to have the old code removed by the end of the summer so we can start the school year with a clean slate.

We are also looking at improving the overall consistency of the user interface, as the system currently contains at least three distinct page styles. For student-facing pages, we want the experience to feel cohesive rather than like a collection of separate systems. We are also reviewing the instructor-facing pages with the same goal in mind, and we would welcome feedback there as well.

Some of the features we are considering eliminating, or replacing include:

  • The practice feature, based on spaced repetition, which is not widely used (although very effective) and is not well integrated with the rest of the system. We are considering replacing it with a new feature that would use AI models to generate personalized practice questions for students based on their performance in the course. This is still in the early stages of development, but we would love to get feedback on this idea.

  • The current student progress feedback page is another feature we are evaluating. Usage appears to be low, and some of the functionality added to the new grading page may ultimately replace it. Longer term, we would like to provide instructors with better insight into student learning: which concepts students are struggling with, which concepts they have mastered, and where intervention may help most. We are exploring ways to present this information more effectively than simple assignment or quiz scores, and we would love feedback on what would be most useful to you.

Runestone Guiding Principles

Runestone exists to improve how students learn by making learning active, observable, and improvable. We believe students learn best when they engage directly—writing code, solving problems, answering questions, making mistakes, and receiving immediate feedback. Passive reading is not enough. Runestone is built to support that cycle at scale.

Active Learning First

Runestone is designed around interaction, feedback, and engagement. Every feature must support students doing—not just consuming.

Students Are the Primary Beneficiary

Instructors adopt Runestone and institutions support it, but students are who we build for. When priorities conflict, we ask: does this help students learn?

Open by Default

Runestone is free and open source. Anyone can run it, modify it, and extend it. Our hosted platform, Runestone Academy, exists to make adoption easy for instructors who cannot or do not want to run their own server.

Student Privacy is Non-Negotiable

We collect only the data necessary to support learning. Personally identifiable student data is never sold, shared, or used for purposes unrelated to education.

Accessibility is a Requirement

All students must be able to use Runestone. Accessibility is not an enhancement—it is a baseline requirement. If something is not accessible, it is not finished.

Data Serves Learning

Runestone collects fine-grained interaction data to improve learning outcomes. We are not in the business of surveillance. Every piece of data we collect must have a clear pedagogical purpose.

Insight Over Data

Raw data is not the goal. Runestone provides instructors with actionable insights—tools that help them understand student progress and intervene effectively.

Interoperability Over Lock-In

Runestone integrates with other systems using open standards whenever possible. We avoid proprietary approaches that trap users or create unnecessary complexity.

Pedagogy Drives Technology

New capabilities should have a clear rationale in learning science. Runestone is a platform for pedagogical research, and that research tradition should inform what we build and why. New features must be justified by their impact on teaching and learning, not by technical novelty.

Empower Instructors

Runestone amplifies the effectiveness of instructors. It does not attempt to replace them, automate them away, or reduce teaching to a dashboard.

Simplicity Enables Sustainability

Every feature carries a long-term cost. We favor simple, maintainable solutions and resist unnecessary complexity—even when it is tempting.

Focus is a Feature

We deliberately choose what not to build. Protecting the core mission matters more than expanding scope.

Built for Research

Runestone supports pedagogical research through transparency, reproducibility, and ethically collected data.

Community Over Institution

Runestone’s long-term sustainability depends on a broad community of contributors, adopters, and advocates — not on any single maintainer, organization, or funder. We make decisions that strengthen collective ownership.


What Runestone Is Not

Not a Learning Management System

Runestone complements LMS platforms; it does not attempt to replace them.

Not a Content Authoring System

Content is authored using external tools such as PreTeXt. Runestone focuses on delivery, interaction, and insight.

Not a High-Stakes Assessment Platform

Runestone is built for learning, practice, and formative assessment—not secure, high-stakes exams.

Not a Data Brokerage

Runestone does not monetize student data—period.

A Farewell to RST

The end of the semester is approaching, and with it comes the beginning of Summer development time!

In a few days I will release Runestone 7.13.6, this marks the last release of Runestone that will support RST as an authoring language. That is probably not true, the 7.13 line will continue for key bug fixes, but it will be the last release that will include new features for RST.

What does this mean for Runestone? Well, just over six years ago we formed a partnership with the PreTeXt project to use their XML-based authoring language as the basis for Runestone. We have been very happy with that decision, and it has allowed us to add a lot of features to Runestone where I can focus on the interactive features and not worry about the authoring language. PreTeXt is a very powerful author language, and it is being used by a growing number of projects. It has a great focus on accessibility and is designed to be easily converted to a variety of output formats. When two open source projects can work together to create a better product, that is a win for everyone.

If you are an author and have not converted your book to PreTeXt, I encourage you to do so. The conversion process is not difficult, and there are a number of resources available to help you. The PreTeXt project has a number of people willing to help with the conversion process, and there are a number of tools availble to help with the conversion, not to mention LLM-based tools like Copilot Claude Code and ChatGPT. If you have questions about the conversion process, please reach out to me or the PreTeXt community for help.

We will continue to develop and support the interactive elements of Runestone like activecode, parsons problems, and the various interactive widgets that we have developed over the years. Future updates to the componenents will be released in the 8.x line, although I don’t see a reason to push them to pypi, the runestone build command will not build anything in the 8.x line.

If you absolutely must have a new feature in RST, you are welcome to add it to the legacy_support branch of the Runestone repository, but I will only support critical bug fixes on that branch, so if you want a feature merged you will need to provide the ongoing support for it.

I’ll have more to say about our summer development goals in the next few weeks, but I wanted to get this news out as soon as possible so that authors have plenty of time to make the transition to PreTeXt, current users of RST will not be surprised by this transition. Nobody should be surprised as I’ve been talking about it for years.

Easy Install

I know that running your own server is not for everyone, but we want to make it was easy as possible for Runestone to support the students who need us. But sometimes Government regulations or institutional policies make it difficult to use a third party hosting service. For those of you who want to run your own server, we have created an easy install script that will set up a Runestone server on your machine. This script will install all the necessary dependencies and configure the server for you.

To use the easy install script, copy and paste the following command into your terminal:

bash <(curl -fsSL https://raw.githubusercontent.com/RunestoneInteractive/rs/main/init_runestone.sh)

This will download and run the easy install script. The script will ask you a few questions about your setup, It will then install all the necessary dependencies and configure the server for you. You will need to have Docker installed on your machine for this to work. If you do not have Docker installed, there are some great tutorials online that can help you get started such as Docker for Beginners.

Why Run your own Server?

There are a few reasons why you might want to run your own server:

  • You may have legal or institutional requirements that we as a small non-profit, open-source organization cannot meet. We are committed to the National Data Privacy Agreement But we understand that some institutions may have additional requirements that we cannot meet. If this is the case, running your own server may be the best option for you.

  • You want to have more control over your data and how it is stored.

  • You want to be able to customize the server to fit your specific needs.

  • You want to be able to run the server on your own hardware.

  • You want to be able to run the server in an environment that does not allow third party hosting services.

All of these are valid reasons, and we understand that running your own server is not for everyone. We are here to support you regardless of how you choose to use our software. If you have any questions about running your own server, please feel free to reach out to us on our public forums or GitHub. We are happy to help you get set up and answer any questions you may have. We also welcome contributions to the easy install script, if you have any improvements or suggestions please let us know!

I would also like to acknowledge Tyler Conzet for his work on the easy install script. Tyler was a former student of mine and has been a great contributor to the Runestone project. He has done a lot of work on the easy install script and has made it much easier for people to run their own servers. Thank you Tyler!

Keeping up to date

If you choose to run your own server, it is important to keep it up to date. We are constantly making improvements and adding new features to the software, and it is important to keep your server up to date in order to take advantage of these improvements. We recommend that you check for updates regularly and apply them as soon as possible. You can check for updates by running the following command in your terminal:

cd /wherever/you/installed/runestone
docker compose pull
docker compose stop && docker compose up -d

Occasionally it may be necessary to run a database migration when we make changes to the database schema. If this is the case, we will provide instructions on how to run the migration. We will also provide instructions on how to roll back the migration if something goes wrong. We recommend that you back up your database before applying any updates, just in case something goes wrong. Most updates should be seamless, but occasionally we add more data to the database in the form of new columns or new tables. These migrations will not result in the loss of any data, but it is always a good idea to have a backup just in case something goes wrong.

Feedback

As this is a new feature, we would love to hear your feedback on the easy install script. If you have any suggestions for improvements or if you encounter any issues, please let us know on our public forums or GitHub. Your feedback is invaluable to us and helps us improve the software for everyone. We are committed to making the easy install script as user-friendly and reliable as possible, and we appreciate any feedback you can provide.

Join our Community

As always, our mission is to provide free and open educational resources to everyone! We are committed to supporting our students and instructors regardless of how they choose to use our software. If you have any questions or need help with anything, please don’t hesitate to reach out to us on our public forums or hang out with us on zoom! Our weekly zoom schedule is available here. And you can always drop in on our zoom during one of the scheduled times here. We are always happy to help and we welcome your feedback and suggestions and just being a part of our community. It is amazing what can happen when people come together face to face and share their ideas and experiences. We are grateful for everyone who has contributed to the project and we look forward to continuing to work together to make education more accessible and engaging for everyone. Thank you for being a part of our community!

Brad

Mid-term Updates

It has been a relatively calm Fall 2025 semester! Thanks to everyone for your patience and issue reports. I had a wonderful September exploring six of our amazing national parks! I am back to work and have been able to address a number of issues and feature requests. Here are some highlights:

  • New course creation page

  • Grading Updates – Se note on timezones below

  • LTI 1.3 bug fixes

  • Improved user interface for creating assignments

  • Bug fixes and performance improvements

  • We are making good progress toward removing the legacy instructor interface and hope to have this completed in summer 2026.

  • Improvements to student accommodations

One specific change that I would like to highlight is:

  • We will now accept late submissions for assignments as long as you have the accept late submissions option enabled. Whether you have checked the released grades option or not. This was a highly requested feature and I am glad to be able to deliver it.

  • To support this change we have added a new attribute for every course, which is the home timezone for the course. You should go to the course settings page and set this to your local timezone. This will ensure that all assignment due dates are interpreted correctly. If you do not set this, it will default to UTC which may cause confusion. This also prevents students from changing their timezone to get around due dates. If you have any questions about this, please let me know.

I am also considering adding an accommodation that would allow instructors to email students a link to an assignment that is not yet visible. This would allow students with accommodations to access assignments early or late. Please let me know if this would be useful. This is different than the current “visible” option in that the assignment would not be visible to students unless they had the link.

This is a community effort, and I am grateful for everyone’s contributions. Thank you! For those of you who are new, welcome to the community! Please remember that this is a volunteer effort, we don’t have full time staff of support people to answer your questions. qn Please be patient and respectful of others’ time and efforts, please use our public forums to ask questions or discuss problems. If you find that something is not working, please take some time to investigate and report the issue on GitHub. The more information you can provide, the better! Do not presume that because you are having a problem, that everyone else is. Please help us help you! You may use the software differently from others. We welcome constructive feedback and suggestions.

For those of you that use our accommodations feature I would love to hear your feedback. I am considering adding the option to allow students to access an assignment if they have a direct link to a non-visible assignment and have an accommodation that allows them to do so. Please let me know if this would be useful.

GenAI in CS Consortium

GenAI Consortium Logo

Exciting news! Runestone Academy received funding from the GenAI in CS Consortium to support educators in strategically integrating genAI into their teaching methods and curricula. The consortium is a destination for academics seeking example courses and overall guidance. Check it out at TeachCSwithAI.org

Our first project will be to integrate Runestone books with Learning Clues to provide secure 24x7 tutoring for your students. Students will be able to ask questions, and have a conversation with AI with all of the responses grounded in the content provided on Runestone Academy.

Fall 2025 Transitions

Welcome back! Registrations have begun to soar for the Fall 2025 semester, and we are excited to see many new faces joining our community. As we prepare for the upcoming semester, here are some important updates and transitions to keep in mind. We realize that transitions like this can be challenging and confusing, we appreciate your patience and understanding as we work through these changes.

New Instructor Dashboard

You will notice a revamped instructor dashboard. It has a new look, and uses a modern web framework on the backend. Please let us know if you encounter any issues as the backend code is new. Please check existing issues before you make a new one. This new dashboard should replicate the old functionality, but we may have missed some edge cases in our rewrite. The old dashboard will remain available, probably for the entire 2024/2025 year, but I won’t be fixing any bugs or doing any enhancements to the old interface. Think of it as a faithful backup in case something critical goes wrong with the new dashboard.

New Assignment Builder

The story for the new assignment builder is similar. It has been completely rewritten using a modern web framework on the backend. Notably, the database for the two builders is identical and shared. You can see the assignments in both. Really Important The old assignment builder used the authoring language restructuredText plus our extensions for you to write questions. The new assignment builder uses a different approach, rather than saving the RST for you to edit, the new assignment builder saves the questions in a JSON format. I have tried to write a converter and have converted old activecode, shortanswer, and multiple choice questions to the new json format so you can edit those old question in the new assignment builder. That was a one time conversion. If you write new questions in the old assignment builder you will not be able to edit them in the new assignment builder. Please use the new assignment builder - we think it is much more user friendly and easier to use. The old questions had a myriad of options :option: in the RST. Many of them were experimental, or implemented for a particular project and many of them are not that useful. So far we have only added the most used options to the new assignment builder. If you find that you need an option that is not available, please let us know.

As with the instructor dashboard, please report any issues you encounter. The old assignment builder will also remain available for the 2024/2025 year, but it will not be receiving any enhancements or bug fixes.

LTI 1.3 Support

Many schools have told us they are moving to LTI 1.3 for their LMS integration and will no longer support LTI 1.1. We have added support for LTI 1.3 in addition to the existing LTI 1.1 support. LTI 1.1 support is only available through the old instructor dashboard, and I won’t be moving any support to the new dashboard since most schools will no longer support 1.1.

Unfortunately LTI 1.3 will need to be configured by your LMS administrator. We have been testing it out in production with Canvas, Moodle, and D2L. If you want to use LTI 1.3 you will need to create an issue on github <https://github.com/RunestoneInteractive/rs/issues/new/choose>`_ to have us enable your domain. As you will read on the issue template, if your school is going to require us to fill out forms and provide things like HECVATs and VPATs and then LTI 1.3 support is a paid feature. As an open source project we do not have the resources to fill out forms for every school that wants to use our software. If you are a small school or a school in a developing country please let us know and we will work with you to get LTI 1.3 enabled.

On the positive side, if you are using 1.3 and you have pre-released your assignment (on the grading page), then grades will be automatically sent back to your LMS. This is a big improvement over LTI 1.1 where you had to remember to push the grades back.

More to Come

We are continuously working on improving the platform. There are only a few more things to migrate away from our old web framework. These include:

  • Grading

  • Peer Instruction

  • Practice

As we migrate each of these components we will keep the old in place so they can be used in parallel. I hope that all of the above can be completed by the end of the school year so that we have a fully modernized code base for fall 2026. As with any system that has been around for a long time, there are lots of features that have been added over the years. We will be evaluating each feature to see if it is still useful and if it is worth migrating to the new framework. We have a lot of usage data to help us make these decisions, but if you find that a feature you use has not been migrated, please let us know.

Brad Miller
Professor Emeritus, Luther College
Founder, President, Chief Developer, Runestone Academy

Docker Images for Macs and Linux

One of my hoped for quality of life improvements for the Runestone platform is to make it easier for everyone to run a Runestone server own their own computer. This is especially important for authors who want to test their books locally before pushing them to the Runestone server. We made great progress on this front a couple years ago when I created a container registry on github to hold our docker images for all of our servers. The problem was that the images were built for x86_64 architecture, and so they would not run on ARM based machines like the new Apple Silicon Macs. I didn’t know how to build multi-architecture docker images, and I didn’t have the time to learn how to do it.

Like many things in life, solving the problem is not that hard if you take the time to learn how to do it. I finally carved some time out of my routine of fixing bugs and adding features to learn how to build multi-architecture docker images. I am pleased to announce that we now have images for the Runestone servers that will run on both x86_64 and ARM architectures. This means that you can now run a Runestone server on your Mac or Linux machine without having to build the images yourself! These images are the same images we use in production, so you can be sure that they are stable and reliable.

Attention

Details on how to get configured and running are here: Runestone Server Setup. In my experience the vast majority of the problems that people have when trying to run a Runestone server on their own machine are related to the configuration of the server. The sample env file should work for most people, but you may need to tweak it a bit to get it to work on your machine. If you run into problems, please feel free to create an issue on our GitHub repository, and we will do our best to help you get it working.

The next step would be to create a script that will automatically get the server up and running with minimal user intervention. If anyone is interested in helping with that, please let me know. I would be happy to work with you to get it set up.

Mid-July Update

Today is July 19, 2025, and we are excited to share the latest updates with you. We have been hard at work on several projects, and we are pleased to announce that we have made significant progress on the following:

LTI 1.3: We are continuing to roll out LTI 1.3 support across more Learning Management Systems (LMS). This integration will enhance the usability of Runestone in various educational environments, making it easier for instructors to incorporate our resources into their courses. We are happy to report that we have successfully tested it with Desire2Learn, Moodle, and Canvas. If you want to get LTI 1.3 set up for your course please create an issue on our GitHub repository, and we will assist you in the setup process. Note there is a special category for LTI Support issues. Please refer to the LTI documentation in The Instructor Guide for more information. If you have questions please ask them on the #lti_community_support channel in the Runestone discord.

New Assignment Builder: The new assignment builder has been well received, and we are continuing to refine it based on user feedback. We have added several new features, and fixed many bugs. The assignment builder now supports a wider range of question types, including fill-in-the-blank and matching questions. We encourage all instructors to try it out and share their experiences with us.

Quality of Life Improvements: We have made several quality of life improvements to the platform, including: - Improved Course Selection Page - Improved Instructor Dashboard - Better support for MathJax and LaTeX rendering in several areas - Support for attaching pdfs, and image files to short answer questions - many more small improvements to the user interface

Internals : We have made significant internal improvements to our platform, including updates our logging system, optimizing our database queries, and improving the overall performance of the site. These changes will help us provide a more reliable and efficient system.

The internal updates also make it easier for anyone to contribute to Runestone. If you are interested in helping out with a feature or a bug fix I would welcome your help! The documentation is available at Runestone Development Docs. If you have any questions or need assistance, please feel free to reach out to us. We have especially simplified the process by creating database API’s to do most everything you need to do with the database. No need to know or use SQL.

Book Updates

As we continue the transition to writing books in PreTeXt there are several books that are no longer being updated in their original format. In particular the following books have been replaced by new versions:

  • How to Think Like a Computer Scientist (thinkcspy) switch to httlacs

  • CSAwesome now has a new edition and a new look, You should switch to csawesome2 which follows the latest college board standards for APCSA.

  • Problem Solving with Algorithms and Data Structures using Python pythonds has been replaced by pswadsup.

  • Problem Solving with Algorithms and Data Structures using C++ cppds has been replaced by cppds2.

  • C++ for Python Programmers cpp4python has been replaced by cpp4py-v2.

  • Java for Python Programmers java4python has been replaced by java4py2.

  • How to Think Like a Computer Scientist C++ edition (thinkcpp) has been replaced by thinkcpp2.

We’ll mark these and other books as deprecated in the library in the next few weeks to make it easier to find the latest version.

Retiring restructuredText

This is a good time to remind everyone that the markup extensions to restructuredText will no longer be developed. In fact there are quite a few features that are supported in PreTeXt that are not supported in restructuredText. If you are writing a new book, or updating an existing book, we encourage you to use PreTeXt. Beginning with the 8.0 release of the runestone components, we will not include the python code for the markup. Beginning with that release we will just provide the javascript for the interactive components. We look forward to continuing to develop new and innovative interactive components that support student learning with Markdown in PreTeXt.

Mid-June Update

Today is June 14, 2025, and we are excited to share the latest updates with you. We have been hard at work on several projects, and we are pleased to announce that we have made significant progress on the following:

  • LTI 1.3: We launched LTI 1.3 today. This will allow Runestone to be integrated into many more LMSs and will make it easier for instructors to use our platform in their courses. For now you will need to contact us in order to use this feature, but we will be rolling it out to all users over the course of the summer.

  • New Instructor Dashboard: We have been working on a new instructor dashboard that will provide a more streamlined and user-friendly experience for instructors. This includes improved navigation, and better organization. It also provides us with a base to continue porting and updating code that has been with us for more than a decade, and badly needs a refresh. This will become the default destination for instructors from the user menu, as we update books. In the meantime the url is /admin/instructor/menu

New Instructor Dashboard
  • Peer Instruction Interface: We have made significant improvements to the peer instruction interface.

  • Accessibility Improvements: We have been working steadily on improving the accessibility of our platform. This includes making sure that all of our interactive elements are keyboard accessible, and that they work well with screen readers.

  • Assignment Builder: We have been working on a new assignment builder that will allow instructors to create assignments more easily. This includes the ability to add multiple choice questions, short answer questions, and more. This is now the default from from the new instructor dashboard. We know there are still some rough edges, but please give it a try and let us know what you think.

  • Internal Improvements: We have been working on a number of internal improvements to our platform, including updating our dependencies, improving our logging, and optimizing our code for better performance.

All of these updates are part of our ongoing effort to improve Runestone Academy and provide a better experience for instructors and students. We appreciate your support and feedback as we continue to work on these projects. You can help us by trying out the new features and letting us know what you think. Reporting bugs and issues is extremely helpful, and we appreciate your patience as we work to resolve them.