Skip to content

Commit

Permalink
Merge branch 'master' into bep-016
Browse files Browse the repository at this point in the history
  • Loading branch information
arokem committed Aug 20, 2024
2 parents 1ce38c2 + 9377b20 commit edab0fd
Show file tree
Hide file tree
Showing 69 changed files with 2,191 additions and 1,362 deletions.
36 changes: 20 additions & 16 deletions .github/workflows/changelog_generator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,10 +101,11 @@ jobs:
commit_generated_changelog:
permissions:
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents: write
pull-requests: write
needs: lint_generated_changelog
# Run only if the head commit message contains "[build changelog]""
if: contains(github.event.head_commit.message, '[build changelog]')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -113,18 +114,21 @@ jobs:
with:
name: changelog_post_lint
path: ~/changelog_build
- name: Changelog deployment
- name: add changelog to git
run: |
if (git log -1 --pretty=%s | grep Merge*) && (! git log -1 --pretty=%b | grep REL:) ; then
mv ~/changelog_build/CHANGES.md ${{ github.workspace }}/src/CHANGES.md
merge_message=$(git log -1 | grep Merge | grep "pull")
PR_number=$(echo $merge_message | cut -d ' ' -f 4)
git config credential.helper 'cache --timeout=120'
git config user.email "[email protected]"
git config user.name "bids-maintenance"
git add ${{ github.workspace }}/src/CHANGES.md
git commit -m "[DOC] Auto-generate changelog entry for PR ${PR_number}"
git push https://${{ secrets.GITHUB_TOKEN }}@github.com/bids-standard/bids-specification.git master
else
echo "Did not detect a "Merge commit" to master, or detected a Release ... doing nothing."
fi
mv ~/changelog_build/CHANGES.md ${{ github.workspace }}/src/CHANGES.md
git config credential.helper 'cache --timeout=120'
git config user.email "[email protected]"
git config user.name "bids-maintenance"
git add ${{ github.workspace }}/src/CHANGES.md
git commit -m "[DOC] Auto-generated changelog entry"
- name: Create Pull Request
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: changelog_generator_update
delete-branch: true
title: '[DOC] Auto-generated changelog entry'
labels: |
exclude-from-changelog
draft: false
2 changes: 1 addition & 1 deletion .github/workflows/schemacode_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
- name: "Install build dependencies"
run: pip install --upgrade build twine
- name: "Install test dependencies on tag"
run: pip install --upgrade tools/schemacode[test]
run: pip install --upgrade tools/schemacode[tests]
if: ${{ startsWith(github.ref, 'refs/tags/schema-') }}
- name: "Build archive on tag"
run: pytest tools/schemacode/bidsschematools -k make_archive
Expand Down
2 changes: 2 additions & 0 deletions .mailmap
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,5 @@ Patrick Park <[email protected]>
Ezequiel Mikulan <[email protected]>

Guillaume Flandin <[email protected]>

Dimitri Papadopoulos Orfanos <[email protected]>
18 changes: 15 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,18 @@ repos:
- id: check-ast
- id: check-added-large-files
- id: check-case-conflict
- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 0.29.1
hooks:
- id: check-dependabot
- id: check-github-workflows
args: ["--verbose"]
- id: check-metaschema
files: src/metaschema.json
- id: check-readthedocs
files: readthedocs.yml
- repo: https://github.com/psf/black
rev: 24.4.2
rev: 24.8.0
hooks:
- id: black
files: ^tools/(?!schemacode)
Expand All @@ -35,7 +45,7 @@ repos:
files: tools/schemacode
args: ["--settings-file", "tools/schemacode/pyproject.toml"]
- repo: https://github.com/pyCQA/flake8
rev: 7.0.0
rev: 7.1.1
hooks:
- id: flake8
args: [--config=tools/schemacode/setup.cfg]
Expand All @@ -57,7 +67,7 @@ repos:
- id: codespell
args: ["--config=.codespellrc", "--dictionary=-", "--dictionary=.codespell_dict"]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.10.0
rev: v1.11.1
hooks:
- id: mypy
# Sync with project.optional-dependencies.typing
Expand All @@ -71,6 +81,8 @@ repos:
- types-PyYAML
- types-tabulate
- types-jsonschema
- jsonschema
- httpx
args: ["tools/schemacode/bidsschematools"]
pass_filenames: false
- repo: https://github.com/koalaman/shellcheck-precommit
Expand Down
18 changes: 8 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,9 @@ The keyword for the heading must be one of the following:
- example
- quote

