<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>WorkingWiki: a MediaWiki-based platform for collaborative research</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Lee Worden McMaster University Hamilton, Ontario, Canada University of California, Berkeley Berkeley</institution>
          ,
          <addr-line>California</addr-line>
          ,
          <country country="US">United States</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>WorkingWiki is a software extension for the popular MediaWiki platform that makes a wiki into a powerful environment for collaborating on publication-quality manuscripts and software projects. Developed in Jonathan Dushoff's theoretical biology lab at McMaster University and available as free software, it allows wiki users to work together on anything that can be done by using UNIX commands to transform textual “source code” into output. Researchers can use it to collaborate on programs written in R, python, C, or any other language, and there are special features to support easy work on LATEX documents. It develops the potential of the wiki medium to serve as a combination collaborative text editor, development environment, revision control system, and publishing platform. Its potential uses are open-ended - its processing is controlled by makefiles that are straightforward to customize - and its modular design is intended to allow parts of it to be adapted to other purposes.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>The remarkable success of Wikipedia as a collaboratively constructed repository of human knowledge
is strong testimony to the power of the wiki as a medium for online collaboration. Wikis — websites
whose content can be edited by readers — have been adopted by great numbers of diverse groups around
the world hoping to compile and present their shared knowledge.</p>
      <p>
        While several somewhat high-profile academic wiki projects have been launched and later
abandoned — the quantum physics community’s Qwiki [
        <xref ref-type="bibr" rid="ref6">14</xref>
        ] for example — there have also been successful
academic wiki projects that strongly suggest that wikis can be a transformative tool for accelerating and
amplifying the power of research collaborations. In particular, the OpenWetWare wiki [4] has proven
itself to have staying power as a home for an extended research community’s projects and data, and the
Polymath project [
        <xref ref-type="bibr" rid="ref3">11</xref>
        ] provides especially powerful inspiration regarding the power of online
collaboration to accelerate the process of mathematical discovery.
      </p>
      <p>MediaWiki, the software behind Wikipedia and its sister projects, available openly as free software,
is especially powerful, full-featured, and stable, and is widely used in academic and popular sites alike.
It excels at managing information organized into pages of text, as it is on Wikipedia. As such, it is very
useful for collaborative and public documentation of a research team’s techniques and results, but not
applicable for collaboration on the daily research itself, which tends to involve writing of software tools
for data analysis and simulation, and production of manuscripts for publication, with figures, tables,
formulae and citations.</p>
      <p>This paper describes a software package that extends MediaWiki, creating a hybrid environment
which combines the desirable features of the wiki system — easy collaborative editing, recording of
history and authorship, and instant publication on the internet — with support for complex formats
including programming languages and LATEX document formatting, making it possible to collaborate
simply and flexibly on the actual daily work of the lab and making it simple to store and publish, in an
integrated form, the results, process and presentation of the research.
2</p>
    </sec>
    <sec id="sec-2">
      <title>WorkingWiki</title>
      <p>
        WorkingWiki [
        <xref ref-type="bibr" rid="ref19">27</xref>
        ] is a software extension for the popular MediaWiki system that makes a wiki into a
powerful environment for collaborating on publication-quality manuscripts and software projects. The
WorkingWiki extension allows you to store “source files” in your wiki and develop, test, run and publish
them easily, along with the products of computations using those source files. 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.
One solution is to use a revision control system such as Subversion [8] or Git [2] to manage the source
code, but if any authors are unwilling to take on the work of learning to use the tool, they’re likely to fall
back on emailing the file or just dictating changes to someone else. WorkingWiki addresses this problem
by providing basic revision control features together with easy editing. 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, and can
be used as a website to present the research to the public.
      </p>
      <p>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 sets 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 wiki can then be used to publish
the data, source code, and manuscript to the world as is. This process captures all the files 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.</p>
      <p>WorkingWiki is developed principally for research groups, but is likely to have a variety of other uses as
