Skip to content
/ rs Public
forked from umsi/rs

A New Monorepo structure for Runestone

License

Notifications You must be signed in to change notification settings

presnick/rs

 
 

Repository files navigation

Welcome

Runestone Academy is an open source project and our mission is to equip the nation's STEM teachers with open-source content, tools and strategies they need to create engaging, accessible, and effective learning experiences for their students. You might do this through our website, https://runestone.academy or by running your own server. Or you may be an author or budding author that has a great idea for a book. Or you may be a technology coordinator that wants to run a private server. Or you may be a researcher at a large university that is looking for a platform to test your ideas. We are here for you. This repository is the home of the Runestone Academy software. We would welcome your help. And we are happy to help you get started.

Runestone MonoRepo

This repository collects together the various repositories related to the Runestone Academy software. The idea of combining several repositories into a single structure was motivated and inspired by the Python polylith tools and projects.

As Runestone has grown over the years we have accreted a loads of new functionality without ever stopping to reconsider an architecture that would support easier implementation of new features while providing stability for fundamental parts of the project that need to scale. Docker was not invented at the time Runestone development started!

The goal of this re-working of the Runestone code will provide us with a very docker friendly set of servers and services. we will use a polylith software architecture to develop and maintain this set of services. The following diagram shows what we are aiming at.

Runestone Architecture

Each of the servers in the diagram above will become a project in this repo.

  • Each project is runnable from the top level
  • Each project builds its own docker image or command line program (rsmanage and runestone)
  • The entire suite of services is orchestrated by the docker-compose.yml file

Running your own server?

If you run your own Runestone server we would love to hear from you. Please make an issue in this repo and just tell us where you are at and how many students you serve. As we seek grant funding, understanding the impact of Runestone is very important. Thanks!

Understanding the Code Structure

  • projects - define the artifacts - Docker images or applications could be a web application or a command line application or whatever.
  • bases - contains the public facing API for a project
  • components - contains code that supports one or more projects/bases
  • development - experimental and early work.

A Roadmap

Runestone Roadmap

Docs

See Our Read the Docs page for more complete documentation. The developing section is especially useful if you are interested in contributing to the project.

This setup uses poetry and two important plugins, the multi-project plugin and the polylith plugin.

The official Polylith documentation: high-level documentation

A Python implementation of the Polylith tool: python-polylith

Documentation for building and running each of the projects is in the respective project directory. However much of what you will want to do can be accomplished with the build.py script in the root of the repository.

poetry run ./build.py --help
Checking your environment
Usage: build.py [--verbose] [--help] [--all] [--push]
      --all build all containers, including author and worker
      --push push all containers to docker hub
      --one <service> build just one container, e.g. --one author
      --restart restart the container(s) after building

Please make sure you keep your fork up to date with main. We are actively working on this new organization of the Runestone code, and there are likely to be lots of changes, especially throughout the summer months.

Contributing

There is so much to do on this project, and we are happy to accept contributions. Please see the Contributing Guide for more information. We are especially interested in contributions that help us to improve the documentation, and the test coverage of the code.

If you want to know where we are going, and what things are in active development or in need of immediate help please take a look at our projects page on github: Runestone Projects

We are working on building out a longterm roadmap for Runestone. You can see that here: Runestone Roadmap

Our Community

The Runestone community has been actively developing and supporting this project since 2011. However in the 2023 I decided to move to a mono repo. Unfortunately this means that the history of the individual repositories is lost. I am sorry for this, but I think the benefits of a mono repo will be worth it. The original repositories are still available, but they are no longer being actively developed, if you need to point to your contributions to Runestone, please use the old repos as a reference.

Our authoring language is PreTeXt. We have a very active community of PreTeXt authors and developers. If you are interested in contributing to the PreTeXt project, please visit the PreTeXt project page.

POSE Training Program - Spring 2023 Pilot

Awarded: May 18, 2023

VERIFY

About

A New Monorepo structure for Runestone

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 46.3%
  • C++ 28.7%
  • JavaScript 16.2%
  • HTML 5.8%
  • CSS 2.3%
  • Java 0.5%
  • Other 0.2%