---
# System prepended metadata

title: pipeline release review suggestions
tags: [guidelines, pipeline, documentation]

---

---
tags: documentation,pipeline,guidelines
---


# pipeline release review suggestions

## Do

- Do local scripts in `bin/` have author and license embedded?
    - and license is not GPL
- Do all local modules have docker/singularity/conda declarations?
- Do conda tool declarations have versions?
- Do local modules report versions (if applicable)?
    - Simple `grep` operations not necessary, more complex `awk` 
- Should any local modules be in nf-core/modules?
- Is documentation sufficient (usage, output, nextflow_schema.json)?
    - nextflow_schema.json: check if types are correct and that `default` and `enum` are used where applicable
- Are there any typos in the documentation  (usage, output, nextflow_schema.json)
- Is CHANGELOG sufficiently filled in?
    - Check version system is three-point SemVer e.g. 2.1.0
- Check no overly non-template components (no read the docs, entirely custom logo etc.)
- Check for general code readability
- Check for possible code bugs
- Check for consistency in parameters 
    - i.e. `snake_case`
    - All boolean parameters evaluate to `false` (e.g. bad: `params.run_step = true`, good: `params.skip_step = false` )
- Check citation formatting consistency
- Check manifest includes DOI (if present) etc.

## Don't have to do

- Comment on scientific content (unless you _really_ know)
- Major code optimisation
    - You _can_ suggest small code optimisations
    - Larger ones you can recommend, but shouldn't necessary _require_ for release (hopefully this should have been covered during development PRs)

## Common errors to look out for during code review

General: issues as reported on @Midnighter's [https://midnighter.github.io/nextflow-gotchas/](https://midnighter.github.io/nextflow-gotchas/)

Rike (loose and imprecise brain dump for now):
- Is `groupTuple` used with `size` or `groupKey`?
    > _Note_: If not, bottlenecks are created, because the grouping operation will wait until everything upstream is processed. Providing a size will allow the group to advance as soon as the group size is reached. `groupKey`can be used for variable group sizes. For documentation, see:
    - https://www.nextflow.io/docs/latest/operator.html?highlight=grouptuple#grouptuple
    - https://github.com/nextflow-io/nextflow/issues/796
- meta maps:
    - When defining a new map, is `def` used?
    - When adding fields to the meta map, is the map either duplicated by creating a new meta map object and writing all fields into it or is `+` used? More importantly: `meta.clone` only does a shallow copy of the object that can lead to weird side effects, where elements that may have mismatching meta maps  end up in the same channel causing issues down the road


Rike:
- paths to aws megatests input data paths should if at all possible be stored in a samplesheet in test-datasets
- they should use s3:// prefix
