Change Management and Curation Processes in MathHub
MathHub Build Processes/Workflows
As MathHub content is authored in human-oriented surface formats, but processed in OMDoc/MMT, MathHub needs to support the conversion and change/conflict propagation processes between the formats.
The MathHub build system manages conversion processes triggered in a MathHub worker. There are essentially two reasons to trigger a re-build, which correspond to the two development workflows supported by MathHub.
- Content development: one or more surface format file changes (e.g. because it is saved by a user or updated in a working copy).
- Compiler development: one or more of the converters have been changed (e.g. for bug fixing or new functionality).
In both situations the build system determines the files affected (those that depend in some way on the source file for 1. or all that have previously been generated by the updated converter and their dependents for 2.), identifies the respective converter pipelines, triggers them, parses the generated log files, aggregates the error and warning messages, and presents them to the user.
Managed Content
Recall that MathHub archives contain a source
dimension, a subdir with files in the surface formats and various others derived from that (generated content). The sole purpose of the build system is to derive and update the generated content from the sources. There are multiple ways of doing that. MathHub adopts a potentially distributed build architecture that uses the MathHub archives as the hub and GIT as the distribution mechanism.
In a nutshell, generated content is pushed to the MathHub archives (without keeping history), and can be pulled by anyone - including the MathHub system itself: the MathHub.info portal always displays the current status of the MathHub archives.
The MathHub Curation System
Given the managed content system, MathHub Curators will pull the MathHub archives they are responsible for, build generated content, e.g. via the MMT build system and push it to the archive.
The MathHub Build System (outdated)
The build system described here no longer exists. But the concepts/architecture are still valid and we want to re-instate the functionality eventually.
The MathHub build system automates the curation system described above into a separated process. It is essentially a front-end to the MMT build system, which does all the dependency managment, maintains a build queue, and a (developer-oriented) error viewer. MathHub itself only adds
- a build manager that exposes the build targets, build strategy, and affected libraries to the MathHub admin and
- an library-admin centric error viewer.