diff --git a/.github/workflows/changelog_generator.yml b/.github/workflows/changelog_generator.yml index 45d9948d32..7e0291b542 100644 --- a/.github/workflows/changelog_generator.yml +++ b/.github/workflows/changelog_generator.yml @@ -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 @@ -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 "bids.maintenance@gmail.com" - 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 "bids.maintenance@gmail.com" + 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 diff --git a/.mailmap b/.mailmap index 066e8097c5..087f292a4f 100644 --- a/.mailmap +++ b/.mailmap @@ -64,3 +64,5 @@ Patrick Park Ezequiel Mikulan Guillaume Flandin + +Dimitri Papadopoulos Orfanos <3234522+DimitriPapadopoulos@users.noreply.github.com> diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d6b5c19929..5e1ed3b234 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -35,7 +35,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.0 hooks: - id: flake8 args: [--config=tools/schemacode/setup.cfg] @@ -57,7 +57,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.10.1 hooks: - id: mypy # Sync with project.optional-dependencies.typing diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 208d0bd43b..d16d54cdc5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -721,17 +721,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`). +You can see the workflow in the following GitHub Actions configuration file: `.github/workflows/changelog_generator.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") - -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. diff --git a/DECISION-MAKING.md b/DECISION-MAKING.md index f31b2eacbf..cbf7946af4 100644 --- a/DECISION-MAKING.md +++ b/DECISION-MAKING.md @@ -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 @@ -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 @@ -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/). diff --git a/Maintainers_Guide.md b/Maintainers_Guide.md new file mode 100644 index 0000000000..1c668ec382 --- /dev/null +++ b/Maintainers_Guide.md @@ -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. diff --git a/Release_Protocol.md b/Release_Protocol.md index c93c039a48..9e2f6292c6 100644 --- a/Release_Protocol.md +++ b/Release_Protocol.md @@ -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) diff --git a/requirements.txt b/requirements.txt index 25f0520a6a..81609f6b67 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -mkdocs>=1.1 +mkdocs>=1.1.0 mkdocs-material>=5.4 pymdown-extensions>=7.0.0 mkdocs-branchcustomization-plugin~=0.1.3 diff --git a/src/CHANGES.md b/src/CHANGES.md index 087368ffea..106f7e1aa0 100644 --- a/src/CHANGES.md +++ b/src/CHANGES.md @@ -1,15 +1,50 @@ # Changelog +## [Unreleased](https://github.com/bids-standard/bids-specification/tree/HEAD) + +- \[ENH] Add use of session entity as example of encoding multi-site studies in a single dataset [#1803](https://github.com/bids-standard/bids-specification/pull/1803) ([yarikoptic](https://github.com/yarikoptic)) +- \[ENH] Describe Inheritance Principle in Common Principles [#1807](https://github.com/bids-standard/bids-specification/pull/1807) ([Lestropie](https://github.com/Lestropie)) +- \[ENH] Use deidentification consistently in place of anonymization [#1799](https://github.com/bids-standard/bids-specification/pull/1799) ([DimitriPapadopoulos](https://github.com/DimitriPapadopoulos)) +- \[INFRA] Introduce metaschema [#1787](https://github.com/bids-standard/bids-specification/pull/1787) ([bendichter](https://github.com/bendichter)) +- \[ENH] Add warning about deidentification when sharing sourcedata [#1769](https://github.com/bids-standard/bids-specification/pull/1769) ([Remi-Gau](https://github.com/Remi-Gau)) +- ENH: Use "Tag XXXX, YYYY" not "Tag (XXXX,YYYY)" for DICOM Tags [#1758](https://github.com/bids-standard/bids-specification/pull/1758) ([yarikoptic](https://github.com/yarikoptic)) +- \[ENH]\[SCHEMA] Allow .bval and .bvec files for pepolar fmaps [#1754](https://github.com/bids-standard/bids-specification/pull/1754) ([mattcieslak](https://github.com/mattcieslak)) +- FIX: Move `\_stim.\` specification within the Task Events module [#1750](https://github.com/bids-standard/bids-specification/pull/1750) ([oesteban](https://github.com/oesteban)) +- ENH: Add compressed TSV files to the common principles [#1749](https://github.com/bids-standard/bids-specification/pull/1749) ([oesteban](https://github.com/oesteban)) +- \[MAINT] split physio metadata tables [#1746](https://github.com/bids-standard/bids-specification/pull/1746) ([Remi-Gau](https://github.com/Remi-Gau)) +- \[FIX] Move `rawdata/` into `sourcedata/raw` in alternative structure example, clarify on naming of datasets themselves [#1741](https://github.com/bids-standard/bids-specification/pull/1741) ([yarikoptic](https://github.com/yarikoptic)) +- \[FIX] Remove mentions of sourcedata in the datatype specific pages [#1737](https://github.com/bids-standard/bids-specification/pull/1737) ([Remi-Gau](https://github.com/Remi-Gau)) +- \[ENH] events.tsv should be sorted by onset values [#1732](https://github.com/bids-standard/bids-specification/pull/1732) ([Remi-Gau](https://github.com/Remi-Gau)) +- \[FIX] fix typo in motion.md [#1731](https://github.com/bids-standard/bids-specification/pull/1731) ([Remi-Gau](https://github.com/Remi-Gau)) +- \[ENH] Specify the naming of scanner-generated TRACE and ADC volumes [#1725](https://github.com/bids-standard/bids-specification/pull/1725) ([effigies](https://github.com/effigies)) +- FIX: Re-add run entity to electrodes.tsv [#1722](https://github.com/bids-standard/bids-specification/pull/1722) ([effigies](https://github.com/effigies)) +- \[FIX] Add misssing files in filename template for NIRS [#1716](https://github.com/bids-standard/bids-specification/pull/1716) ([Remi-Gau](https://github.com/Remi-Gau)) +- \[FIX] Missing word in `genetic-descriptor.md` [#1715](https://github.com/bids-standard/bids-specification/pull/1715) ([markmikkelsen](https://github.com/markmikkelsen)) +- Add `descriptions.tsv` to the schema [#1707](https://github.com/bids-standard/bids-specification/pull/1707) ([tsalo](https://github.com/tsalo)) +- \[FIX] Remove task entity from DWI and PERF time series file templates [#1703](https://github.com/bids-standard/bids-specification/pull/1703) ([Remi-Gau](https://github.com/Remi-Gau)) +- ENH: Clarify the relation of motion.tsv columns to channels.tsv rows [#1699](https://github.com/bids-standard/bids-specification/pull/1699) ([effigies](https://github.com/effigies)) +- \[STY] apply black 24.1.0 [#1688](https://github.com/bids-standard/bids-specification/pull/1688) ([Remi-Gau](https://github.com/Remi-Gau)) +- \[ENH] Describe parametric images above the suffix table, rather than below [#1687](https://github.com/bids-standard/bids-specification/pull/1687) ([CPernet](https://github.com/CPernet)) +- \[ENH] Add support for HiP-CT [#1686](https://github.com/bids-standard/bids-specification/pull/1686) ([balbasty](https://github.com/balbasty)) +- \[FIX] Add `part-` to the PEPOLAR fieldmaps [#1685](https://github.com/bids-standard/bids-specification/pull/1685) ([oesteban](https://github.com/oesteban)) +- \[MISC] Restructure MEG empty room example texts [#1677](https://github.com/bids-standard/bids-specification/pull/1677) ([guiomar](https://github.com/guiomar)) +- ENH: Add sample metadata to MRI and PET [#1593](https://github.com/bids-standard/bids-specification/pull/1593) ([effigies](https://github.com/effigies)) +- \[ENH] Add noRF suffix for MR excitation-free noise scans [#1451](https://github.com/bids-standard/bids-specification/pull/1451) ([tsalo](https://github.com/tsalo)) +- \[ENH] Add generic metadata from BEP22 to MRI [#1396](https://github.com/bids-standard/bids-specification/pull/1396) ([Remi-Gau](https://github.com/Remi-Gau)) +- \[FIX] Consistently refer to Neuromag/Elekta/MEGIN [#1310](https://github.com/bids-standard/bids-specification/pull/1310) ([sappelhoff](https://github.com/sappelhoff)) + ## [v1.9.0](https://github.com/bids-standard/bids-specification/tree/v1.9.0) (2023-11-20) +- \[ENH] Add `descriptions.tsv` file relating to the `desc-