Package: wnpp
Severity: wishlist

* Package name    : codebraid
  Version         : 0.4.0
  Upstream Author : Geoffrey Poore <gpo...@gmail.com>
* URL             : https://github.com/gpoore/codebraid
* License         : BSD 3-clause
  Programming Lang: Python
  Description     : A pandoc wrapper enabling code execution in Markdown
documents.

Codebraid does for Markdown documents what pythontex does for LaTeX documents,
namely retrieving source code snippets in a Markdown document, running them in
the relevant interpreter and inserting the results (code, text and/or graphics)
in the compiled document, then processed by pandoc.

This functionality allows for the creation of consistent documents collecting
text, data, models, analysis code and results and discussion, thus achieving
some of the goals of Reproducible Research (see
https://en.wikipedia.org/wiki/Reproducibility#Reproducible_research).

This tool also allows for code fragments re-use, thus allowing to decouple the
explanatory text logic from the programming order, thus fullfilling some goals
of literate programming (https://en.wikipedia.org/wiki/Literate_programming).

These methodologies are important tools in the production of verifiable (e. g.
scientific) documents, and may be important in the production of well-
documented computer programs.

Analogous tools already exist: Among those dedicated to the production of
scientific documents, I have used the following:

  * D. Knuth's Web/CWeb system is the tool used to build TeX and Metafont,
supporting
    Pascal and C code respectively, the text being LaTeX.

  * The R packages sweave and knitr , the latter supporting R, Python and Julia
code
    and partially supporting a dozen other languages (no continuity between
code
    snippets) ; the text is LaTeX.

  * SageTeX post-processes a LaTeX document containing Sagemath snippets (which
can
    call about a dozen different tools and languages) and insert the results in
the
   document, which can be re-processed.

  * Pythontex does the same for LaTeX documents, supporting a half-dozen source
code
    languages. Among them, Sagemath (which was my original reason to search for
an
    alternative to knitr/SageTeX).

  * knitr can also be used with Markdown text.

  * The Babel system of emacs' org-mode supports about 70 source code
languages, using
    a sui generis markup language.

I am also aware of the existence of various systems, each, to the best of my
knowledge, dedicated to a specific task:

  * The Sphinx ecosystem, dedicated to the documentation of Python source code.

  * Pweave (ditto).

Why package codebraid ?

  * Markdown support. Important for two reasons:

    - Whereas LaTeX is ideal for the production of documents  ultimately aimed
at
      printing, it is ill-adapted to producing, for example, HTML or epub
documents.
      Parts of its cross-reference system, such as indexing, being page number
based,
      makes no sens for, say, a presentation or an ebook.

    - Latex is much more heavy than Markdown, and, therefore, nowadays, much
less
      popular. It also needs more work: While I have practisdd LaTeX since
1987,
      I am still forced to use the disorganised, disparate and enormous
documentation
      of its zillions packages...

  * (Supposedly) easy addition of support for new source-code languages. (Note:
it
    *seems* easy, but I am yet to do it in practice...). In comparison, adding
a new
    language to knitr is heavy...

  * Independence of any editor (this one is aimed at org-mode : emacs isn't
    everyone's tool...).

  * Programming language: not everybody is expert in R or in emacs-lisp... No
need to
    maintain an R installation (you have to maintain a Python installation, but
this is
    a basic Debian requirement...).

The cherry on my cake: in its current development version (0.5.0), codebraid
supports Sagemath (http://www.sagemath.org/).

TL;DR: notwithstanding Markdown's limitations (e. g. the lack of an universal
cross-reference system, inconsistencies in table handling, etc...), the
packaging of codebraid would offer to Debian users an important tool for the
creation of consistent documents via Markdown, without involving LaTeX heavy-
handedness.

Note: not being an Ordained Debian Developer (C)(R)(TM), I can't package it
myself. Thus this RFP.

Reply via email to