---
# System prepended metadata

title: nf-core retreat 2022
tags: [meetings, agenda, retreat, core]

---

---
title: nf-core retreat 2022
tags: meetings,core,agenda,retreat
---

![nf-core core retreat](https://nf-co.re/logo/retreat)

> _Stockholm, September 2022_

::: info
:writing_hand:  **Please add anything here that we should discuss!**

Even if it's just a heading (`## Something`) it's good to have a placeholder.
:::

::: success
:bulb: **Feel free to edit / add thoughts to anything that's already here.**

For smaller things, you can add comments on the right / in "View mode".
:::

**Table of contents**
[TOC]

# Misc Action Points

- [ ] Look into disabling permissions to fork
- [x] Protect `module` branch on test-datasets
- [ ] Investigate separate modules test-data from pipeline test-dataset?
- [x] Set up Forem
    - Has been moved to a Seqera ticket for Developer Advocates to follow up. No github issue.

# ✅ Restructuring Teams / nf-core organisation

## Action points

- [ ] Make / check email forwarders (https://github.com/nf-core/nf-co.re/issues/1248)

## Examples of other projects

- [scverse](https://scverse.org/people/) 

## Suggested team structure

```mermaid
flowchart BT
    core --> steering
    infrastructure --> core
    outreach --> core
    ambassadors --> outreach
    maintainers --> core
    safety --> steering
```

### Steering

Reword: "Additional responsibilities to ensure the smooth running of the project"

- Members
    - Phil
    - Gisela
    - Harshil
    - Ellen
    - Evan
- Tasks
    - Finance
    - Personnel
    - Large initiatives
    - Big picture planning

### Core

- Members:
    - @apeltzer: Alexander Peltzer
    - @christopher-hakkaart: Chris Hakkaart
    - @drpatelh: Harshil Patel
    - @ewels: Phil Ewels
    - @FriederikeHanssen: Friederike Hanssen
    - @ggabernet: Gisela Gabernet
    - @jfy133: James A. Fellows Yates
    - @JoseEspinosa: Jose Espinosa-Carrasco
    - @mashehu: Matthias Hörtenhuber
    - @maxulysse: Maxime U. Garcia
    - @mirpedrol: Júlia Mir Pedrol
    - @mribeirodantas: Marcel Ribeiro-Dantas
- The core team will be responsible for:
    - Day to day decisions for community.
        - Decisions by committee / vote
            - If there is no majority, decisions will be made by the steering committee
    - Administrative access to everything
    - To meet annually (before the first hackathon of each year)
    - To track & decide on new pipeline requests
- Membership
    - By invitation, based on merit / involvement in the community
- Representation
    - Will aim to have representation that from different genders, geography, and academia + industry + clinical.

### Infrastructure 

- Responsibilities
    - Framework development (tools, website, megatests..)
- Members:
    - Lead: Phil
    - Julia
    - Matthias H
    - ..Fabien?

### Outreach

- Members:
    - Leads
        - Chris
        - Marcel
        - Fran
    - Phil
    - Maxime
    - Yuk Kei
    - Edmund
    - Paul Cantalupo
    - Abhinav
- Many current members should be ambassadors
- Responsibilities
    - Bytesize
    - Hackathons/Training
    - Ambassador program
    - Twitter by leads (bytesize,...)
    - Youtube

### Safety

- Members:
    - Saba Nafees
    - Michael Heuer
    - Cris Tuñí
- Write proper remit / responsibilities
    - Term / meetings / governence etc
- Responsibilities
    - Keep CoC up to date
    - Available at events
    - Slack conduct
    - Being quick to respond
    - Give recommendations to steering committee


### Maintainers

- Current situation: Big group, write access to all repos
- Members:
    - [x] Harshil (core)
    - [x] Maxime (core)
    - [x] Rike (core)
    - [x] James (core)
    - [x] Gisela (core)
    - [x] Alex Peltzer (core)
    - [x] Matthias Hörtenhuber (core)
    - [ ] Matthias de Smet
    - [ ] Edmund Miller?
    - [ ] Gregor Sturm
    - [ ] Mahesh
    - [ ] Rob Syme
    - [ ] Moritz
    - [ ] Daniel Lundin?
    - [ ] Louisa Perelo
    - [ ] Anders Jemt
    - [ ] Jasmin
    - [ ] Nicolas Vannieuwkerke
    - [ ] Christopher Mohr?
    - [ ] Adam Talbot
    - [ ] Simon Thios
    - [ ] Matthieu Muffato
    - [ ] Daniel Straub?
    - [ ] Sabrina Krakau?
    - [ ] Anders Sune Pedersen?
    - [ ] Simon Pearce?
- Remove write access from `@nf-core/all`
    - People fork pipeline/bioconda to nf-core
- Need to figure out how to maintain the list of maintainers
    - Top list of GitHub contributors from nf-core
        - Top 50 in the past year
    - Manual added by us; rotate every 6 months to people who don't volunteer etc.
    - People request
- Responsibilities
    - Review PRs
    - Review release PRs (including first release)
    - Module reviews
    - Make sure the right people have access to the right repos (core)
    - check #github-invitations
    - Manage test data
- Repo access:
    - nf-core members: ?
    - nf-core/all write access to
        -  modules
        -  configs
    - nf-core/maintainers: write access to all repos
    - nf-core/core: admin access


### Ambassadors

:point_right: **Suggestion:** Trim down the outreach team to a much smaller number of active members. Move others who are keen but not engaged in organisation into a new _Ambassadors_ group and encourage them to do their own local outreach.

- Lead: outreach team
- Nextflow _and_ nf-core
    - Name: _Nextflow Ambassadors_
    - Report to Outreach team
    - List on the nf-core website
- Tasks
  - Write blog posts
      - Personal / Medium / Main nf-core / Nextflow
      - "Towards Data Science": Medium (Suggested by @mribeirodantas)
  - Local events
      - Talks (conferences)
      - Training
- Manage list
    - Apply on website? Slack?
    - Recommended (mentorships?)
    - Onboarding
        - New ambassadors get an ambassador mentor
    - Minimum 2 contributions per year
        - Post on Forem-like platform
        - Look into adding Tweets to Forem?
            - Twitter HashTag `#NextflowAmbassador`
        - Could be about a
            - Training event
            - Poster/Talk
    - Deactivate if no longer active (6 months?)
- Frequency
  - Meeting once every six months
  - On / off activity is fine.
- Would require a 'ambassador' packet: 
    - Training material 
    - Templates (posters, slides, etc.)
    - Stickers welcome pack
    - Swag box after a year if did stuff
- Managed by outreach team
- Shared slack channel, no mailing list, no team e-mail
- Sign a CLA

# ✅  Governance

## Action points

- [ ] Write the teams for the website (https://github.com/nf-core/nf-co.re/issues/1249)
- [ ] Write governance (https://github.com/nf-core/nf-co.re/issues/1254)

## Reading:

- [Meritocratic Governance Model](http://oss-watch.ac.uk/resources/meritocraticgovernancemodel)
- [Benevolent Dictator Governance Model](http://oss-watch.ac.uk/resources/benevolentdictatorgovernancemodel)
- [How To Draw Up A Governance Document](http://oss-watch.ac.uk/resources/governancemodels#how-to-draw-up-a-governance-document)
- scverse [teams](https://scverse.org/people/) and [roles](https://scverse.org/about/roles/)


# ✅ Guidelines

Review the nf-core guidelines.

## Action points

- [ ] Rewrite guidelines page, use ToC list with detailed paragraph for each item.
- [x] test-datasets guidelines https://github.com/nf-core/nf-co.re/pull/1253

## Possible additions

### Pipelines

- Primary development must be on the nf-core fork
    - Must have the nf-core fork set as the head repo
    - When forking to your org / user, issues + wiki + projects should be disabled
- All documentation must be on the nf-core repository and include at least `docs/usage.md`, `README.md` and `docs/output.md`
    - Other markdown docs files in the repo are ok (soon)
    - There should not docs hosted in any other locations (eg. readthedocs)
- Software/containers in the pipeline must be versioned
    - ideally released, otherwise at least a git commit hash; no `latest`,`dev` etc
- `-profile test`
    - It must exist and work
    - It should be comprehensive as possible
        - It should run as much of the pipeline as possible
        - It can use tiny test data
    - [ ] Add a lint test to check that `-profile test` exists (https://github.com/nf-core/tools/issues/1837)
- Bundled scripts
    - Pipelines must not include scripts that were not written specifically for the pipeline
    - Instead, if absolutely required, package on bioconda and pull in the container
- DOIs: Stick with Zenodo
    - :point_right: Continue discussion here: https://github.com/nf-core/tools/issues/365
    - [ ] Automate DOI creation for new pipelines
    - [ ] [GitHub actions](https://github.com/ivotron/zenodo/)
    - [ ] New lint test - check DOI exists
    - [ ] Pre-reserve DOIs?
    - [ ] Check if CFF file has messed up Zenodo
- DOIs for modules?
    - No
- Move cloud usage to a must instead of should?
    - Sounds difficult for some pipelines
    - No

## Possible removals / changes

- A responsible contact person / GitHub username

## Enforcement

We have no official policy of what we will do if people don't follow these rules. It would be good to walk through this.

- Don't join nf-core in the first place
    - Welcome to use tools and collaborate
    - Proper citation: Don't call nf-core/pipeline and say "uses" rather than "is"
    - Generate pipeline template without the nf-core branding
    - Not listed on the nf-core website, but can add to awesome-nextflow
- What to do if guideline violation after adding
    - Resolve with the core team through discussion
    - Reserve the right to remove the pipeline from the nf-core website (or archive)
        - The nf-core community / core team "owns" the repo
    - Core team makes recommendations to Steering Committe, who get the final say
    - Point to code of conduct

# Configs

James and Maxime to discuss - new checklists / recommendations for reviewing.

# ✅ Test data

- New requirement: YAML file in each test data directory
    - Structured metadata about those files (e.g. yaml)
    - Origin
        - Tools (list)
        - Biological sources (list)
            - DOI / accession
    - Licence
        - Need policies on being compatible with MIT
        - Marcel to investigate
- New guidelines for adding test data
    - As small as possible
    - Use what's there if possible
    - Small genome size
        - SARS-CoV2
        - Human Chr 21
        - Prokaryotes 
            - bacteroides_fragilis 
            - candidatus_portiera_aleyrodidarum
            - haemophilus_influenzae
    - If it can be _quickly_ generated by an upstream module, don't add it
        - If many tests, or many steps, or heavy cpu, store the static data
        - Can test a module together with a previous step module. That's ok :+1: 
    - Updates: In a new folder, don't modify in place
        - Can we reverse map test data :point_right: modules?
            - If so, we can test all affected modules when updating test data
            - Don't need to keep multiple similar copies of test data :+1: https://github.com/nf-core/test-datasets/issues/626
- :point_right: Move modules to a new repo
    - nf-core/modules-test-data https://github.com/nf-core/test-datasets/issues/625
- Future idea: possibility of using Refgenie for handling all test data as well

# ✅ Archiving Policies

We've never really had a formalised method for that, it'd be good to have one

## Ideas

- How to reduce risk of abandoned pipelines in the first place
    - Publish then stop maintaining
    - Not nice to have lots of unresolved issues/bugs
- What is the criteria to archive a pipeline? 
    - Time since last commit?
    - Lack of issue response
    - Response on slack? (i.e. lots of pipeline channels have been completely silent since last hackathon)
- How to bring an archived pipeline out of retirement if interest renewed

## Policies

- What does archived mean
    - No further updates
    - Users should move away to other solutions
- Manual process
    - Pipelines page: Sort by activity
        - Last release
        - Last commit on dev
    - Check manually:
        - Other branches beyond dev with activity
        - Slack
        - Issues
    - If core team decides to archive
        - Try to chase down maintainers to ask (Slack, twitter, GitHub, email...)
        - If no response within a month, or they agree, archive
    - Archive procedure
        - Archive the repo on GitHub
        - Make a note on the readme for justification
        - Mention if we can un-archive
    - Can un-archive in the future if someone wants to resume development
    - Frequency:
        - Item on the new nf-core core team spring cleaning list (annual)

# ✅ Spring Cleaning Month
- Lead: James & Chris
- Yearly: March, near hackathon dates
- Everyone, not just core
- Reminders on Slack
- Clean up:
    - Non-active pipelines
    - Old branches
    - Old pull requests
    - Old issues (duplicates, already fixed)
- [ ] Establish spring clean (https://github.com/nf-core/tools/issues/1832)

# ✅ Reviewing content

- How do we scale the community when it comes to code review
    - Need to keep high standards
    - Need to be able to keep up
- How we split the reviewing workload amongst the community to be fair but timely at the same time.
- Bot to post a reviewer checklist?
    - Include logic based on the PR
        - Is it to `master`
        - Look at files that have been modified etc.
    - Comment if linting fails, add a reaction to run bot
- Allow linting bot with PRs coming from forks in the modules repo? It is possible 🥳
    

## Decisions
- Maintainers team will be responsible for initial release PRs
- Maintainers team can organise modules PR reviews
- [ ] Write documentation / guidelines for reviewing (https://github.com/nf-core/nf-co.re/issues/1250)
    - Pipelines
    - Modules
    - (Subworkflows)
    - Configs

# ✅ Publications and acknowledgements

## Actions

- [ ] Write authorship guidelines https://github.com/nf-core/nf-co.re/issues/1255

## Points

- Publications currently acknowledge only main authors of pipeline, but not nf-core community. What about adding "nf-core community" to the list of co-authors. Who should be listed there? Active contributors?:
    - Who should be in there:
        - Anyone who has made a commit in tools, website, respective pipeline, used modules, ?
        - Example: bioconda publication https://www.nature.com/articles/s41592-018-0046-7
        
:point_right: write some docs
- Having increasingly more people asking for ways to somehow include grant/acknowledge statements of their work for modules, should we have explicit guidelines for this at both pipeline and/module level?
- [ ] Include grant/acknowledge statements https://github.com/nf-core/modules/pull/1833

# ✅ Hackathons and events

- Should people helping out in the events pay for it?
    - Lots of people would be part of core/outreach/safety etc; can't afford hackathons without seqera support if they get a waiver
    - Case-by-case basis
- This is clearly controversial 🚨, so in the future just make it free so that Maxime is happy.
- Sponsorships if money an issue (Seqera, AWS)

# ✅ Development

- Subworkflows
- [ ] black for pipelines - yes. Need to add this.
- pytest for pipelines?
- Change the confusing `check_max()` function:
    - Yes, very annoying 
    - RENAME+UPDATE because the function copied over and used in the custom  config files is there already, so we can have a new one
    - Deprecate slowly the params
- `check_max()` :point_right:  `dont_use_more_resources_than_this()`
- `$cpus_ceiling = { $params.max_cpus }`
- Linking pipelines
- Automatic dependencies list (to put in CHANGELOG with new/removed...)
- Global params list:
    - Standardise param names, e.g `--bwa_index`, `--bwa`
    - Scrape all JSON schema files and build a big list (link to it in the writing pipelines tutorial)
    - Should also include global samplesheet headers
- [ ] Create param ontology https://github.com/nf-core/nf-co.re/issues/1251

# ✅ Non nf-core pipelines

Should we somehow feature pipeline using the template and linting that are not part of nf-core?

- List of nf-core approved pipelines on website
    - Nextflow website (awesome-pipelines)
    - Have a tag for using the nf-core template
    - Link there from the nf-core webpage (nf-co.re/pipelines)
    
- :point_right: Seqera will take care of this
    - No ticket for this but Seqera will keep everyone updated because there will be overlap.
    - Good examples:
        - pgsc_calc
        - bactopia

# ✅ Pipeline docs

Some people want to have fully featured docs sites for their pipelines, not just usage and output.

- Sticky tab bar for pipeline page
- Reduce Usage + Output :point_right: Docs
- Under Docs, have new left sidebar
- Auto-detect markdown files (nested), e.g. FAQ, tutorials
- Use front-matter for priority etc. (see nf-co.re/docs)
- Keep template docs as barebones as possible (move to main nf-core docs)
- [ ] Create new subsections for pipeline documentation (https://github.com/nf-core/nf-co.re/issues/1252)


# :desktop_computer: Issue list 
- Spring Cleaning Month: https://github.com/nf-core/tools/issues/1832
- Make / check email forwarders: https://github.com/nf-core/nf-co.re/issues/1248
- Write the teams for the website: https://github.com/nf-core/nf-co.re/issues/1249
- Write guidelines document @ewels 
    - Rewrite guidelines page, use ToC list with detailed paragraph for each item.
- Fix Zenodo: https://github.com/nf-core/tools/issues/365
- Create param ontology: https://github.com/nf-core/nf-co.re/issues/1251
- Create new subsections for pipeline documentation: https://github.com/nf-core/nf-co.re/issues/1252
- Include grant/acknowledge statements: https://github.com/nf-core/modules/pull/1833
- Write governance document: https://github.com/nf-core/nf-co.re/issues/1254
- Write authorship guidelines https://github.com/nf-core/nf-co.re/issues/1255
- Re-run tests of all affected modules when a given test-data file is updated/modified: https://github.com/nf-core/test-datasets/issues/626
- Move modules to a new repo nf-core/modules-test-data: https://github.com/nf-core/test-datasets/issues/625
- Add a lint test to check that `-profile test` exists (https://github.com/nf-core/tools/issues/1837)