1
1
# Best Practices
2
2
3
- Below are a set of recommended good practices to keep in mind when writing a
3
+ The following are a set of recommended good practices to keep in mind when writing a
4
4
Common Workflow Language description for a tool or workflow. These guidelines
5
- are presented for consideration on a scale of usefulness: more is better, not
5
+ are presented for consideration on a scale of usefulness: although more is better, not
6
6
all are required.
7
7
8
8
- No ` type: string ` parameters for names of input or reference
9
9
files/directories; use ` type: File ` or ` type: Directory ` as appropriate.
10
10
11
11
- A CWL document (in conjunction with any external components like ` Dockerfile ` s) is software code.
12
12
Workflow developers should be aware that the usual rules of software licensing apply to this
13
- document. For example if the workflow is shared publicly, licensing terms have to be clear so that
14
- a future user can understand under what conditions they can run the workflow, modify it and/or
15
- combine it with other workflows. For this reason please consider including a license field in the
13
+ document. For example, if the workflow is shared publicly, licensing terms must be clear so that
14
+ a future user understands under what conditions they can run the workflow, modify it and/or
15
+ combine it with other workflows. For this reason, please consider including a license field in the
16
16
document. The authors of this guide urge you to choose a pre-existing license rather than trying
17
17
to write your own (see the link below to learn more about choosing a license), and our recommended
18
18
practice is to choose a license that allows for re-use by anyone, e.g. [ Apache 2.0] [ apache-license ] .
19
19
20
20
If possible, the license should be specified with its corresponding [ SPDX identifier] [ spdx ] .
21
- Construct the metadata field for the licence by providing a URL of the form
21
+ Construct the metadata field for the license by providing a URL of the form
22
22
` https://spdx.org/licenses/[SPDX-ID] ` where ` SPDX-ID ` is taken from the list of identifiers
23
23
linked above. See the example snippet below for guidance. For non-standard licenses without an SPDX
24
24
identifier, provide a URL to the license.
@@ -38,7 +38,7 @@ all are required.
38
38
[ the Metadata and Authorship section of this User Guide] ( ../topics/metadata-and-authorship.md ) .
39
39
40
40
- Include [ attribution information] [ license-example ] for the author(s) of
41
- the CWL tool or workflow description. Use unambiguous identifiers like
41
+ the CWL tool or workflow description. Use unambiguous identifiers like
42
42
[ ORCID] [ orcid ] .
43
43
44
44
- In tool descriptions, list dependencies using short name(s) under
@@ -60,23 +60,23 @@ all are required.
60
60
See also ` iana:text/plain ` , ` iana:text/tab-separated-values ` with
61
61
` $namespaces: { iana: "https://www.iana.org/assignments/media-types/" } ` .
62
62
[ Full IANA media type list] [ iana-types ] (also known as MIME types). For
63
- non-bioinformatics tools use or build an appropriate ontology/controlled
63
+ non-bioinformatics tools, use or build an appropriate ontology/controlled
64
64
vocabulary in the same way. Please edit this page to let us know about it.
65
65
66
66
- Mark all input and output ` File ` s that are read from or written to in a
67
67
streaming compatible way (only once, no random-access), as ` streamable: true ` .
68
68
69
69
- Each ` CommandLineTool ` description should focus on a single operation
70
70
only, even if the (sub)command is capable of more. Don't overcomplicate your
71
- tool descriptions with options that you don't need/ use.
71
+ tool descriptions with options that you don't need or use.
72
72
73
73
- Custom types should be defined with one external YAML per type
74
74
definition for re-use.
75
75
76
- - Include a top level short ` label ` summarising the tool/workflow.
76
+ - Include a top- level short ` label ` summarising the tool/workflow.
77
77
78
- - If useful, include a top level ` doc ` as well. This should provide a
79
- longer, more detailed description than was provided in the top level ` label `
78
+ - If useful, include a top- level ` doc ` as well. This should provide a
79
+ longer, more detailed description than was provided in the top- level ` label `
80
80
(see above).
81
81
82
82
- Use ` type: enum ` instead of ` type: string ` for elements with a fixed
0 commit comments