well for mathematicians, scientists, and software developers. WorkingWiki provides some features of an
integrated development environment: it coordinates compiling (if necessary) and running the code when
relevant source files have changed, and displaying the results. It provides some features of a revision
control system: it uses MediaWiki’s history features to record author, date/time, and content of every
change to the files and the wiki pages they are connected to, and it allows viewers to export the source
code to their workstations and work on it offline.</p>
      <p>It integrates editing and running code with wiki editing. Source and product files can be mixed freely
into wiki pages’ text. Editing is fully collaborative. The effects of changes to source files can be fully
previewed before saving to the wiki. The WorkingWiki-extended wiki is a simple, elegant way to present
a research team’s work to the world.</p>
      <p>
        WorkingWiki has special features for translating LATEX documents to HTML, for display directly
in the wiki page. WorkingWiki allows collaborators to edit complete LATEX documents collaboratively
on the wiki, view the compiled document in the wiki page, and export the documents’ source files to
your workstation when ready to submit or circulate. Using Bruce Miller’s LaTeXML software [
        <xref ref-type="bibr" rid="ref12">20</xref>
        ], the
rendered contents of a LATEX document are made visible in the wiki page, including figures, citations
and equations (optionally using MathML), as well as in the standard PDF format. The editing history of
all files is maintained, including authorship of each change. WorkingWiki’s LATEX handling works with
documents that involve multiple files, stored on multiple wiki pages. LATEX ninclude, nbibliography,
nincludegraphics, and like commands are supported. Filenames do not need to match page names.
      </p>
      <p>WorkingWiki is extensively customizable, supporting collaborative development and use of computer
programs in any language. Images and other files created by computer programs can be included directly
in LATEX documents and read by other programs, and are updated automatically when the programs or
source data files are changed. The development environment can be customized by adding default make
rules, and in many other ways.</p>
      <p>WorkingWiki supports reproducible and open research by allowing researchers to collect all the files
involved in a research project — data files, source code, documentation, publications — in an accessible
place where collaborators can develop them together, and the public can be allowed to download the
entire project, to verify results and try their own experiments.
3</p>
    </sec>
    <sec id="sec-3">
      <title>WorkingWiki in use</title>
      <p>
        WorkingWiki operates on source files that are stored in standard wiki pages. Source files are collected
into projects. Behind the scenes, WorkingWiki maintains a cached working directory where it stores
and processes the project’s files. When an output file is called for in a wiki page or by other means,
WorkingWiki does its work by invoking make [
        <xref ref-type="bibr" rid="ref15">23</xref>
        ] to create or update the file from the source files in its
project before displaying it. In this way, users can edit their code (or their data files, or .tex documents)
by editing the wiki, and run the code and view the output (the typeset version of the paper, the updated
version of the figure, the textual output of the program) just by previewing or saving the page.
      </p>
      <p>Figure 1 provides a simple example of the source text of a WorkingWiki-enabled wiki page. Most
of the text of this page is standard MediaWiki markup using constructs such as ==. . . == for section
headers and [[. . . ]] for links. A WorkingWiki source file is defined by including it in an XML-style
source-file element. The text between the opening and closing tags of that element defines the content
of that file, and it is written to the corresponding file in the project’s working directory and used to update
the project’s output files as needed. In this example, project names are not explicitly given, signaling the
software to use by default the project whose name is the name of the wiki page. The assignment of files
to projects can be made explicit by supplying a project attribute along with the filename attribute in
the opening tag.</p>
      <p>Below the source file is an output file, represented by a self-closing project-file element. When
