From 9acbffa1130e19a70839e23869c9f18cdd3df58b Mon Sep 17 00:00:00 2001 From: Clay McLeod Date: Sat, 16 Nov 2024 11:37:47 -0600 Subject: [PATCH] docs: updates `README.md` with new information, deduplicates content --- .github/assets/readme-header.png | Bin 44956 -> 43959 bytes README.md | 223 ++++++++++++++----------------- 2 files changed, 99 insertions(+), 124 deletions(-) diff --git a/.github/assets/readme-header.png b/.github/assets/readme-header.png index 56cb8be5092fcf2eba0cf9c4882ca4b15995e47b..39f50825338e97416bee9b5c4266d0ab313b6dc2 100644 GIT binary patch literal 43959 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 + + + +
+ +The **Workflow Description Language (WDL)** (pronounced as _/hwɪdl/_ or +_"wh-ih-d-l"_—"whittle" with a 'd') is an open standard for describing both data +processing workflows using a human-readable/writeable syntax. This domain-specific +language aims to make it easy to define atomic units of computation (tasks), connect +them together to achieve a broader data processing goal (workflows), and effortlessly +scale their execution. + +Fundamentally, the language strives to be accessible and understandable to all manner of +users, including software engineers, domain experts, and providers of production +computational systems. Further, the language aims to enable idiomatic workflow execution +patterns (e.g., conditional execution and scatter-gather constructs) to be simply +expressed. Last, the language aims to be open and accessible—there is no single +execution engine, and anyone can develop an execution environment for WDL. Today, +[several engines and platforms](#execution-engines-and-platforms) exist and cover most +execution environments (all major HPCs, all major clouds, local execution). -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](#execution-engines-and-platforms) to choose from that run in a variety of environments, including HPC systems and cloud platforms. +## Getting Started -## Versioning +If you're new to WDL, welcome 👋—we _highly_ recommend you read the [getting started +documentation][wdl-docs] to learn how to write workflows. Beyond that, here are some +quickstart guides on various topics regarding getting up to speed with WDL. -WDL versioning follows [semantic versioning](https://semver.org) conventions. +### Learn how to write tasks and workflows -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. +**[TODO]** Learn from the of compendium of publicly available workflows and tasks. -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. +### Running and scaling execution -## Language Specifications +**[TODO]** Explore the execution engines that can run WDL. -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](https://github.com/openwdl/wdl). -Users are strongly encouraged to use the current version of the specification unless absolutely necessary. +### Join the community -This branch is for version **1.2** of the [WDL language specification](https://github.com/openwdl/wdl/blob/wdl-1.2/SPEC.md). -All development of new *non-breaking* features should be done against this branch. +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][github-main] and [Slack][join-slack]. The WDL community also has +an official [website](https://openwdl.org/) and [blog](https://openwdl.org/blog/) that +you can follow to stay up to date. -Previous versions of the spec can be found here: +* **If you have questions about using WDL,** search in the +[discussions](https://github.com/openwdl/wdl/discussions) to see if the question has +been asked already; if not, feel free to start a new discussion. You can also join the +`#support` channel on [Slack][join-slack] to ask more transient questions. +* **If you are a user of an execution engine and encounter a bug or want to request a + feature,** you are encouraged to file an issue on the relevant execution engine's + repository. Please do not file these types of questions/requests on the main WDL + specification repository. +* **If you are an implementor and need clarification on the specification or want to + request a feature to be added to the WDL language,** please file an issue on the WDL + specification's [GitHub issues][github-issues] page. +- **If you'd like to contribute to the WDL specification,** please read the + [contributing](#contributing) section before submitting a pull request. -- [1.1](https://github.com/openwdl/wdl/blob/wdl-1.1/SPEC.md) -- [1.0](https://github.com/openwdl/wdl/blob/main/versions/1.0/SPEC.md) +### Conclusion -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. +If you're interested in diving deeper into the specification itself, feel free to +continue reading. -- [draft-3](https://github.com/openwdl/wdl/blob/main/versions/draft-3/SPEC.md) -- [draft-2](https://github.com/openwdl/wdl/blob/main/versions/draft-2/SPEC.md) -- [draft-1](https://github.com/openwdl/wdl/blob/main/versions/draft-1/SPEC.md) +## Specification -The next *major* version of the specification is [2.0](https://github.com/openwdl/wdl/blob/wdl-2.0/SPEC.md). -All development of new *breaking* features should be done against that branch. +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][github-main]. Users are strongly encouraged to use the current version of the +specification unless absolutely necessary. -## Community and Support +* This branch is for version **1.2** of the specification + ([link](https://github.com/openwdl/wdl/blob/wdl-1.2/SPEC.md)). All development of new + *non-breaking* features should be done against this branch. +* The next major version of the specification is `v2.0` + ([link](https://github.com/openwdl/wdl/blob/wdl-2.0/SPEC.md)). All development of new + *breaking* features should be done against that branch. -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](https://github.com/openwdl/wdl) and [Slack](https://join.slack.com/t/openwdl/shared_invite/zt-ctmj4mhf-cFBNxIiZYs6SY9HgM9UAVw). -The WDL community also has an official [blog](https://dev.to/openwdl) where announcements are made. -### Asking a Question +If desired, previous versions of the spec can be found on the [GitHub branches +page][github-branches]. -- Search in the [discussions](https://github.com/openwdl/wdl/discussions) to see if the question has been asked already; if not, start a new discussion. -- Join our [Slack](https://join.slack.com/t/openwdl/shared_invite/zt-ctmj4mhf-cFBNxIiZYs6SY9HgM9UAVw) and ask in the `#support` channel. -- Search the [Bioinformatics Stack Exchange](https://bioinformatics.stackexchange.com/search?q=wdl) for previously answered questions, or ask a new question. -- Search the [Google Group](https://groups.google.com/a/openwdl.org/forum/#!forum/community) for previously answered questions. This group is largely inactive, so you're encoraged to ask new questions in one of the above places instead. +### Versioning -### Bugs and New Features +All products of the WDL project, including the specification, follow [semantic +versioning](https://semver.org). That being said, the version of the WDL _language_ and +the version of the WDL _specification_ are distinct: -- Search for an existing [issue](https://github.com/openwdl/wdl/issues). If your issue has not already been reported, create a new one. -- For feature reqeusts, you are encoraged to first start a discussion at one of the places listed above to get feedback from the community. -- If you'd like to provide a fix/implementation for an issue, please read about [contributing](#contributing) before submitting a [pull request](https://github.com/openwdl/wdl/pulls). +* 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. -### Documentation +* 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. -- [wdl-docs](https://docs.openwdl.org/en/stable/) -- [learn-wdl](https://github.com/openwdl/learn-wdl) -- [WDL Resources](https://support.terra.bio/hc/en-us/sections/360007274612-WDL-Resources) provided by Terra (a product of the Broad Institute) +### Contributing -## Published Workflows +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](CONTRIBUTING.md) guide. + +### Governance -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. +The WDL specification is entirely community driven; however, it is overseen by a +[Governance committee](GOVERNANCE.md). If you are interested in being involved in WDL +governance, please join the [Slack][join-slack] and post a message in the `#general` +channel. -- [Dockstore](https://dockstore.org/search?entryType=workflows&descriptorType=WDL&searchMode=files) -- [BioWDL](https://github.com/biowdl) -- [Broad Institute WARP](https://broadinstitute.github.io/warp/docs/get-started/) -- [GATK Workflows](https://github.com/gatk-workflows/) -- [ENCODE](https://www.encodeproject.org/pipelines/) -- [Terra](https://app.terra.bio) (requires registration) +### License -## Software and Tools +The WDL specification is made available to you under the permissive [BSD 3-Clause +License](./LICENSE). -### Execution Engines and Platforms +© 2024 The OpenWDL Developers -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](https://docs.aws.amazon.com/omics/latest/dev/workflows.html) | No | No | No | AWS | -| [Cromwell](https://github.com/broadinstitute/cromwell) * | Yes | Yes | Many | AWS Batch, Azure, GCP | -| [dxCompiler](https://github.com/dnanexus/dxCompiler) | Yes | No | No | DNAnexus | -| [MiniWDL](https://github.com/chanzuckerberg/miniwdl) | Yes | Yes | SLURM | AWS Batch | -| [Terra](https://terra.bio/) | No | No | No | Azure, GCP | - -\* Also see [WDL Runner](https://github.com/broadinstitute/wdl-runner), a script for launch WDL workflows on GCP using Cromwell - -### Grammars, Parsers, and Language Support - -- The WDL [parsers repository](https://github.com/openwdl/wdl-parsers/) provides grammar definitions in various formats and generated parsers for various languages. -- [MiniWDL](https://github.com/chanzuckerberg/miniwdl) provides python bindings for WDL as well as commandline tools for validation, linting, and generating workflow input templates. -- [WOMTool](https://cromwell.readthedocs.io/en/stable/WOMtool/) is a standalone Java tool for WDL parsing, validating, linting, and diagramming. -- [wdlTools](https://github.com/dnanexus/wdlTools) - provides 1) a parser Java/Scala library, based on the [ANTLR4 grammars](https://github.com/openwdl/wdl-parsers) grammars, for WDL draft-2, 1.0, 1.1, and 2.0; and 2) command-line tools for sytanx checking, type-checking, linting, code formatting (including upgrading from older to newer WDL versions), generating documentation, and executing WDL tasks locally. -- [sprocket](https://github.com/stjude-rust-labs/sprocket) a package manager and linter for WDL files. - -### IDE Support - -| IDE | Tool | -| ------------------ | ------------------------------------------------------------------------------------------------ | -| Emacs | [poly-wdl](https://github.com/jmonlong/poly-wdl) | -| Emacs | [wdl-mode](https://github.com/zhanxw/wdl-mode) | -| JetBrains | [Winstanly](https://plugins.jetbrains.com/plugin/8154-winstanley-wdl) | -| Sublime | [WDL Syntax Highlighter](https://github.com/broadinstitute/wdl-sublime-syntax-highlighter) | -| Vim | [vim-wdl](https://github.com/broadinstitute/vim-wdl) | -| Visual Studio Code | [WDL Syntax Highlighter](https://marketplace.visualstudio.com/items?itemName=broadinstitute.wdl) | - -### Documentation - -- [wdl-aid](https://github.com/biowdl/wdl-aid) generates documentation for the inputs of WDL workflows, based on the parameter_meta information defined in the WDL file. -- [wdldoc](https://github.com/stjudecloud/wdldoc) - -### Testing - -- [wdl-tests](https://github.com/openwdl/wdl-tests) is a collection of test cases for WDL implementations. A specification is provided for writing new tests that are compatible with automated testing frameworks. -- [Pytest-workflow](https://github.com/LUMC/pytest-workflow) is a implementation-agnostic workflow tester. It can be used with both Cromwell and MiniWDL. Uses pytest as the underlying test framework. Tests can be specified in either YAML format or python code. -- [Pytest-wdl](https://github.com/EliLillyCo/pytest-wdl) is a plugin for the pytest unit testing framework that enables testing of WDL tasks and workflows. Tests can be specified in either YAML format or python code. - -### Packaging - -- [miniwdl zip](https://miniwdl.readthedocs.io/en/latest/zip.html) generates a ZIP file including a given WDL source code file and any other WDL files it imports. The ZIP file can be supplied directly to miniwdl run, which can extract it automatically. -- [wdl-packager](https://github.com/biowdl/wdl-packager) packages a workflow and all of its imports into a zip file. The zip can be used as an imports zip package for cromwell. The utility can add non-WDL files (such as the license) to the zip package and provides options to package the zip in a binary reproducible way. - -## 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](CONTRIBUTING.md) guide. - -### RFC Process - -Submitted [pull requests](https://github.com/openwdl/wdl/pulls) are subject to the [RFC Process](RFC.md). -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](GOVERNANCE.md). -If you are interested in being involved in WDL governance, please join the [Slack](https://join.slack.com/t/openwdl/shared_invite/zt-ctmj4mhf-cFBNxIiZYs6SY9HgM9UAVw) and post a message in the `#general` channel. +[github-main]: https://github.com/openwdl/wdl +[github-branches]: https://github.com/openwdl/wdl/branches +[github-issues]: https://github.com/openwdl/wdl/issues +[join-slack]: https://join.slack.com/t/openwdl/shared_invite/zt-ctmj4mhf-cFBNxIiZYs6SY9HgM9UAVw +[wdl-docs]: https://docs.openwdl.org/en/stable