Ben Sherman
07/16/2026, 1:15 PMMaxime Garcia
07/16/2026, 1:22 PMNicolas Vannieuwkerke
07/16/2026, 1:39 PM<module>/<process>/<version>/ and referencing those specific versions would prevent code duplication here while still being able to use different versions.Ben Sherman
07/16/2026, 2:45 PMBen Sherman
07/16/2026, 2:46 PMNicolas Vannieuwkerke
07/16/2026, 2:47 PMSimon Pearce
07/16/2026, 4:06 PMBen Sherman
07/16/2026, 6:51 PMMaxime Garcia
07/16/2026, 7:16 PMSimon Pearce
07/16/2026, 7:29 PMMaxime Garcia
07/16/2026, 7:30 PMBen Sherman
07/16/2026, 9:04 PMArthur
07/16/2026, 11:19 PMmodules vs workflows vs subworkflows vs processes it’s all so jumbled. Maybe it is too late to pivot but I would move from modules -> components as the encapsulating term and then just have process/module (pick ONE) vs workflow as the distinction within that
• subworkflow configs are real and necessary IMO. I will continue to fight on the fact that the flexibility of setting via config is one of the huge draws of nextflow over some other workflow managers. However given that subworkflow config should be setting code that needs to generally be fixed values to make the modules work as intended when running together (e.g. maybe a reads data pipeline that is specifically designed to handle CRAM would need to set the relevant flags on several modules) there is some scope to find a way to concretize those values in the subworkflow itself I think.
• To be of any real use over nf-core/subworkflows this will need to support cross namespace dependencies (i.e. a mynamespace/custom_subwf should be able to depend on nf-core/fastqc and otherorg/customproc assuming they are both in the registry tooBen Sherman
07/17/2026, 3:23 AMnextflow module run vs nextflow run)Arthur
07/17/2026, 3:28 AMnf-core/modules is probably the most widely used existing context of the term module I predict it will be a source of confusion.
However if that choice is locked in on the nextflow side then I think we should in fact consider renaming the nf-core terminology to avoid having one term refer to two subtly different concepts,Simon Pearce
07/17/2026, 6:08 AMnf-core/components for the repo name...Simon Pearce
07/17/2026, 6:35 AM•I agree entirely with this. There are 19 nextflow.config's in subworkflows/nf-core/**/nextflow.config. These are mostly setting at least one ext.args, sometimes just ext.prefix. We make our modules to be super configurable (again, because Nextflow lets you do that via config), which sometimes makes it a PITA to actually use the module in a workflow, as you have to set a bunch of things that aren't strictly required by the tool, but in practice are. Or you are trying to use samtools view, which has many different ways you can actually use itconfigs are real and necessary IMO. I will continue to fight on the fact that the flexibility of setting via config is one of the huge draws of nextflow over some other workflow managers. However given that subworkflow config should be setting code that needs to generally be fixed values to make the modules work as intended when running together (e.g. maybe a reads data pipeline that is specifically designed to handle CRAM would need to set the relevant flags on several modules) there is some scope to find a way to concretize those values in the subworkflow itself I think.subworkflow
Nicolas Vannieuwkerke
07/17/2026, 7:55 AMArthur
07/17/2026, 8:05 AMsubworkflow configs as they currently stand:
• they have to be manually wired in
• even then they don’t work out-of-the-box for aliased subworkflows (related nf issue)
• fragile if users can and do want to modify them
The issue with trying to take some of that configuration into the workflow itself:
• if it is e.g. ext.args then users may legitimately want to and be safely able to extend them and the workflow function as intended (think customising an optional report format )
• modules would likely need to be rewritten to take that kind of content as inputs
There is the possibility to solve the second one of those by doing something dumb like injecting the required args into a meta map of the channel input and then documenting that users need to wire up their config but that is a horrifically janky and laborious trick.Ben Sherman
07/17/2026, 12:57 PMGiven thatis probably the most widely used existing context of the termnf-core/modulesI predict it will be a source of confusion.module
However if that choice is locked in on the nextflow side then I think we should in fact consider renaming theActually I think we are on track to better align Nextflow and nf-core on these terms For a long time Nextflow defined a "module" as "a script included by another script". With these recent developments we are now defining it specifically as a standalone process or workflow, much closer to nf-core's definition Based on the current ADR, nf-core would move all "subworkflows" into theterminology to avoid having one term refer to two subtly different concepts,nf-core
modules directory and just call them "workflow modules" vs "process modules". Then the repo name nf-core/modules actually becomes more accurateBen Sherman
07/17/2026, 1:00 PMext.args, I've talked to many folks about this but I still don't have a good sense of how often these default settings could be baked into the process definition. They are always defined at the pipeline level but does that always mean that they are pipeline-specific or user-specific?
In cases where they are, increasingly I think we will need to specify them somehow in the samplesheet instead of config. Since that is normally where per-sample inputs are specifiedSimon Pearce
07/17/2026, 1:05 PMSimon Pearce
07/17/2026, 1:06 PMSimon Pearce
07/17/2026, 1:06 PMSimon Pearce
07/17/2026, 1:09 PMSimon Pearce
07/17/2026, 1:10 PMSimon Pearce
07/17/2026, 1:10 PMSimon Pearce
07/17/2026, 1:10 PMNicolas Vannieuwkerke
07/17/2026, 1:25 PMBen Sherman
07/17/2026, 1:30 PMBen Sherman
07/17/2026, 1:36 PMA lot of the time the ext.args is NOT being set in a sample specific way, I'd say 95% of the time it is being set to be the same for every sampleI noticed this as well. In that case it could be a pipeline parameter (or part of a map parameter so you don't have to add 100 params). But in these 95% of cases, does the user expect to be able to make it dynamic per-sample if they want? Because if it has the potential to be per-sample then it has to be modeled in the samplesheet from the beginning That is a primary difference of specifying inputs via params vs ext config, you have to model it differently depending on how dynamic it could be
Simon Pearce
07/17/2026, 1:53 PMmeta.id from the previous process. e.g. bam or vcf files where they have inside them a value which needs to be selected on.
See e.g. github.com/nf-core/sarek/blob/…/mutect2.config#…
// PAIR_VARIANT_CALLING
withName: 'MUTECT2_PAIRED' {
ext.args = { params.ignore_soft_clipped_bases ?
"--dont-use-soft-clipped-bases true --f1r2-tar-gz ${task.ext.prefix}.f1r2.tar.gz --normal-sample ${meta.patient}_${meta.normal_id}" :
"--f1r2-tar-gz ${task.ext.prefix}.f1r2.tar.gz --normal-sample ${meta.patient}_${meta.normal_id}" }
}
Now in this case, the --normal-sample ${meta.patient}_${meta.normal_id} could easily be incorporated into the module itself.
And especially the optional output file *.f1r2.tar.gz should be being controlled by a boolean as to whether to generate itSimon Pearce
07/17/2026, 1:54 PMbecause if it has the potential to be per-sample then it has to be modeled in the samplesheet from the beginningWell, at the moment that is not true, that is a design decision you are trying to enforce
Ben Sherman
07/17/2026, 1:59 PMSimon Pearce
07/17/2026, 2:31 PMSimon Pearce
07/17/2026, 2:32 PMArthur
07/18/2026, 1:08 AMmashehu
07/21/2026, 11:42 AMTo be of any real use over nf-core/subworkflows this will need to support cross namespace dependencies (i.e. a mynamespace/custom_subwf should be able to depend on nf-core/fastqc and otherorg/customproc assuming they are both in the registry tooYou can already do that with nf-core https://nf-co.re/blog/2025/tools-3_3#installing-subworkflows-with-components-from-different-remotes @Arthur
Arthur
07/21/2026, 11:51 AM