A workflow management system for researchers who heart Unix.
Scala JavaScript CSS HTML Vim script Shell Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
builtins Check out the required commit when ref is not HEAD Oct 31, 2014
lib Remove Scala 2.9.2 JAR from git Jan 11, 2013
tutorial Add to acid.tape Aug 14, 2015
HACKING.md Finish the upgrade to 2.10 with removal of SBT in favor of bash and zinc Jan 8, 2013
IMPROVEMENTS.md Copying notes off of whiteboard from long, long ago Jun 26, 2012
webui.sh Add some hooks for AJAX/JSON queries from the WebServer's Servlet Jun 8, 2012


Travis CI Build Status: Build Status


Ducttape is a workflow management system for researchers who heart unix. It allows you to:

  • Write tasks using bash and have dependencies among tasks automatically managed (like Make)
  • Track the versions of the software used, the data used, and even the task descriptions themselves in a very detailed way
  • Quickly and easily run your workflow under multiple input conditions while re-using intermediate results -- without copy-pasting

Want to learn how to use Ducttape? Read TUTORIAL.md.

Want to help develop ducttape? Read HACKING.md.

Quick Start

First, download and unpack the program:

wget http://www.cs.cmu.edu/~jhclark/downloads/ducttape-0.3.tgz
tar -xvzf ducttape-0.3.tgz

Add ducttape to your PATH:

export PATH=$PWD/ducttape-0.3:$PATH

Run a tutorial example:

cd ducttape-0.3/tutorial
ducttape 01-01-hello-world.tape

Or, if you're coming from machine translation, try building the entire cdec tutorial in a single command (see http://www.cdec-decoder.org/guide/tutorial.html):

wget www.cs.cmu.edu/~jhclark/cdec_tutorial.tar.gz
cd cdec_tutorial/
# Run 2 jobs at a time
ducttape tutorial.tape -C tutorial.tconf -j2
# Now view a summary table of the results! (All 1 of them)
ducttape tutorial.tape -C tutorial.tconf summary scores

What's next? Read TUTORIAL.md.

System-wide Installation

wget http://www.cs.cmu.edu/~jhclark/downloads/ducttape-0.3.tgz
tar -xvzf ducttape-0.3.tgz
cd ducttape 0.3
sudo make install

Design Principles

  • Simple things should remain simple.

  • You should be able to start simple. Run. Add complexity. And re-run.

  • Workflow management and data flows have very different design patterns than other sorts of code. Writing them in C++, Java, or XML is annoying.


To keep updated on the latest versions of ducttape, subscribe to our low-traffic announcement mailing list: https://groups.google.com/group/ducttape-announce

If you have questions about how to use ducttape, please post on StackOverflow using the tag "ducttape": http://stackoverflow.com/questions/ask?tags=ducttape. If you'd like to help other ducttape users or keep up with questions being asked about ducttape, please use http://stackexchange.com/filters/new to create a daily email subscription to StackExchange questions with the tag "ducttape".

To stay in the loop on ducttape development, subscribe to our higher traffic development mailing list: https://groups.google.com/group/ducttape-dev

To keep updated on bleeding edge development of ducttape, subscribe to our higher traffic commits mailing list: https://groups.google.com/group/ducttape-commits

Emacs Mode

To get syntax highlighting in emacs, add a line similar to the following in your ~/.emacs file:

(load "$PATH_TO_DUCTTAPE_HERE/tool-support/emacs/ducttape.el")

Vim Mode

To get syntax highlighting in vim, copy (or symlink) the ducttape's vim syntax highlighting file, like so:

$ mkdir -p ~/.vim/syntax
$ cp $PATH_TO_DUCTTAPE_HERE/tool-support/vim/ducttape.vim ~/.vim/syntax/ducctape.vim

Then add a line to your ~/.vimrc to create an association with .tape files:

syntax on
filetype on
au BufRead,BufNewFile *.tape set filetype=ducttape

Related Projects

Minimal Web UI for ducttape: https://github.com/vchahun/ducttape-web

Better Vim Mode: https://github.com/vchahun/vim-ducttape (This will either replace or be merged with the current vim files)