Warning: The code or configuration described here poses a major security risk.
Site administrators: You are advised against using it until this security issue is resolved.
Problem: This extension is open to XSS attacks. It also (by design) allows authorized users to run code on your server, this can cause user accounts to be hijacked, among other things.
Solution: It should be enabled only on wikis that cannot be edited by the public. For more information see http://lalashan.mcmaster.ca/theobio/projects/index.php/WorkingWiki/Security.
Release status: stable
|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)|
|License||GNU General Public License 2.0|
source-file, project-file, project-description, syntaxhighlight_mk
|Translate the WorkingWiki extension if it is available at translatewiki.net|
|Check usage and version matrix.|
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
.texfiles 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
.bibfiles, 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-filetag. 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
.zipfile, and then use the "Import project" link in the sidebar to upload, unpack and install the files.
- Source files can be uploaded into
source-filetags, or to File: pages.
- Pack your working directory into a
- 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
.texsource 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
- The general way to do computations is by inserting a
project-filetag in a page. For example:
- 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.
WorkingWiki's code is housed at sourceforge.net, and is available for downloading as a
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.
There are many configuration variables to control the behavior of WorkingWiki. See
ProjectEngine/ProjectEngine.php for commented code explaining each of them.
- Junling Ma's Projects plugin, a dokuwiki extension modeled after WorkingWiki.