the MediaWiki parser encounters this tag and passes it to WorkingWiki’s code, WorkingWiki
synchronizes all the project’s source files with their copies in the working directory, creates a subprocess to run
the Unix command make figure.png, and (assuming the make command succeeds) retrieves the file
and inserts the file into the HTML page that is the output of the wiki’s parser. Thus simply viewing the
page causes the output file to be updated and displayed. Figure 2 shows what this wiki page looks like in
==R graphics example==
Here is a simple example of how to do a figure with R, using
[[Recipe_Book#R | the lalashan site's custom rules for using R]].
The custom rules make it simple: just define a .R file:
&lt;source-file filename=example.R&gt;
plot(function(x){-x*cos(x-1)}, -pi, pi, col="blue");
&lt;/source-file&gt;
and request its output using just the right filename:
&lt;project-file filename=example.Rout.png/&gt;
the web browser.</p>
      <p>This example is especially simple because the steps to make the output from the source code are
controlled by a system-wide makefile installed in a central location and used in all projects. This is not
necessary: makefiles can also be added to individual projects, in the same way as any other source file,
and in this way users can control the processing of any kind of files and specify their dependencies.</p>
      <p>WorkingWiki completely supports MediaWiki’s previewing feature: changes to pages, including
source files, can be tested and revised extensively before saving them to the wiki. When a user previews
a page that includes project files, WorkingWiki updates them from the modified source files, in a separate
preview copy of the project’s working directory. When the user saves the changes to the wiki,
WorkingWiki merges the temporary files into the permanent copy, to avoid unnecessary repetition of processing
steps. 1</p>
      <p>
        Editing source code in a form field in a web browser is much less convenient than editing files in
full-featured editors like vi and emacs, but browser addons It’s All Text [
        <xref ref-type="bibr" rid="ref7">15</xref>
        ] for Firefox and TextAid
[9] for Chrome make it much easier by allowing a page’s contents to be opened in a text editor of the
user’s choice and kept open while repeatedly submitting and previewing the page or a section of the page.
This gives users access to all the editor features they are used to, such as syntax highlighting and smart
indenting.
3.1
      </p>
    </sec>
    <sec id="sec-4">
      <title>LATEX features</title>
      <p>
        WorkingWiki allows a source file to be displayed in a transformed form. For instance, if a page’s
editor writes &lt;source-file filename="example.R" display="example.Rout.png"&gt;, the project
file example.Rout.png is updated and displayed in the page in place of the source code. This feature
has not proved very popular — it seems to be preferable to make source code visible in most cases —
but the use of default display attributes is very useful with LATEX and related formats. Default display
1When a directory becomes large, these copy operations can become quite expensive. Unfortunately, it’s necessary, because
if we processed unsaved code in the primary cache directory it could modify files in ways that would affect the outcome of
future processing steps, even if the previewed changes were never saved. We partially address this problem by making it
possible to split out large or numerous project files into separate project directories that are left uncopied provided the project’s
authors promise that they are protected from problematic side effects, but a more flexible solution would be desirable. We are
considering using the Btrfs filesystem’s copy-on-write file storage capabilities [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] to make these copy and merge operations fast
and cheap.
transformations can be defined by the wiki’s administrators, and WorkingWiki comes with a small
number of them predefined. In particular, .tex files are by default transformed to .latexml.html files
for display, and WorkingWiki’s system-wide makefile provides rules that make that transformation by
using LaTeXML to process the document into HTML for display. Additionally, if a user has opted to
enable MathML output and is using a MathML-compatible browser, WorkingWiki instead provides a
.latexml.xhtml version of the document which uses MathML for all mathematical content. (This
automatic detection and output switching is also available to wiki users and administrators for custom
HTML-producing processes.)
      </p>
      <p>When displaying a .tex file, WorkingWiki also provides a link that makes and provides a PDF
version of the document using either LATEX or PDFLATEX (or other programs, if customized). This link
can be redefined or additional links can be added to the default behaviour and they can be changed on a
file-by-file basis by adding attributes to the source-file element.</p>
      <p>In figure 3 is a screenshot of a LATEX document in a wiki page, illustrating how the XHTML version
of the manuscript is embedded in the page, and the PDF link at the right margin. Embedding the rendered
form of the manuscript directly in the wiki page allows for a comfortable cycle of editing, previewing,
and editing some more, which is comparable to the ease of editing a manuscript’s source text in a text
editor, processing it into DVI or PDF, viewing, and editing again, especially when using an external text
editor with the wiki as described above.</p>
      <p>These features allow users to edit LATEX documents (and other source files) in the same way that wiki
pages are edited: open an edit form and change the source code; press the preview button and see what it
looks like when processed; edit some more until it is right, and then save.</p>
      <p>The make rules that are provided with WorkingWiki automatically keep track of dependencies on
BibTeX files, figures, locally provided style files and included tex files, so that the displayed manuscript
is kept up to date when any part of it is updated.</p>
      <p>It is simple to use LATEX conditionals to insert comments and conversations in the code of a manuscript
that are visible in the HTML version of the manuscript but invisible in the PDF, providing an easy way
to coordinate while keeping a clean manuscript for submission.
3.2</p>
      <sec id="sec-4-1">
        <title>Advanced features</title>
        <sec id="sec-4-1-1">
          <title>3.2.1 Inter-project dependencies</title>
          <p>For advanced users, WorkingWiki supports sharing of data among multiple projects, and takes steps to
ensure dependency relationships are respected and data integrity is protected when previewing or running
background jobs (see below).</p>
          <p>This feature allows a number of useful strategies. General-use code can be shared among multiple
projects, by placing it in a ”library” project. Complex projects can be organized by grouping related
things together into separate WorkingWiki projects, while allowing interaction between the different
components. Independent parts of a project can be isolated from one another. A particularly important
case is that a journal article for publication can be housed in a separate project from the data and
programs that provide its content. This allows, on the one hand, the authors to maintain the dependency
relationships within the wiki that allow the manuscript’s figures and tables to be automatically kept up
to date when the data and programs change, and on the other hand makes it simple to export the article’s
source files in a neat .tar.gz package for submission to the journal and leave the programs and data
behind.</p>
        </sec>
        <sec id="sec-4-1-2">
          <title>3.2.2 Interaction with external data</title>
          <p>WorkingWiki’s back end is capable of processing data from multiple sources, and the front end allows
those projects to be integrated with projects originating on the wiki. For instance, this author has a
research project in progress in which a complex simulation program is stored in two GitHub repositories,
pulled into two project directories in the wiki’s file cache, compiled and run by code in a third project
whose source files are housed on the wiki, and the output files are stored in a fourth project that is created
on the wiki but doesn’t have any source files.</p>
          <p>This external-project feature also allows interaction between projects housed on different wikis —
this is useful on our site at McMaster because we operate many interconnected wikis, and store some
general-use code on a central wiki for use on others.</p>
          <p>Project data can be exported to a user’s local disk in a .tar.gz package, which includes the wiki’s
centralized makefile and other supplementary data, to allow running and developing the code offline. It
can then be re-imported into the wiki. There is also a command-line tool to pull project files from wikis
to a local directory. In the future there may be an interface to git [2], allowing one to pull and push
source code from and to the wiki storage as if it were a (somewhat simplified) git repository. Given the
flexibility of the git client, this would effectively make it possible to migrate projects easily between wiki
storage and many other repositories.
3.2.3</p>
        </sec>
        <sec id="sec-4-1-3">
          <title>Background jobs</title>
          <p>When certain computational steps are too slow to run on the spot, WorkingWiki allows them to be run as
background jobs, which run outside of the wikitext-parsing process. A background job is created simply
by specifying a make target and requesting it be made in the background. Any background jobs that have
been created are listed at the top of all pages that interact with the projects they involve, in a listing that
provides their basic information and status. Whether a job has succeeded or failed, a user can browse its
files, destroy it, or merge its output into the project’s primary working directory. Running jobs can be
browsed and killed.</p>
          <p>In a standard installation, background jobs are run as Unix subprocesses on the same processors
as the web server (using nice and ionice at the discretion of the site administrators), but there is a
prototype in development to run background jobs on computing clusters using GridEngine [5].
4</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Design of the software</title>
      <p>WorkingWiki is implemented as a MediaWiki extension, written in PHP and augmented by a few
JavaScript and CSS resources, makefiles, and small helper programs. It is freely available under the
GNU General Public License [3], and is compatible with all versions of MediaWiki from 1.13 on.</p>
      <p>The source-file and project-file tags are implemented as tag hooks, a standard means of
extending MediaWiki’s parser, and retrieval of binary files and project management are provided by two
special pages, another standard form for extensions. Like MediaWiki, WorkingWiki itself provides a
number of hooks that can be used by other extensions to provide additional features or modify the ones
that are provided. It has not been tested in combination with all other MediaWiki extensions, but there
are no known conflicts.</p>
      <p>WorkingWiki’s behavior can be extensively customized as is. Administrators can modify the rules
controlling how different file types are displayed, and provide default transformations like the one from
LATEX to HTML and links like the one from LATEX to PDF. Custom make rules can be added, to make it
easy for users to write source code and transform it in standard ways, and the existing make rules can be
partially or completely overridden.
4.1</p>
      <sec id="sec-5-1">
        <title>Separation of wiki from project engine</title>
        <p>A wiki is a powerful tool that combines a number of important functions. It is effectively a combined
revision control system, integrated development environment, markup parser for website content, and
publishing platform for web pages written in its markup language. WorkingWiki extends all of these
functions to a wider range of source material, making the wiki into a combination revision control
system, development environment, execution environment, and publishing platform for the general case of
executable program text. Each of these functions is provided in more powerful forms by other tools, but
the power of the wiki medium is in combining them together in an elegant, easy-to-use form.</p>
        <p>An ideal situation would be to make it easy for end users to separate all these functions in a
mixand-match way, for instance providing a development, execution and publishing platform for data stored
in a revision control system of the user’s choice, or providing revision control, execution and publishing
but using a third-party tool for editing and previewing. This is not entirely possible at present, but
WorkingWiki is written with these separations in mind.</p>
        <p>In particular, while the revision control, development (e.g. editing and previewing), and publishing
functions are essentially provided by MediaWiki once the source files’ contents are inserted into the
stored pages and output files are inserted into the output HTML, WorkingWiki’s execution environment
is entirely separate from MediaWiki’s code, and is designed as a completely independent component.</p>
        <p>This component, called ProjectEngine, is a standalone tool that stores files, performs make
operations, and serves up-to-date file contents. Written in PHP, as are MediaWiki and WorkingWiki, it can be
used as a component of a larger program — it is incorporated in WorkingWiki in this way by default —
and can also run as a self-contained HTTP service. It can be thought of as similar to a simple web server
— whose primary function is to retrieve the contents of files for clients — but one that can create and
update its files using make rules before serving them.</p>
        <p>ProjectEngine supports updating and removing files; creating, destroying and merging preview
sessions by making a copy of ”persistent” files; and creating, destroying, merging and tracking background
jobs.</p>
        <p>
          The project engine seems to be a simple and powerful concept, and one that may have uses
beyond this single wiki system. If nothing else, it can be used as a back end for similar extensions for
other wiki engines, and the author has discussed this possibility with the author of Projects Wiki [
          <xref ref-type="bibr" rid="ref11">19</xref>
          ], a
WorkingWiki-inspired plugin for Dokuwiki.
4.2
        </p>
      </sec>
      <sec id="sec-5-2">
        <title>Security considerations</title>
        <p>There are, of course, risks involved in running a web server that includes a project engine, which
executes programs supplied by users. To a first approximation, the risks can be partitioned into just a few
categories: overuse or destruction of server resources, access to sensitive data, denial of service, and
harmful output. All of these risks can be managed.</p>
        <p>The first category, overuse or destruction of system resources, is fairly broad. It includes scenarios
from user-supplied code altering files on the server, to programs that send voluminous spam emails to
innocent people, to infinite loops that consume excessive CPU time or fill up a disk partition. These risks
can be managed by use of a mandatory access control system such as TOMOYO Linux [7] to restrict
access to all system resources, from sensitive files to use of the server’s network interfaces. Additionally,
ProjectEngine uses nice and ionice to prevent its processes from monopolizing CPU time and disk
access, and uses setrlimit() to limit the number of subprocesses a make process can create and kills
make processes after a limited time period. A quota system can be used to limit the amount of disk space
ProjectEngine’s files can consume.</p>
        <p>Mandatory access control is also effective at keeping user-supplied code from reading sensitive
system files, and WorkingWiki’s inputs are carefully validated to prevent backdoor access to SQL data.
WorkingWiki works with MediaWiki’s access control features to ensure that a password-protected wiki
doesn’t reveal data to unauthorized users.</p>
        <p>Denial of service attacks can include inputs that cause crashes in the software, as well as inputs that
consume inordinate resources. The latter category has been covered. The former case can probably never
be ruled out with complete confidence, but in any case, when a wiki is password-protected, unauthorized
users have no means to interact with WorkingWiki and thus any attacks from outside the user community
must be directed at other services.</p>
        <p>The case of harmful output is the least well accounted for at present: in order to provide an HTML
rendering of LATEX documents, it’s necessary to allow ProjectEngine jobs to produce HTML output to
be passed on to the client, and in order to support programmers it’s necessary to allow them to write
programs and custom make rules; in combination this means that users’ projects can produce HTML
output that does unwelcome things on the client side, such as making calls to third-party websites that
reveal information about users logged in to the wiki. It may be possible to filter HTML output in a way
that allows only safe output, but this is currently not implemented in WorkingWiki. Another possibility
is to provide as an option a restricted set of WorkingWiki features, for instance allowing users to edit
LATEX documents but not to create makefiles; this might suffice to provide a system that could be safely
opened up to anonymous editors.</p>
        <p>The current recommendation is to use WorkingWiki only on password-protected wikis, restricting
editing access to trusted users. We believe it is safe for publicly readable wikis as long as only trusted
users can edit. WorkingWiki is very useful and reliable for semi-closed wikis in this way, and use in
public wikis more like Wikipedia may be possible in the future.
5</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Examples of WorkingWiki in use</title>
      <p>
        WorkingWiki’s home site [
        <xref ref-type="bibr" rid="ref19">27</xref>
        ], which is itself a WorkingWiki-enabled wiki, provides a handful of
example WorkingWiki projects, illustrating how to create projects for LATEX and for programming (the
nomogram example [
        <xref ref-type="bibr" rid="ref2">10</xref>
        ] is especially engaging).
      </p>
      <p>One active research team is using it to analyze and visualize African survey data related to HIV and
female genital cutting. For that research a utility project has been created that automates the process of
downloading the raw survey data from the provider’s web site, merging separate data sets together, and
transforming them into .RData files ready for processing in R. Another utility project provides custom
R functions for plotting the data, allowing users to create visualizations of particular variables, including
geographical plots, by inserting brief scripts of only a few lines into their wiki pages.</p>
      <p>
        The Dushoff lab has created a suite of make rules to streamline R programming within
WorkingWiki, making it easy to process data in steps by creating a series of small R modules that operate on
the data produced by earlier modules, and interleaving these brief program snippets with the plots and
textual output that they produce, in a wiki page that documents the steps of the processing. This mode
of working with processing steps and their output is similar to the interactive notebooks provided by
Mathematica [
        <xref ref-type="bibr" rid="ref14">22</xref>
        ] or Sage [6]. The Dushoff lab has also developed custom processes and make rules
for automatically generating BibTeX data and browser-friendly reference lists from PubMed and similar
identifiers, making it easy to maintain citation data within the wikis.
      </p>
      <p>
        This author is conducting an experiment in open research by maintaining a project on a publicly
readable wiki. This project, which is in the early proof-of-concept phase, combines simulation and
mathematical analysis in modeling collective search for a solution to a complex problem [
        <xref ref-type="bibr" rid="ref16">24</xref>
        ].
      </p>
      <p>
        Another team is using it to investigate the behavior of spatially extended threshold models like those
described by Schelling [
        <xref ref-type="bibr" rid="ref13">21</xref>
        ] and Granovetter [
        <xref ref-type="bibr" rid="ref4">12</xref>
        ], using a combination of python simulations and
collaborative mathematical analysis (both in WorkingWiki). Other teams are using WorkingWiki to study
the use of non-negative matrix factorization for community detection in marine ecometagenomics data,
the effect of complex contact network structure on infectious disease dynamics, and spread of coexisting
favorable mutations in spatially localized populations of plants and animals.
      </p>
      <p>
        Papers completed in WorkingWiki have been published in Ecological Economics [
        <xref ref-type="bibr" rid="ref17">25</xref>
        ], Theoretical
Ecology [
        <xref ref-type="bibr" rid="ref5">13</xref>
        ], and Journal of Mathematical Biology [
        <xref ref-type="bibr" rid="ref8">16</xref>
        ] (and now in this proceedings [
        <xref ref-type="bibr" rid="ref18">26</xref>
        ]).
6
      </p>
    </sec>
    <sec id="sec-7">
      <title>WorkingWiki and math wikis</title>
      <p>
        WorkingWiki’s makefile rules are straightforward to extend or replace. Its LATEX features can be
extended to additional formats: this author once created a structure for working on Sweave documents in
WorkingWiki in an afternoon (it took a few minutes to write the rule to create .tex files automatically
from Sweave files, and a few hours to create a LaTeXML style file to make the Sweave output look good
in the browser). It should be straightforward to extend WorkingWiki to process any number of
specialized document types conveniently; for instance, allowing users to edit sTex [
        <xref ref-type="bibr" rid="ref9">17</xref>
        ] documents and render
them automatically to PDF, browser-ready XHTML, and OMDoc [
        <xref ref-type="bibr" rid="ref10">18</xref>
        ] formats. It could also be used to
develop, store, and process documents in computer-aided theorem-proving systems, or using any other
tool that can be invoked from a UNIX command line to process files. Its uses are open-ended, and may
prove very fruitful to explore.
[2] Git: the fast version control system. http://git-scm.com/.
[3] GNU general public license, version 2. http://www.gnu.org/copyleft/gpl.html.
[4] OpenWetWare.org. http://openwetware.org.
[5] Oracle grid engine. (Formerly known as Sun Grid Engine.) http://en.wikipedia.org/wiki/
      </p>
      <p>Oracle_Grid_Engine. Retrieved July 8, 2011.
[6] Sage: open source mathematics software. http://www.sagemath.org. Retrieved July 8, 2011.
[7] Tomoyo linux. http://tomoyo.sourceforge.jp/. Retrieved July 8, 2011.
[8] Ben Collins-Sussman, Brian W. Fitzpatrick, and C. Michael Pilato. Version Control with
Subversion. O’Reilly, first edition, June 2004. http://svnbook.red-bean.com/.
[9] Wayne Davison. Textaid. https://chrome.google.com/webstore/detail/
ppoadiihggafnhokfkpphojggcdigllp. Retrieved July 8, 2011.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Btrfs</surname>
          </string-name>
          <article-title>(b-tree file system)</article-title>
          . https://btrfs.wiki.kernel.org/index.php/Main_Page.
          <source>Retrieved July 8</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Jonathan</given-names>
            <surname>Dushoff</surname>
          </string-name>
          . Nomogram. http://lalashan.mcmaster.ca/theobio/math/index.php/ Nomogram.
          <source>Retrieved July 8</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Timothy</given-names>
            <surname>Gowers</surname>
          </string-name>
          and
          <string-name>
            <given-names>Michael</given-names>
            <surname>Nielsen</surname>
          </string-name>
          .
          <source>Massively collaborative mathematics. Nature</source>
          ,
          <volume>461</volume>
          :
          <fpage>879</fpage>
          -
          <lpage>881</lpage>
          ,
          <issue>15</issue>
          <year>October 2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Mark</given-names>
            <surname>Granovetter</surname>
          </string-name>
          .
          <article-title>Threshold models of collective behavior</article-title>
          .
          <source>American Journal of Sociology</source>
          ,
          <year>1978</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Daihai</surname>
            <given-names>He</given-names>
          </string-name>
          , Jonathan Dushoff, Troy Day, Junling Ma, and
          <string-name>
            <given-names>David J. D.</given-names>
            <surname>Earn</surname>
          </string-name>
          .
          <article-title>Mechanistic modelling of the three waves of the 1918 influenza pandemic</article-title>
          .
          <source>Theoretical Ecology</source>
          ,
          <volume>4</volume>
          (
          <issue>2</issue>
          ):
          <fpage>283</fpage>
          -
          <lpage>288</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Hideo</surname>
            <given-names>Mabuchi lab</given-names>
          </string-name>
          , Stanford University.
          <source>Qwiki (quantum wiki)</source>
          . http://qwiki.stanford.edu.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Christian</given-names>
            <surname>Ho</surname>
          </string-name>
          <article-title>¨ltje. It's all text</article-title>
          ! https://addons.mozilla.org/en-US/firefox/addon/ its-all-text/.
          <source>Retrieved July 8</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>X.</given-names>
            <surname>Jiang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Weitz</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Dushoff</surname>
          </string-name>
          .
          <article-title>A non-negative matrix factorization framework for identifying modular patterns in metagenomic profile data</article-title>
          .
          <source>Journal of Mathematical Biology</source>
          ,
          <year>2011</year>
          . Epub ahead of print. http://www.ncbi.nlm.nih.gov/pubmed/21630089.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Andrea</surname>
            <given-names>Kohlhase</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Michael</given-names>
            <surname>Kohlhase</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Christoph</given-names>
            <surname>Lange</surname>
          </string-name>
          . sTeX
          <article-title>- a system for flexible formalization of linked data</article-title>
          .
          <source>In Nicola Henze</source>
          , Adrian Paschke, Andreas Blumauer, Richard Cyganiak, and Tassilo Pellegrini, editors,
          <source>Proceedings of I-Semantics</source>
          <year>2010</year>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>Michael</given-names>
            <surname>Kohlhase. OMDoc -</surname>
          </string-name>
          <article-title>An open markup format for mathematical documents [Version 1</article-title>
          .2]. Springer Verlag,
          <year>August 2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Junling</given-names>
            <surname>Ma</surname>
          </string-name>
          . Projects wiki. http://rsv.math.uvic.ca/dokuwiki/doku.php/development.
          <source>Retrieved July 8</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Bruce</surname>
            <given-names>R.</given-names>
          </string-name>
          <string-name>
            <surname>Miller</surname>
          </string-name>
          .
          <article-title>LaTeXML: A LaTeX to XML converter</article-title>
          ,
          <year>2011</year>
          . http://dlmf.nist.gov/ LaTeXML/manual/index.xhtml.
          <source>Retrieved July 8</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>T. C.</given-names>
            <surname>Schelling</surname>
          </string-name>
          . Micromotives and
          <string-name>
            <given-names>Macrobehavior. W. W.</given-names>
            <surname>Norton</surname>
          </string-name>
          and Company,
          <year>1978</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>Wolfram</given-names>
            <surname>Software</surname>
          </string-name>
          . Mathematica:
          <article-title>Technical computing software</article-title>
          . http://www.wolfram.com/ mathematica/.
          <source>Retrieved July 8</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Richard</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Stallman</surname>
          </string-name>
          ,
          <string-name>
            <surname>Roland McGrath</surname>
            , and
            <given-names>Paul D.</given-names>
          </string-name>
          <string-name>
            <surname>Smith. GNU Make</surname>
          </string-name>
          :
          <article-title>A Program for Directing Recompilation</article-title>
          .
          <source>Free Software Foundation, 0.71 edition</source>
          ,
          <year>2010</year>
          . http://www.gnu.org/ software/make/manual/.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>L.</given-names>
            <surname>Worden</surname>
          </string-name>
          .
          <article-title>Consensus dynamics project</article-title>
          .
          <source>Lee Worden Research Wiki, July</source>
          <volume>1</volume>
          2011. http: //lalashan.mcmaster.ca/theobio/worden/index.php/Consensus_Dynamics_Project.
          <source>Retrieved July 8</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>Lee</given-names>
            <surname>Worden</surname>
          </string-name>
          .
          <article-title>Notes from the greenhouse world: A study in coevolution, planetary sustainability, and community structure</article-title>
          .
          <source>Ecological Economics</source>
          ,
          <volume>69</volume>
          (
          <issue>4</issue>
          ):
          <fpage>762</fpage>
          -
          <lpage>769</lpage>
          ,
          <issue>15</issue>
          <year>February 2010</year>
          . http:// lalashan.mcmaster.ca/theobio/projects/index.php/Greenhouse_paper.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>Lee</given-names>
            <surname>Worden</surname>
          </string-name>
          .
          <article-title>WorkingWiki: a MediaWiki-based platform for collaborative research</article-title>
          .
          <source>In ITP 2011 Workshop on Mathematical Wikis</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [27]
          <article-title>WorkingWiki home page, Jonathan Dushoff theoretical biology lab wiki</article-title>
          . http://lalashan. mcmaster.ca/theobio/projects/index.php/WorkingWiki.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>