Do not put [macros](#using-macros) in admonitions,
as this will likely not give the output you expect.

## Using macros

We use [mkdocs-macros](https://mkdocs-macros-plugin.readthedocs.io/en/latest/)
Expand Down Expand Up @@ -721,17 +724,12 @@ The decision-making rules are outlined in

The changelog (see `src/CHANGES.md`) is generated automatically using
[github-changelog-generator](https://github.com/github-changelog-generator/github-changelog-generator).
You can see the workflow in the CircleCI configuration file (`.circleci/config.yml`).

As it stands, the changelog is generated whenever a pull request is integrated into
the `master` branch of the specification via a "Merge commit"
(as opposed to "Squash and merge" or "Rebase and merge";
see the [GitHub help page](https://help.github.com/en/articles/about-merge-methods-on-github)
for more information on merge methods).

![merge-commit](release_images/merge_commit.png "merge-commit")
You can see the workflow in the following GitHub Actions configuration file: `.github/workflows/changelog_generator.yml`.

Note that for pull requests starting with `REL:`, no changelog is generated.
This workflow is triggered for every commit to `master` that contains string `[build changelog]` in its commit message.
If you push several commits at once, you need to make sure that the "youngest commit" (the HEAD commit) contains that string.
The workflow will then open a Pull Request to incorporate the updated changelog.
Check the proposed changes and merge the Pull Request at will.

To exclude pull requests from showing up in the changelog, they have to be labeled with
the "exclude-from-changelog" label.
Expand Down
45 changes: 10 additions & 35 deletions DECISION-MAKING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,40 +14,15 @@ BIDS governance.

### Steering Group

Current and past members of the steering group can be found
[here](https://bids.neuroimaging.io/governance.html#bids-steering-group).
Current and past members of the steering group can be found in the
[BIDS governance](https://bids.neuroimaging.io/governance.html#bids-steering-group).

### Maintainers Group

| Name | Time commitment | Scope | Joined |
| ------------------------------------------------------------------------- | --------------- | ------------------------------------- | -------- |
| Stefan Appelhoff ([@sappelhoff](https://github.com/sappelhoff)) | 1h/week | | Mar 2020 |
| Chris Markiewicz ([@effigies](https://github.com/effigies)) | 5h/week | | Mar 2020 |
| Ross Blair ([@rwblair](https://github.com/rwblair)) | | Maintainer of the bids-validator | Mar 2020 |
| Taylor Salo ([@tsalo](https://github.com/tsalo)) | 3h/week | MRI | Sep 2020 |
| Remi Gau ([@Remi-Gau](https://github.com/Remi-Gau)) | 3h/week | Community development, MRI | Oct 2020 |
| Anthony Galassi ([@bendhouseart](https://github.com/bendhouseart)) | 3h/week | PET, Community development | Sep 2021 |
| Eric Earl ([@ericearl](https://github.com/ericearl)) | 2h/week | | Dec 2021 |
| Christine Rogers ([@christinerogers](https://github.com/christinerogers)) | 2h/month | Interoperability, EEG and multi-modal | Apr 2023 |
| Nell Hardcastle ([@nellh](https://github.com/nellh)) | 2h/week | | Jul 2023 |
| Kimberly Ray ([@KimberlyLRay](https://github.com/KimberlyLRay)) | 1h/week | | Nov 2022 |

In addition to the [BIDS Governance](https://bids.neuroimaging.io/governance.html#bids-maintainers-group)
classification of a maintainer, maintainers may declare a limited scope of responsibility.
Such a scope can range from maintaining a modality supported in the specification to nurturing a
welcoming BIDS community.
Any number of scopes can be chosen by the maintainer and agreed upon by the Maintainers Group.
A maintainer is primarily responsible for issues within their chosen scope(s), although
contributions elsewhere are welcome, as well.

The role of the "lead maintainer", that is, the BIDS maintainer currently representing the maintainers group,
is rotating among current maintainers.

#### Past maintainers group members

| Name | Duration |
| ------------------------------------------------------------------------------ | ------------------- |
| Franklin Feingold ([@franklin-feingold](https://github.com/franklin-feingold)) | Mar 2020 - Jul 2022 |
Current and past members of the maintainers group can be found in the
[BIDS governance](https://bids.neuroimaging.io/governance.html#bids-maintainers-group),
and in the
[Maintainers Guide](Maintainers_Guide.md).

### BEP Leads Group

Expand All @@ -65,8 +40,9 @@ according to the instructions listed there.

### Other groups

The following groups not listed in detail. Please learn more about these groups
from the [governance document](https://bids.neuroimaging.io/governance.html).
The following groups are not described in detail.
Please learn more about these groups from the
[BIDS governance](https://bids.neuroimaging.io/governance.html).

- BEP working groups
- Advisory Group
Expand All @@ -82,8 +58,7 @@ following rules with the intention to:
- Minimize the administrative burden.
- Provide a path for when consensus cannot be made.
- Grow the community.
- Maximize the [bus factor](https://en.wikipedia.org/wiki/Bus_factor) of the
project.
- Maximize the [bus factor](https://en.wikipedia.org/wiki/Bus_factor) of the project.

The rules outlined below are inspired by the [lazy consensus system used in the Apache Foundation](https://www.apache.org/foundation/voting.html)
and heavily depends on [GitHub Pull Request Review system](https://help.github.com/articles/about-pull-requests/).
Expand Down
135 changes: 135 additions & 0 deletions Maintainers_Guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# BIDS Maintainers Group Guide

The BIDS Maintainers are a key group of members that ensure that the BIDS infrastructure is kept up.
The maintainers have wide-ranging responsibilities that enable BIDS to continue to grow and succeed.
As furthermore detailed in the [DECISION-MAKING document](DECISION-MAKING.md),
maintainers have a set of rights that go beyond those of a contributor.

The following guide draws heavily on a related [blog post](https://matthewrocklin.com/blog/2019/05/18/maintainer)
on "The Role of a Maintainer" by Matthew Rocklin,
which is a recommended reading in conjunction with this guide.

## Current BIDS Maintainers

See also: [BIDS governance](https://bids.neuroimaging.io/governance.html#bids-maintainers-group)

| Name | Time commitment | Scope | Joined |
| ------------------------------------------------------------------------- | --------------- | ------------------------------------- | -------- |
| Stefan Appelhoff ([@sappelhoff](https://github.com/sappelhoff)) | 1h/week | | Mar 2020 |
| Chris Markiewicz ([@effigies](https://github.com/effigies)) | 5h/week | | Mar 2020 |
| Ross Blair ([@rwblair](https://github.com/rwblair)) | | Maintainer of the bids-validator | Mar 2020 |
| Taylor Salo ([@tsalo](https://github.com/tsalo)) | 3h/week | MRI | Sep 2020 |
| Remi Gau ([@Remi-Gau](https://github.com/Remi-Gau)) | 3h/week | Community development, MRI | Oct 2020 |
| Anthony Galassi ([@bendhouseart](https://github.com/bendhouseart)) | 3h/week | PET, Community development | Sep 2021 |
| Eric Earl ([@ericearl](https://github.com/ericearl)) | 2h/week | | Dec 2021 |
| Christine Rogers ([@christinerogers](https://github.com/christinerogers)) | 2h/month | Interoperability, EEG and multi-modal | Apr 2023 |
| Nell Hardcastle ([@nellh](https://github.com/nellh)) | 2h/week | | Jul 2023 |
| Kimberly Ray ([@KimberlyLRay](https://github.com/KimberlyLRay)) | 1h/week | | Nov 2022 |

In addition to the [BIDS Governance](https://bids.neuroimaging.io/governance.html#bids-maintainers-group)
classification of a maintainer, maintainers may declare a limited scope of responsibility.
Such a scope can range from maintaining a modality supported in the specification to nurturing a
welcoming BIDS community.
Any number of scopes can be chosen by the maintainer and agreed upon by the Maintainers Group.
A maintainer is primarily responsible for issues within their chosen scope(s), although
contributions elsewhere are welcome, as well.

### Lead Maintainer

The role of the "lead maintainer", that is, the BIDS maintainer currently representing the maintainers group,
is rotating among current maintainers.

## Past BIDS Maintainers

See also: [BIDS governance](https://bids.neuroimaging.io/governance.html#bids-maintainers-group)

| Name | Duration |
| ------------------------------------------------------------------------------ | ------------------- |
| Franklin Feingold ([@franklin-feingold](https://github.com/franklin-feingold)) | Mar 2020 - Jul 2022 |

## Why become a maintainer?

As a BIDS maintainer you may get the chance to:

* Learn to work as a team
* Bring your expertise to the BIDS maintainers group and cover technical blind spots it may have
* Improving your technical writing skills (for example documentation)
* Learn to work with continuous integration and deployment
* Advise and participate in the development of BIDS extensions that are most commonly associated with a publication

## Responsibilities

* Maintainers need to be loosely aware of the entire project
and use their knowledge to facilitate and initiate interactions
between different nodes of the project
and determine a reasonable and timely order for features to be added and issues to be resolved.
* Maintainers direct other BIDS contributors in reviewing PRs,
writing clarifications to the specification, or other contributions.
* Maintainers ensure that all contributors maintain a friendly and welcoming tone
to encourage productive conversations.
* If no work team is suitable or available,
the final responsibility of getting the work done lies with the maintainers.
* The development of each BIDS extension proposal should be "followed"
by at least one maintainer who acts as a preferential point of contact
between the BIDS maintainers and the BEP leads.

Apart from these abstract and general responsibilities,
maintainers within the BIDS community also need to ensure that the following tasks get done:

* Keeping the
[Contributors wiki](https://github.com/bids-standard/bids-specification/wiki/Recent-Contributors)
up to date and assisting new contributors with adding their credits,
and performing community inquiries to ensure contributors are credited in the
[Contributors appendix](https://bids-specification.readthedocs.io/en/stable/appendices/contributors.html)
* Deciding what constitutes a contribution worth adding to the "Contributors list"
* Preparing a monthly report to the BIDS Steering Group.
The monthly report is in the form of milestones, issues addressed,
and open issues raised in the past month and goals/plans for the next month.
The BIDS Steering Group may ask for additional information or propose a meeting to further discuss report items.
The report format and meetings are at the discretion of the BIDS Steering Group.

Maintainers are not expected to individually be responsible for all the responsibilities listed.
Rather, the responsibilities are distributed amongst the entire group.

## Organization

* The group of maintainers are a group of people with the above mentioned responsibilities,
who commit to convene bi-weekly meetings to discuss the project.
* One lead maintainer represents the group to other BIDS Groups, mediates disagreement among members,
and casts deciding votes when needed (tie break).
Note that the maintainers will always strive for consensus decision making, and will try to avoid resorting to voting.
* The lead maintainer may delegate any of their duties to another maintainer.
* The lead maintainer is appointed collectively by the group of maintainers, preferably through consensus.
* If no one else does, the lead maintainer sets the schedule for the maintainers meeting.
* Additions to and departures from the group are negotiated collectively between the lead maintainer
and the new/departing members, as they involve the redistribution of duties.
* If a maintainer wishes to serve for a limited term, that can be arranged at the start. Otherwise, due notice is expected.
* See also "How to become a maintainer?" below

## How to become a maintainer?

If you are interested in becoming a BIDS maintainer,
please get in contact with an active BIDS maintainer
(for example via opening a GitHub issue on bids-standard/bids-specification and tagging `@bids-standard/maintainers`).
In that initial contact, it would be great if you could outline previous experience with BIDS (if any)
and your motivation to become a maintainer, as well as particular interests for work that you would like to do.
The BIDS maintainers will then invite you to one of the biweekly maintainers meetings (online)
to discuss further steps and point you to the onboarding documentation (things to do).

We would be happy to hear from you!

## Crediting BIDS maintainers in work submissions

If you prepare a submission of work related to BIDS, and would like to credit the BIDS maintainers
in that submission, please get in touch.

It is for example possible to include BIDS maintainers as a consortium author,
through using the following OSF account: [https://osf.io/y48x9/](https://osf.io/y48x9/)

We are furthermore preparing more guidelines on this topic, see this work in progress:
https://docs.google.com/document/d/1yQdYOw7WMpkcFgT4tNalOjKuH34nhmRqg4luI4V9uhE/

## Notes

As detailed in the [BIDS governance](https://bids.neuroimaging.io/governance.html),
this guide is subject to change and to amendment by the BIDS Steering Group.
4 changes: 0 additions & 4 deletions Release_Protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ your fork locally to a directory called `bids-specification`.

Before you start a release, you have to ensure that the automatically generated changelog is **up to date**.
See the relevant [section in CONTRIBUTING.md](CONTRIBUTING.md#how-is-the-changelog-generated) for further information.
In practice this means ensuring that the most recently merged pull request
was merged into the `master` branch using the "Merge commit" option.

![merge-commit](release_images/merge_commit.png.png "merge-commit")

### 1. Fetch the latest version of the [master branch of the BIDS-specification](https://github.com/bids-standard/bids-specification/tree/master)

Expand Down
Loading

0 comments on commit edab0fd

Please sign in to comment.