How to contribute
There are many ways to contribute to nf-core. This can be through pipelines, pipeline components, documentation, tooling, or even just feature requests or bug reports.
This page provides a high-level overview and best practices to help you contribute to nf-core quickly.
Communication
Slack and GitHub Issues and Pull Requests are the primary ways to communicate with others in the nf-core community.
Every pipeline has a dedicated channel on Slack. You can search pipeline names in the channel browser.
nf-core Slack and GitHub
See Join nf-core for instructions on how to join the nf-core Slack.
After joining Slack, join the nf-core GitHub organization. The GitHub organization is open to everyone and gives you reviewing and merging rights on most repositories.
Join the Slack workspace before joining the GitHub organization.
Asking for help
If you have questions and don’t know where to start, ask in the help Slack channels:
Issues
To report a bug or request a new feature, open an issue on the relevant GitHub repository.
Bug reports
Include enough detail for someone to reproduce the issue:
- Include log files (
.nextflow.logis a common one for pipelines) - Provide the whole error message
- Give enough information to reproduce the bug, such as the command used for execution
Feature requests
Include enough context for the community to evaluate your request:
- Include links to other resources (for example, for adding a new tool to a pipeline, a link to the tool’s code repository)
- Include links to existing discussions, such as on Slack
Contributing
Contributions to nf-core are made through forks, branches, and pull requests on GitHub.
Forks
When working on nf-core projects, develop on a fork of the repository.
To fork a repository, click Fork in the top-right corner. This creates a copy of the repository under your username.
We recommend naming the forked repository nf-core-<original name>, to distinguish it from the original repository.
For example, nf-core/rnaseq would become <your username>/nf-core-rnaseq.
Branches
On your fork, create a git branch for your changes.
Pull requests
Everyone is welcome to open a pull request from their fork into the nf-core GitHub repositories. As a general rule, another community member must review all pull requests.
Be patient when waiting for a review. nf-core volunteers review pull requests in their spare time.
Here are some tips to get faster reviews:
- Keep your pull requests small: one or two modified files, or less than 100 lines of code, will more likely be reviewed than 100 files with 1000s of lines of code changes.
- Request reviews on Slack: use the #request-review channel on Slack to get visibility of your request.
- Trade reviews: if you request a review, review someone else’s — they will likely reciprocate! Track other requests on the #request-review channel.
For detailed guidance on contributing to specific nf-core repositories, see:
Starting a new pipeline?
nf-core is not a registry of Nextflow pipelines. Collaboration is a core requirement. Before writing any code, see Contribute new pipelines.
Reviewing
Reviews and comments can be technical (code), conceptual (for example, purpose/background/approach/domain-specific), or both.
Who can review
Everyone is welcome to review or leave a comment on an nf-core pull request. You do not need to be in the nf-core community to give feedback. You also do not need to be in the nf-core GitHub organization (although this is recommended).
However, if you review a PR about a conceptual question, another community member must also provide a technical review. Seek reviews from community members outside your development team.
How to review
Be polite and constructive in your comments. Our community has a diverse range of backgrounds, cultures, and expertise.
Help make a smooth reviewing process by:
- Ensuring replies follow the code of conduct
- Making one review with multiple comments using the Start review button
- Avoid the Add single comment button on the GitHub Files Changed tab
- Leaving descriptive comments with useful suggestions, not vague observations
- Making direct code suggestions on specific lines, avoid just describing your suggestions
- Preferring Comments review types rather than Request changes
- Request changes blocks merging until the specific reviewer approves the PR
- Comments allows other community members to re-review and finish the review on your behalf
- Trying out Conventional comments for effective feedback categorization
Reviewing checklists
See the following for general reviewing checklists:
When everything else fails
As a general rule, ask the wider community first. Collectively, the nf-core community can answer most questions.
Need specialist help?
If the community can’t help, reach out to the relevant team:
- Maintainers team for issues with modules, pipelines, or test configs
- Outreach team for questions about nf-core events or the bytesize series
- Infrastructure team for problems with the nf-core template, tooling, GitHub Actions, or AWS
- Core team for critical decisions affecting the entire community, or anything requiring passwords
- Docs team for questions about nf-core documentation
- Safety team for interpersonal conflict with another community member
See the Governance page for an overview of the community’s organizational structure.