A quick stroll around our code repositories

A lot has happened at MathJax this year. As the end of the year is closing in, we wanted to take a quick stroll around our repositories on GitHub to highlight a few new and old parts, give you an idea where things are moving, and, if you are interested, show you some points of entry for contributions.

Of course, the starting point for all things MathJax is our core MathJax repository where you will find the code of MathJax, including all supported fonts as well as all core extensions. The core repository also contains our development wiki, including our roadmaps. If you want to contribute to core MathJax, please check out our tracker for open issues, our Contributing.md, and the wiki pages.

If you want to dive deeper into MathJax development, then you might want to stop by MathJax-test and MathJax-dev. As you might expect, MathJax-test stores our Selenium-based test-suite with ~1500 tests. On the other hand, MathJax-dev hosts our development tools, including our setup for packing MathJax, our tools for handling fonts and some other miscalleneous tools. There’s lots of opportunity for contributing here, too. If you’re into testing, the suite could always use some help to get improve (or replace) and if you’re a Grunt/Gulp person, we’ve been thinking about re-implementing our build tools and would welcome your ideas – either way, just open an issue to get going.

If hacking MathJax directly seems a bit daunting, you could skip ahead to MathJax-third-party-extensions or MathJax-examples. We started MathJax-third-party-extensions to collect extensions that don’t quite fit in the core right now. It’s easy to write an extension or improve an existing one. Of course, MathJax-examples does what it says on the label – providing self-contained examples of working with MathJax (and of course there can never be enough examples).

We’re also quite proud to host the repository for AsciiMathML and its new website thanks to Peter Jipsen and David Lippman. If you’re interested in this particular gem for putting math on the web, please stop by, ask questions, and, of course, contribute.

If you are less into code, then MathJax-docs and MathJax-i18n might still provide nice spot to pause our stroll. MathJax-docs contains the source for our documentation. All pages of our docs contain a link at the bottom to immediately head over to GitHub. So if you ever spot something that needs improving, you can get right on it. MathJax-i18n stores the translation data for our UI, provided by the awesome community over on TranslateWiki.net. We’d be thrilled if you stopped by and contributed your translation on TranslateWiki.net.

Then there are two repositories mostly in hibernation right now, ctop and MathJax-profiler. The work in ctop served to re-implement MathJax ContentMathML support and MathJax-Profiler provides a script for timing all MathJax components individually.

Last but very much not least, our newest repositories are MathJax-node and speech-rule-engine which we could create this year thanks to support from Benetech. MathJax-node stores our implementation of a NodeJS API so that you can use MathJax server-side for preprocessing, image rendering, quality control etc. Closely connected is speech-rule-engine based on Google ChromeVox which MathJax-node can leverage to generate and embed speech-strings for accessibilty purposes. This has been important work for us and we’re thrilled to work more on accessibility features in 2015.

We hope you enjoy our little stroll and perhaps stop by one of our repos to provide feedback or contribute.