You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: adr/20251114-module-system.md
+24-24Lines changed: 24 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,13 +11,13 @@
11
11
### Version 2.7 (2026-03-09)
12
12
-**Renamed `.checksum` to `.module-info`**: Leaves room for additional properties in the future
13
13
-**Removed `@` prefix from module scopes**: Local modules are distinguished from remote modules by presence/absence of `./` prefix
14
-
-**Removed version pinning from config**: Installed module versions are now inferred from the `meta.yaml` of each module in the `modules/` directory instead of being declared in `nextflow.config`
14
+
-**Removed version pinning from config**: Installed module versions are now inferred from the `meta.yml` of each module in the `modules/` directory instead of being declared in `nextflow.config`
15
15
16
16
### Version 2.6 (2026-01-28)
17
17
-**Removed module parameters**: Module parameters specification moved to separate spec document.
18
18
19
19
### Version 2.5 (2026-01-23)
20
-
-**Module parameters**: Replaced structured tool arguments with general module parameters defined in `meta.yaml`
20
+
-**Module parameters**: Replaced structured tool arguments with general module parameters defined in `meta.yml`
21
21
-**Simplified tools section**: Removed `args` property from tools; tool arguments now configured via module parameters
22
22
-**Simplified `requires` block**: Removed `plugins`, `modules`, and `subworkflows` sub-properties; `requires` now only contains `nextflow` version constraint
23
23
-**Process modules focus**: Removed sub-workflow references; spec is now focused on process modules only
@@ -74,7 +74,7 @@ include { MY_PROCESS } from './modules/my-process.nf'
74
74
75
75
**Module Naming**: Scoped modules `scope/name` (e.g., `nf-core/salmon`, `myorg/custom`). Local paths supported for backwards compatibility. No nested paths with the module are allowed - each module must have a `main.nf` as the entry point.
76
76
77
-
**Version Resolution**: Installed module versions are inferred from the `meta.yaml` of each module in the `modules/` directory. If a module is not present locally, the latest available version is downloaded from the registry.
77
+
**Version Resolution**: Installed module versions are inferred from the `meta.yml` of each module in the `modules/` directory. If a module is not present locally, the latest available version is downloaded from the registry.
78
78
79
79
**Resolution Order**:
80
80
1. Check local `modules/scope/name/` exists
@@ -86,7 +86,7 @@ include { MY_PROCESS } from './modules/my-process.nf'
86
86
| Local State | Action |
87
87
|-------------|--------|
88
88
| Missing | Download latest from registry |
89
-
| Exists, checksum valid | Use local module (version from `meta.yaml`) |
89
+
| Exists, checksum valid | Use local module (version from `meta.yml`) |
90
90
| Exists, checksum mismatch |**Warn**: locally modified, will NOT replace unless `-force` is used |
91
91
92
92
**Key Behaviors**:
@@ -120,7 +120,7 @@ registry {
120
120
}
121
121
```
122
122
123
-
**Module Spec** (`meta.yaml`):
123
+
**Module Spec** (`meta.yml`):
124
124
```yaml
125
125
name: nf-core/bwa-align
126
126
version: 1.2.4 # This module's version
@@ -158,7 +158,7 @@ This avoids introducing new notation that would require additional parser suppor
158
158
159
159
**Module Resolution**:
160
160
161
-
Installed module versions are inferred from the `meta.yaml` file for each module in the `modules/` directory.
161
+
Installed module versions are inferred from the `meta.yml` file for each module in the `modules/` directory.
162
162
163
163
### 3. Unified Nextflow Registry
164
164
@@ -190,7 +190,7 @@ Note: The `{name}` parameter includes the namespace prefix (e.g., "nf-core/fastq
190
190
191
191
**Artifact Types**:
192
192
- **Plugins**: JAR files with JSON metadata, resolved at startup
193
-
- **Modules**: Source archives (.nf + meta.yaml), resolved at parse time
193
+
- **Modules**: Source archives (.nf + meta.yml), resolved at parse time
- Type-specific handling maintains separation of concerns
497
497
498
-
**Why infer versions from `meta.yaml` instead of pinning in a separate file?**
498
+
**Why infer versions from `meta.yml` instead of pinning in a separate file?**
499
499
- Simple: install a version once and it is captured in the module files
500
-
- Reproducibility via committing the `modules/` directory (including `meta.yaml`) to the project git repository
500
+
- Reproducibility via committing the `modules/` directory (including `meta.yml`) to the project git repository
501
501
- Reduces configuration burden: no need to keep config in sync with installed state
502
502
503
503
**Why parse-time resolution?**
@@ -520,12 +520,12 @@ project-root/
520
520
521
521
**Positive**:
522
522
- Enables ecosystem-wide code reuse
523
-
- Reproducible workflows via committing the `modules/` directory (including `meta.yaml`) to the project git repository
523
+
- Reproducible workflows via committing the `modules/` directory (including `meta.yml`) to the project git repository
524
524
- Centralized discovery and distribution via unified registry
525
525
- Minimal operational overhead (single registry for both plugins and modules)
526
526
- Module scoping enables organization namespaces and private registries
527
527
- Local `modules/` directory provides project isolation
528
-
- No version duplication: installed `meta.yaml` is the single source of truth
528
+
- No version duplication: installed `meta.yml` is the single source of truth
529
529
- Simple module structure: each module has single `main.nf` entry point
530
530
531
531
**Negative**:
@@ -548,7 +548,7 @@ project-root/
548
548
549
549
## Appendix A: Module Schema Specification
550
550
551
-
This appendix defines the JSON schema for module `meta.yaml` files. The schema maintains backward compatibility with existing nf-core module metadata patterns while supporting the new Nextflow module system features.
551
+
This appendix defines the JSON schema for module `meta.yml` files. The schema maintains backward compatibility with existing nf-core module metadata patterns while supporting the new Nextflow module system features.
"description": "Schema for Nextflow module meta.yaml files, supporting both nf-core community patterns and the Nextflow module system",
5
+
"description": "Schema for Nextflow module meta.yml files, supporting both nf-core community patterns and the Nextflow module system",
6
6
"type": "object",
7
7
"properties": {
8
8
"name": {
9
9
"type": "string",
10
-
"description": "Module name. Can be a simple identifier (e.g., 'fastqc', 'bwa_mem') for local/nf-core modules, or a fully qualified scoped name (e.g., 'nf-core/fastqc', 'myorg/custom') for registry modules. Note: The '@' prefix is only used in DSL include statements, not in meta.yaml",
10
+
"description": "Module name. Can be a simple identifier (e.g., 'fastqc', 'bwa_mem') for local/nf-core modules, or a fully qualified scoped name (e.g., 'nf-core/fastqc', 'myorg/custom') for registry modules.",
Publishing requires authentication via the `NXF_REGISTRY_TOKEN` environment variable or `registry.apiKey` in the Nextflow configuration. The module must include `main.nf`, `meta.yaml`, and `README.md` files.
389
+
Publishing requires authentication via the `NXF_REGISTRY_TOKEN` environment variable or `registry.apiKey` in the Nextflow configuration. The module must include `main.nf`, `meta.yml`, and `README.md` files.
390
390
391
391
Use `-dry-run` to validate your module structure without uploading.
0 commit comments