Skip to content

DuckTape Documentation

Wongiseng edited this page Oct 11, 2013 · 3 revisions

This page provides an in-depth explanation of the more elaborate features of the platform.

Domain

A domain describes a programming language and it's associated information. An example of a the Java domain. This is the collective name for the method of annotating java code, the java type system, the way raw values are converted to java objects and so on.

Some domains do not describe a traditional programming language, but just an execution environment (for instance, the comman line domain).

Module

A module is a self-contained unit of code, annotated so that the platform can run it. The method of annotation is specified by the domain. For the java domain, the java annotations @In, @Out, @Module and @Main are used.

More detail on Ducktape module creation

Workflow

A workflow is a collection of modules together with their inputs. A workflow is described in a YAML file. Inputs to modules can be either raw YAML values (strings, doubles, ints, bools or lists of these) or references to the outputs of other modules.

Reference

A reference is when one module uses as one of its inputs the output of another module.

Sweep

A sweep occurs when the input to a modules (either by reference or raw) is a list of values, where the input specifies a single value which matches each of the entries in the list.

When a sweep is encountered, the execution branches: the module is executed once for each value in the list. If a module contains multiple sweeps, the exeuction is branched for each value of the cartesian product of the individual sweeps.

Any module dependent on the output of a module which has been branched is executed once for each branch.

If another sweep is encountered downstream of an existing sweep, a new branch is created for each value of the second sweep.

Downstream

Downstream of a specific point in a workflow refers to all other parts of the workflow that are dependent on it. Upstream means the converse.