Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
ee4eaa0
Add plugin development side quest
pinin4fjords Jan 9, 2026
563b41d
Prettier
pinin4fjords Jan 9, 2026
68126be
Add editorconfig exception for Makefiles
pinin4fjords Jan 9, 2026
cc7f62e
Remove custom operators and factories from plugin development tutorial
pinin4fjords Jan 9, 2026
6689506
Update plugin development solution to remove operator usage
pinin4fjords Jan 9, 2026
a890483
Clarify extensionPoints description
pinin4fjords Jan 9, 2026
864b13c
Clean up plugin development solution files to match tutorial
pinin4fjords Jan 12, 2026
2a57b00
Address Adam's review comments on plugin development side quest
pinin4fjords Jan 14, 2026
4b2b637
Merge branch 'master' into plugin-development-side-quest
pinin4fjords Jan 14, 2026
f34c4c4
Remove 'Popular community plugins' section per Adam's feedback
pinin4fjords Jan 14, 2026
d975952
Clean up hyphen phrases and tone down language
pinin4fjords Jan 14, 2026
a196d96
Fix heading numbering and format tables
pinin4fjords Jan 14, 2026
9806b43
Add tip about type-safe configuration with annotations
pinin4fjords Jan 14, 2026
0ece040
Improve plugin development tutorial based on session feedback
pinin4fjords Jan 14, 2026
82797d4
Fix pipe syntax in random_id_example.nf starting file
pinin4fjords Jan 14, 2026
722c0dd
Merge branch 'master' into plugin-development-side-quest
pinin4fjords Jan 14, 2026
2c31a35
Fix writing style and update solutions in plugin development tutorial
pinin4fjords Jan 14, 2026
988acdd
Fix prettier formatting in plugin_development.md
pinin4fjords Jan 14, 2026
a3edfba
Convert plugin development side quest to Hello Plugins module
pinin4fjords Jan 15, 2026
dba78e0
Merge branch 'master' into plugin-development-side-quest
pinin4fjords Feb 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ indent_size = 2
[*.{py,md}]
indent_style = unset

# Makefiles require tabs
[Makefile]
indent_style = tab

# ignore nf-core files
[side-quests/solutions/nf-core/**]
charset = unset
Expand Down
3 changes: 3 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,16 @@ repos:
hooks:
- id: editorconfig-checker
alias: ec
exclude: hello-plugins/.*/nf-greeting/(COPYING|gradlew)$

- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
exclude_types:
- svg
exclude: hello-plugins/.*/COPYING$
- id: end-of-file-fixer
exclude_types:
- svg
exclude: hello-plugins/.*/COPYING$
3 changes: 3 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ side-quests/solutions/nf-core/**/*.yaml
side-quests/solutions/nf-core/**/*.json
side-quests/solutions/nf-core/**/*.html
side-quests/solutions/nf-core/**/*.yml

# Ignore auto-generated license files in plugin solutions
hello-plugins/**/COPYING
112 changes: 112 additions & 0 deletions docs/hello_plugins/00_orientation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Orientation

This page will help you set up your environment and navigate through the training.

!!! warning "Development sections are advanced"

Using existing plugins (Parts 1-2) is straightforward and valuable for all Nextflow users.

However, **developing your own plugins** (Parts 3-7) is an advanced topic.
It involves Java/Groovy programming, build tools, and software engineering concepts that may be unfamiliar if you come from a pure bioinformatics background.

Most Nextflow users will never need to develop plugins.
The existing plugin ecosystem covers the vast majority of use cases.
If development sections feel challenging, focus on Parts 1-2 and bookmark the rest for later.

---

## 1. Open the training environment

If you haven't yet done so, make sure to open the training environment as described in the [Environment Setup](../envsetup/index.md).

[![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/nextflow-io/training?quickstart=1&ref=master)

---

## 2. Verify Java installation

For plugin development (Parts 3-7), you need Java 21 or later.
Check that Java is available:

```bash
java -version
```

You should see Java 21 or later.
The training Codespace comes with Java pre-installed.

??? info "What are Java, Groovy, and Gradle?"

If these terms are unfamiliar, here's a quick primer:

**Java** is a widely-used programming language.
Nextflow itself is built with Java, and plugins must be compatible with the Java runtime.

**Groovy** is a programming language that runs on Java and is designed to be more concise and flexible.
Nextflow's DSL is based on Groovy, which is why Nextflow syntax looks the way it does.
Plugin code is typically written in Groovy.

**Gradle** is a build tool that compiles code, runs tests, and packages software.
You don't need to understand Gradle deeply; we'll use simple commands like `./gradlew build`.

The good news: you don't need to be an expert in any of these.
Many successful Nextflow plugin authors come from bioinformatics backgrounds, not Java development.
We'll explain the relevant concepts as we go, and the plugin template handles most of the complexity for you.

---

## 3. Move into the project directory

```bash
cd hello-plugins
```

---

## 4. Review the materials

```console title="Directory contents"
.
├── greetings.csv
├── main.nf
├── nextflow.config
└── random_id_example.nf
```

We have a simple greeting pipeline and materials for both using and developing plugins.

---

## 5. What we'll cover

This training is organized into two parts:

**Using plugins (Parts 1-2):**

- Understand plugin architecture and extension types
- Discover, install, and use existing plugins like `nf-hello`

**Developing plugins (Parts 3-7):**

- Create a plugin project with `nf-greeting`
- Implement custom functions
- Build, test, and install locally
- Add trace observers for lifecycle events
- Make plugins configurable
- Distribute your plugin

---

## 6. Readiness checklist

- [ ] My codespace is running
- [ ] I'm in the `hello-plugins` directory
- [ ] Java is installed (required for plugin development parts)

---

### What's next?

In the next section, you'll learn about plugin architecture and start using existing plugins.

[Continue to Part 1 :material-arrow-right:](01_plugin_basics.md){ .md-button .md-button--primary }
Loading