Contributing
Are you interested in contributing to ATOM? Do you want to report a bug? Do you have a question? Before you do, please read the following guidelines.
Submission context
Question or problem?
For quick questions, there's no need to open an issue. Check first if the question isn't already answered in the FAQ section. If not, reach us through the discussions page or on the slack channel.
Report a bug?
If you found a bug in the source code, you can help by submitting an issue to the issue tracker in the GitHub repository. Even better, you can submit a Pull Request with a fix. However, before doing so, please read the submission guidelines.
Missing a feature?
You can request a new feature by submitting an issue to the GitHub Repository. If you would like to implement a new feature, please submit an issue with a proposal for your work first. Please consider what kind of change it is:
-
For a major feature, first open an issue and outline your proposal so that it can be discussed. This will also allow us to better coordinate our efforts, prevent duplication of work, and help you to craft the change so that it is successfully accepted into the project.
-
Small features and bugs can be crafted and directly submitted as a Pull Request. However, there is no guarantee that your feature will make it into
master
, as it's always a matter of opinion whether if benefits the overall functionality of the project.
Project layout
The latest stable release of ATOM is on the master
branch, whereas the
latest version of ATOM in development is on the development
branch. Make
sure you are looking at and working on the correct branch if you're looking
to contribute code.
In terms of directory structure:
- All of ATOM's code sources are in the
atom
directory. - The documentation sources are in the
docs_sources
directory. - Images in the documentation are in the
docs_sources/img
directory. - Tutorial notebooks are in the
examples
directory. If you want to include the example to the documentation as well, add the.ipynb
file todocs_sources/examples
and update themkdocs.yml
file accordingly. - Unit tests are in the
tests
directory. Make sure to add the tests to the file corresponding to the module in theatom
directory with the code that is being tested.
Make sure to familiarize yourself with the project layout before making any
major contributions, and especially make sure to send all code changes to the
development
branch.
Submission guidelines
Submitting an issue
Before you submit an issue, please search the issue tracker, maybe an issue for your problem already exists, and the discussion might inform you of workarounds readily available.
We want to fix all the issues as soon as possible, but before fixing a bug, we need to reproduce and confirm it. In order to reproduce bugs, we will systematically ask you to provide a minimal reproduction scenario using the custom issue template.
Submitting a pull request
Before you submit a pull request, please work through this checklist to make sure that you have done the necessary so we can efficiently review and accept your changes.
- Update the documentation so all of your changes are reflected there.
- Adhere to PEP 8 standards.
- Use a maximum of 99 characters per line. Try to keep docstrings below 80 characters.
- Update the project unit tests to test your code changes as thoroughly as possible.
- Make sure that your code is properly commented with docstrings and comments explaining your rationale behind non-obvious coding practices.
- Run pre-commit:
pre-commit run --all-files
and make sure all tests pass.
If your contribution requires a new library dependency:
- Double-check that the new dependency is easy to install via pip and Anaconda.
- The library should support Python 3.10, 3.11 and 3.12.
- Make sure the code works with the latest version of the library.
- Update the dependencies in the documentation.
- Add the library with the minimum required version to
pyproject.toml
.
After submitting your pull request, GitHub will automatically run the tests on your changes and make sure that the updated code builds successfully. The checks run on Python 3.10 and 3.11, on Ubuntu and Windows. We also use services that automatically check code style and test coverage.