Skip to content

Refactoring roadmap

Ilya V. Schurov edited this page May 24, 2017 · 3 revisions

I'm going to do some refactoring / splitting of the project in order to make an online service like nbviewer on top of it.

The following changes are planned so far:

  • Provide more clear separation between different parts of the project: indent-based markup metalanguage (currently known as MLQQ, probably will be renamed to indentml), LaTeX-style language based on this metalanguage aimed on writing mathematical textbooks (qqDoc, probably renamed to qqmath*), a system that can handle books in qqDoc/qqMath and create sites from them (multiple chapters, cross-references and so on — what currently qqhtmlpreview do, to be named qqmathbook) and possibly other parts.
  • The features of qqDoc are classified as safe or unsafe. Safe features are those that can be safely done server-side, like LaTeX-style processing: no arbitratry code execution involved here and no dangerous content produced (like arbitrary javascript), so the result can be hosted on third-party server. Examples of unsafe features are \pythonfigure, \plotly (due to arbitrary python code execution) or \rawhtml (due to possible XSS).

qqdoc features

Feature Examples Safety level
Markdown-level markup headings `\h?`, `\paragraph`, `\enumerate`, `\itemize`, `\em`. Proposed: `\href` safe
LaTeX-level markup `\eq`, `\equation`, `\align`, `\ref`, `\eqref`, enumeratable environments (like *Theorem 2*), `\proof`, `\figure` safe
Dynamically generated figures `\pythonfigure', `\plotly` server-unsafe: arbitrary Python code execution.
Interactive features snippets, quizzes safe
Workaround features \rawhtml client-unsafe: XSS (unless javascript is sanitized)
Clone this wiki locally