MathML is the web standard for markup about mathematical content. Just as HTML’s
<table> element provides a standard for expressing and working with text containing tabular relationships, the
<math> element does this for text containing mathematical expressions.
Rendering, styling, and managing the display of either of these textual elements is natively handled by the browser implementation, efficiently and seamlessly, allowing authors to create markup which will produce the appearance and layout they expect without the need to know the many complex things necessary to achieve the same result without these standards.
Because MathML is a standard, it lends itself to machine processing. Tools exist to create, share, understand, and transform content between MathML and other popular formats like LaTeX and ASCII Math.
You can read more about why we think a native implementation is important.
There are many tools which make it possible to create, edit, convert, process, and present MathML content. They include, but are not limited to, the following:
Handwriting and OCR related:
Efforts like arXMLiv also study the use of Math on the web and its tooling.
All Gecko-based browsers like Firefox, and all Webkit-based browsers like Safari and Epiphany, render MathML natively. In addition, MathML also has a vibrant ecosystem of tools that help create and consume it in interesting ways.
At the present time, Chromium-based browsers (such as Chrome and Edge) do not support MathML rendering. Igalia is actively working on the development of this support. Successful completion of this work means landing support in all remaining browsers and browser-based renderers.
Because the development of MathML support requires code reviews and related discussions before it can be integrated, it is impossible to provide a concrete date at this time. We have, however, set what we believe is a very achievable and safe target goal: to get MathML support fully upstreamed and shipping in Chrome by August 2020.
We are hopeful that our MathML support can be completed much sooner based on the progress we’ve made thus far. We are nearing completion of our initial implementation, we have reviewed our current status and upstreaming plans with some Google engineers, and we plan to send an intent to implement and begin the upstreaming work by October 2019.
Once support for MathML Core is working as we expect, we will to continue to test, answer questions, and make the refinements necessary for inclusion into Chrome.
With an implementation, all of the tools and integrations fit together nicely and allow the creation, sharing, and consumption of mathematical text.
However, lacking a single browser implementation for rendering leaves a large number of difficult problems and complexity. The fact that the one browser which fails to support MathML happens to be Chromium (Chrome alone has the most market share) further complicates things.
As an end user, you might need to switch browsers whenever you wanted to view a document containing mathemtical text. As an organization producing documents with mathematical content, or working with mathemtical content, you would be forced to understand and make a selection from a potentially complex series of tradeoffs. Whichever specific tradeoffs you choose, there are costs. The closer you try to approximate what native solutions provide, the higher the costs. Each of those choices guarantees that you will spend more time troubleshooting and will encounter interoperability, performance, and maintenance problems.
There are many ways that you can help, and we appreciate all contributions.
Testing is always helpful, and open to a broader number of people. Our binaries for Linux are built regularly and are publicly available. They’ll install alongside your existing Chromium browsers; not replace them. Download them, try them out, and report any bugs you find.
If you are familiar with Web Platform Tests, you can also contribute to Web Platform Tests for MathML. The current spec is annotated with indicators marking what is and is not tested and how well things are doing in the implementation report where Chrome is our fork.
The easiest way that you can help is by funding our work. Developing and maintaining a feature such as this is a lot of work. The more that work is funded, the more time our developers can dedicate to completing it and maintaining it going forward. We believe that stakeholders are in the best position to support work such as this, which is extremely important to them, but not necessarily to web users in general. Browser vendors have to prioritize what the majority of their users require, but in our experience they welcome contributions from the community. Making such contributions is one of the things that Igalia does. A lot of popular features (CSS Grid, for example) have been implemented by us.
Initial costs involve at least one year of funding for one full-time equivalent developer. Then, depending on the feedback received and the work needed to incorporate the changes into Chrome, one additional year may be required. Once MathML support has been incorporated into Chrome, we will be expected to help with bug fixing and general maintenance of this feature.
We anticipate needing $500k for the initial implementation and integration work (2019-2020), and a smaller yearly amount afterwards to maintain and enhance the code. The exact amount for the following years will depend on the results of the first two, and the goals that we are able to set collectively for the future of the project.
So far Igalia has secured around $180k for 2019. We are currently working on completing the required funding for 2019 and hoping to be able to get a similar amount again for 2020.