openwdl / wdl

Workflow Description Language - Specification and Implementations
https://www.openwdl.org/
BSD 3-Clause "New" or "Revised" License
779 stars 306 forks source link
bioinformatics cloud cromwell openwdl reproducibility reproducible-science wdl workflow

Workflow Description Language (WDL)

The Workflow Description Language (WDL) is an open standard for describing data processing workflows with a human-readable and writeable syntax. WDL makes it straightforward to define analysis tasks, connect them together in workflows, and parallelize their execution. The language strives to be accessible and understandable to all manner of users, including programmers, analysts, and operators of a production system. The language enables common patterns, such as scatter-gather and conditional execution, to be expressed simply. WDL is designed for portability, and there are several implementations to choose from that run in a variety of environments, including HPC systems and cloud platforms.

Versioning

WDL versioning follows semantic versioning conventions.

The WDL language has a two-number version (e.g., 1.2). An increase in the minor (second) version number (e.g., 1.1 to 1.2) indicates the addition of, or non-breaking changes to, the language or standard library functions. An increase in the major (first) version number (e.g., 1.0 to 2.0) indicates that breaking changes have been made.

The WDL specification has a three-number version (e.g., 1.2.0). The specification version tracks the language version, but there may also be patch releases (indicated by a change to the patch, or third, version number) that include fixes for typos, additional examples, or non-breaking clarifications of ambiguous language.

Language Specifications

The WDL specification contains all relevant information for users and developers, including those wanting to implement an execution engine. This GitHub project uses the branch for the current version of the specification as its primary branch, so you will always see the current version of the specification so long as you visit this project's root URL. Users are strongly encouraged to use the current version of the specification unless absolutely necessary.

This branch is for version 1.2 of the WDL language specification. All development of new non-breaking features should be done against this branch.

Previous versions of the spec can be found here:

There are a number of draft versions that correspond to initial efforts at creating WDL. While these are functional specifications, they should not be considered feature complete, and they contain many bugs and irregularities.

The next major version of the specification is 2.0. All development of new breaking features should be done against that branch.

Community and Support

The WDL community depends on your involvement to thrive. You are encouraged to ask questions, help other users, and make contributions where you can. Interactions occur primarily on GitHub and Slack. The WDL community also has an official blog where announcements are made.

Asking a Question

Bugs and New Features

Documentation

Published Workflows

The following are collections of open-source WDL workflows. The WDL task or workflow you need may already be available in one of these repositories, or you may find a similar workflow and customize it to your needs.

Software and Tools

Execution Engines and Platforms

WDL does not have an official implementation. Third parties are relied upon to provide installable software or hosted platforms that interpret and execute WDL workflows and tasks. Although WDL does not yet have an official compliance program or certification process, implementers are expected to design their tools according to the specification so as to maximize the portability of workflows across implementations. Nonetheless, implementers may provide additional optional features specific. Please see the documentation associated with each tool/platform for information on available execution options and support.

Implementation Requires Installation Local Execution HPC Cloud
AWS HealthOmics No No No AWS
Cromwell * Yes Yes Many AWS Batch, Azure, GCP
dxCompiler Yes No No DNAnexus
MiniWDL Yes Yes SLURM AWS Batch
Terra No No No Azure, GCP

* Also see WDL Runner, a script for launch WDL workflows on GCP using Cromwell

Grammars, Parsers, and Language Support

IDE Support

IDE Tool
Emacs poly-wdl
Emacs wdl-mode
JetBrains Winstanly
Sublime WDL Syntax Highlighter
Vim vim-wdl
Visual Studio Code WDL Syntax Highlighter

Documentation

Testing

Packaging

Contributing

WDL only advances through community contributions. While participating in discussions and submitting issues are great ways to be involved, help is also needed to implement changes to the specification. For more information on how you can contribute, please read the Contributing guide.

RFC Process

Submitted pull requests are subject to the RFC Process. Please review and familiarize yourself with the process if you would like to see changes submitted to the specification.

Governance

The WDL specification is entirely community driven; however, it is overseen by a Governance committee. If you are interested in being involved in WDL governance, please join the Slack and post a message in the #general channel.