Tracery Project


One of our objectives in DIG 220 is to “create original multimodal work that takes advantage of the unique aesthetic and literary affordances of digital environments.” To that end you will create a procedurally-generated text. (Update: a list of finished student Tracery projects is available.)

Procedural generation means there are rules (or “grammars”) that a computer follows as it populates a template with language. Think of procedural generation as Mad Libs gone crazy. To complete this project you will use Tracery, a Javascript library by Kate Compton that lets you create surprising configurations of texts out of the template and vocabulary you provide.

Strictly speaking, this project does not involve programming. It does, however, require procedural thinking. Every Tracery grammar takes the form of a JSON file. This is a highly structured text format that both humans and computers can “read”—though parse might be a better word. Your grammar.js file tells Tracery what your templates are (templates in the plural because you can embed templates within templates recursively) and provides the vocabulary for Tracery to use as it fills in the templates.

A JSON file
The Tracery grammar.js JSON file that powers “Don’t Drink the Water”

It’s easy for text generation to be comical or satirical, like Nora Reed’s thinkpiecebot or Compton’s Night Vale Generator, both of which use Tracery. Other text generation parodies powered by tools similar to Tracery include the Postmodern Essay Generator and Eric Drass’s machine imagined art.

But it’s also possible to make text generators that are serious or provide social critique, such as my own Don’t Drink the Water (which uses Tracery) or @NSA_PRISMbot (which uses a technique similar to Tracery).


  1. Decide what kind of text you want to generate. Will it be a parody? Social commentary? A genre, like horror, romance, or science fiction? Fake non-fiction? What’s the mood of the work? Humorous? Sarcastic? Somber or melancholy?
  2. Download the template files (also try the simplified template files), unzip them, and start editing grammar.js in a text editor. The grammar.js file contains the grammar and vocabulary—the rules—for Tracery. You can instantly see the results by opening the index.html file in your browser. Also edit index.html to reflect your project name and to update the project description. I’ve provided more details about the editing process in my Tracery Tips post. I’ve also posted some tips of customizing the look of your project.
  3. Go through the Tracery tutorials below as you work on your project. When you first start it might help to use a visual editor. Beware that these editors are liable to crash as your grammar grows in complexity.
  4. You will also write an Artist Statement that puts your Tracery project in dialogue with questions regarding authorship and creativity.


For your Tracery project to count as Satisfactory, it must meet the following criteria.

  1. Your Tracery project must have at least 1,000,000 possible combinations.
  2. 9 out of 10 combinations must parse correctly. That is, at least 9 out of 10 combinations should make grammatical sense, though not necessarily logical sense.
  3. The Tracery project is accompanied by a 500-1000 word Artist Statement, posted to our class blog under the category “Tracery Project.”
  4. The Artist Statement must integrate at least two secondary sources in a substantive way. “Substantive” doesn’t mean merely quoting at length or cherry-picking a key phrase. “Substantive” means actively engaging with the source by (1) summarizing its overall argument; (2) showing how that argument ignores important issues, doesn’t go far enough, or could be applied to new contexts; and (3) applying concepts from the secondary source to your procedurally-generated text. See below for possible secondary sources to consider.
  5. The Artist Statement follows scholarly standards for citation, using either MLA, APA, or Chicago style.
  6. The Artist Statement contains no more than 3 grammatical, spelling, or other “mechanical” errors.
  7. The Artist Statement contains no more than 2 minor factual inaccuracies and no major factual inaccuracies.
  8. Your fully functioning Tracery project is shared online via your own Davidson Domain (using the File Manager in your domains dashboard to upload all the files to a folder in your public_html directory). This video tutorial walks you through the upload process.
  9. The Tracery project and Artist Statement are publicly shared by Sunday, September 17 at 11:59pm.

For your Tracery project to count as Sophisticated, it must meet the following criteria (in addition to meeting all the above criteria for Satisfactory):

  1. Your Tracery project must have at least 1,000,000,000 possible combinations.
  2. You must change the style.css file in meaningful ways. That is, in ways that noticeably contribute to (rather than detract from) the visual style of the project. Font sizes, color changes, even changing the font could conceivably be meaningful changes to make.
  3. The Artist Statement must integrate at least one more secondary source in a substantive way.
  4. The Artist Statement uses more effective rhetoric and style to advance its argument.


There are a host of Tracery tutorials out there, but the best are the following:


Possible Secondary Sources