There are two types of track tooling:
- Production: provide a key function to the learning experience of that language
- Maintenance: help with track maintenance
Tooling is (generally) written in the language of the specific track, and is built and maintained by maintainers.
These tools run on Exercism's production servers.
There are three pieces of track-specific production tooling:
- Test Runners (essential)
- Representers (optional)
- Analyzers (optional)
There are two pieces of general production tooling that can be configured for your track:
- Lines of Code Counter (optional)
- Snippet Extractor (optional)
Production tools are built as Docker images. They are auto-deployed to Exercism's production servers using CI workflows.
Maintenance tooling is designed to help with maintaining the track. They usually run locally (on the maintainer/contributor's machine) and sometimes in CI, but never in production.
Here are some examples of maintenance tooling:
Track tooling is usually (mostly) written in the track's language.
While you're free to use other languages, each additional language will make it harder to maintain or contribute to the track.
Therefore, we recommend using the track's language where possible, because it makes maintaining or contributing easier.