Welcome to the dcm2bids
repository and thank you for thinking about
contributing! ❤️
This document has been written in such a way you feel at ease to find your way
on how you can make a difference for the dcm2bids
community.
We tried to cover as much as possible in few words possible. If you have any questions don't hesitate to share them in the section below.
There are multiple ways to be helpful to the dcm2bids
community.
If you already know what you are looking for, you can select one of the section below:
If you don't know where or how to get started, keep on reading below.
dcm2bids
is a small project started in 2017 by Christophe Bedetti
(@cbedetti). In 2021, we have started a
new initiative and we're excited to have you join!
You can introduce yourself on our Welcome to Dcm2Bids Discussion
and tell us how you would like to contribute in the dcm2bids
community.
Let us know what your interests are and we will help you find an issue to
contribute to if you haven't already spotted one yet. Most of our discussions
will take place on open issues and in the newly created
GitHub Discussions. Thanks so much!
As a reminder, we expect all contributions to dcm2bids
to adhere to our
Code of Conduct.
The dcm2bids
community highlight all contributions to dcm2bids
. Helping users
on Neurostars forum is one of them.
Neurostars has a dcm2bids
tag that helps us following any question regarding
the project. You can ask Neurostars to notify you when a new message tagged with dcm2bids
has been posted. If you know the answer, you can reply following our
code of conduct.
??? info "How to receive email notifications from Neurostars" If you want to receive email notifications, you have to go set your settings accordingly on Neurostars. The procedure below will get you to this (personalized) URL: https://neurostars.org/u/**YOURUSERNAME**/preferences/tags :
1. Click on your picture in the top right corner
2. Click on the 👤 (user) icon
3. Click on ⚙️ **Preferences**
4. Click on **Notifications**
5. Click on **Tags**
6. We recommend to add `dcm2bids` to the **Watched** section, but you can add it to any section that fits your need.
Git is a really useful tool for version control. GitHub sits on top of git and supports collaborative and distributed working.
Before you start you'll need to set up a free GitHub account and sign in. You can sign up through this link and then interact on our repository at https://github.io/UNFmontreal/Dcm2Bids.
You'll use Markdown to discuss on GitHub. You can think of
Markdown as a few little symbols around your text that
will allow GitHub to render the text with a little bit of formatting. For
example you can write words as bold (**bold**
), or in italics
(*italics*
), or as a link
([link](https://youtu.be/dQw4w9WgXcQ)
) to another webpage.
!!! info "Did you know?"
Most software documentation websites are written in Markdown. Even the dcm2bids
documentation website is written in Markdown!
GitHub has a helpful guide to [get you started with writing and formatting Markdown][writing_formatting_github].
We will be excited when you'll suggest a new PR to fix, enhance or develop
dcm2bids
. In order to make this as fluid as possible we recommend to follow
this workflow:
Issues are individual pieces of work that need to be completed to move the
project forwards. Before starting to work on a new pull request we highly
recommend you open an issue to explain what you want to do and how it echoes a
specific demand from the community. Keep in mind the scope of
the dcm2bids
project. If you have more an inquiry or suggestion to make
than a bug to report, we encourage you to start a conversation in the
Discussions section.
A general guideline: if you find yourself tempted to write a great big issue that is difficult to describe as one unit of work, please consider splitting it into two or more. Moreover, it will be interesting to see how others approach your issue and give their opinion and maybe give you advice to find the best way to code it. Finally, it will prevent you to start working on something that is already in progress.
The list of all labels is here and include:
-
These issues contain a task that a member of the team has determined we need additional help with.
If you feel that you can contribute to one of these issues, we especially encourage you to do so!
-
These issues point to problems in the project.
If you find new a bug, please give as much detail as possible in your issue, including steps to recreate the error. If you experience the same bug as one already listed, please add any additional information that you have as a comment.
-
These issues are asking for enhancements to be added to the project.
Please try to make sure that your enhancement is distinct from any others that have already been requested or implemented. If you find one that's similar but there are subtle differences please reference the other request in your issue.
This way you'll be able to work on your own instance of dcm2bids
. It will be a
safe place where nothing can affect the main repository. Make sure your master
branch is always up-to-date with dcm2bids' master branch. You
can also follow these command lines.
The first time you try to sync your fork, you may have to set the upstream branch:
git remote add upstream https://github.com/UNFmontreal/Dcm2Bids.git
git remote -v # Verify the new upstream repo appears.
git checkout master
git fetch upstream master
git merge upstream/master
Then create a new branch for each issue. Using a new branch allows you to follow the standard GitHub workflow when making changes. This guide provides a useful overview for this workflow. Please keep the name of your branch short and self explanatory.
git checkout -b MYBRANCH
If you are proposing new features, you'll need to add new tests as well. In any case, you have to test your branch prior to submit your PR.
If you have new code you will have to run pytest:
pytest -v tests/test_dcm2bids.py
dcm2bids
project is following PEP8 convention whenever possible. You
can check your code using this command line:
flake8 FileIWantToCheck
Regardless, when you open a Pull Request, we use Tox to run all unit and integration tests.
If you have propose a PR about a modification on the documentation you can have
a preview from an editor like Atom using CTRL+SHIFT+M
.
Pull Request Checklist (For Fastest Review):
- Check that all tests are passing ("All tests passsed")
- Make sure you have docstrings for any new functions
- Make sure that docstrings are updated for edited functions
- Make sure you note any issues that will be closed by your PR
- Add a clear description of the purpose of you PR
When you submit a pull request we ask you to follow the tag specification. In order to simplify reviewers work, we ask you to use at least one of the following tags:
- ==[BRK]== for changes which break existing builds or tests
- ==[DOC]== for new or updated documentation
- ==[ENH]== for enhancements
- ==[FIX]== for bug fixes
- ==[TST]== for new or updated tests
- ==[REF]== for refactoring existing code
- ==[MAINT]== for maintenance of code
- ==[WIP]== for work in progress
You can also combine the tags above, for example if you are updating both a test and the documentation: [TST, DOC].
We welcome and recognize all contributions from documentation to testing to code development. You can see a list of current contributors in the README (kept up to date by the all contributors bot). You can see here for instructions on how to use the bot.
You're amazing. 👋😃
— Based on contributing guidelines from the STEMMRoleModels and tedana projects.