MediaWiki extensions manual
OOjs UI icon alert-invert.svg
Release status: unstable
Implementation Tag , Special page , Hook , Extended syntax
Description Environment for developing and running code and LaTeX documents within MediaWiki
Author(s) Lee Worden (Wondertalk)
Latest version 1.0-1233 (2016-07-12)
MediaWiki 1.23+
PHP 5+
License GNU General Public License 2.0
source-file, project-file, project-description, syntaxhighlight_mk

The WorkingWiki extension creates a powerful environment for collaborating on publication-quality manuscripts and software projects.

It allows you to store "source files" in your wiki and develop, test, run and publish them easily. Examples include a project of five LaTeX files and six EPS images that compile together into a single PDF file, or an R script that includes two other R source files and produces a CSV data file and several EPS figures. The WorkingWiki extension keeps track of when the source files have changed and when to redo the processing to update the output, and how to display the various file formats involved. The output files and images can be displayed in wiki pages along with the source code, and can be used as inputs to further computations.

  • Example: collaborating on a LaTeX document
It's very common for a group of scientific authors to write a paper by emailing each other copies of .tex files daily or hourly. This is inconvenient — in order to look at the paper you have to save the file into a directory and compile it — and unreliable — it's easy to get mixed up and lose someone's edits, or overwrite them with someone else's copy of the file. WorkingWiki makes these problems go away. Once the .tex files, .bib files, and images are in the wiki, it's easy for everyone to edit and see the updated results, and the wiki keeps track of all the changes and their authors, and makes it easy to review or undo them. It also provides a convenient place to discuss changes, without having to put comments into the manuscript itself.
  • Example: collaborative, reproducible lab science
A research team can use WorkingWiki to archive experimental data (using the wiki's history features to record who uploaded which data points when); develop their data-processing scripts collaboratively in the wiki; construct the scripts that produce figures and tables in the wiki; create the manuscript that presents the results in the wiki; and finally export the manuscript as a .tar.gz file ready to submit to a scientific journal. The data, source code, and manuscript can then be made available to the world as is. This process captures all the material needed to understand and reproduce the research project, with its revision history intact, and in a form that is easy to annotate and publish online. A research team developing simulation programs rather than using experimental data can use WorkingWiki in the same way.

WorkingWiki is developed principally for research groups, but is likely to have a variety of other uses as well.

WorkingWiki operates on source files that are stored in standard wiki pages. Source files are collected into projects. To display an output file, WorkingWiki does its work by invoking make to create or update the file from the source files in its project before displaying it. In this way, you can edit your code (or your data files, or .tex documents, or whatever files) by editing the wiki, and run the code and view the output (the typeset version of your paper, the latest version of your figures, the textual output of your program) just by previewing or saving the page.

For more information, see WorkingWiki's home page.


First add source files to a project in the wiki. Then to do computing work, you may need to request one or more output files.

Add source files to the wikiEdit

There are several ways to introduce source files.

  • Insert source files into wiki pages by hand, using the source-file tag. For example:
<source-file filename="example.txt">This is the content of my file.</source-file>
  • If the project's name doesn't match the page's name, specify the project name:
<source-file filename="example.txt" project="XYZ">This is the content of my file.</source-file>
  • Import an existing project into the wiki.
  • Pack your working directory into a .tar.gz or .zip file, and then use the "Import project" link in the sidebar to upload, unpack and install the files.
  • Source files can be uploaded into source-file tags, or to File: pages.
  • Import existing files into a project.
  • Create a project by typing its name into the navigation field in the projects box in the sidebar, or use the link that's provided to create a project with the name of the current page.
  • From the project's page, use the "Import files" link to import your files into the project.

Request output filesEdit

  • In some cases, you don't need to request an output file explicitly. This is the default behavior in the LaTeX case: if you place a .tex source file in a wiki page, WorkingWiki automatically uses LaTeXML to create an HTML version of the complete document and display it to you in the wiki page. It also provides a link you can follow to automatically create a .pdf file of the complete document.
  • The general way to do computations is by inserting a project-file tag in a page. For example:
<project-file filename="output.file"/>
  • WorkingWiki will use make to create this file by running programs in the project's working directory.
  • If the project's name doesn't match the page's name, specify the project, as above.

For more information, see the WorkingWiki tutorial and documentation pages.

Download instructionsEdit

WorkingWiki's code is housed at sourceforge.net, and is available for downloading as a .tar.gz package:

Download WorkingWiki from sourceforge.net

or by SVN:

svn co https://workingwiki.svn.sourceforge.net/svnroot/workingwiki/trunk workingwiki


See http://lalashan.mcmaster.ca/theobio/projects/index.php/WorkingWiki/Downloading_and_Installing_WorkingWiki for full installation instructions.

Configuration parametersEdit

There are many configuration variables to control the behavior of WorkingWiki. See WorkingWiki.php and ProjectEngine/ProjectEngine.php for commented code explaining each of them.

See alsoEdit

  • Junling Ma's Projects plugin, a dokuwiki extension modeled after WorkingWiki.