Developer Guide
=======================
Thank you for your interest in contributing to SlicerCART! This document provides guidelines and instructions for contributing to the project.
Code of Conduct
-------------
We are committed to providing a friendly, safe, and welcoming environment for all contributors. Please be respectful and constructive in your interactions.
Coding Standards
-------------
* Max 80 columns for a single code line
* This project uses the `PEP8 `_ convention for naming. Reminder:
- ``MyClass`` for naming a **Class**
- ``MY_CONSTANT`` for naming a **CONSTANT**
- ``my_variable`` for naming a **variable**
- ``define_my_function()`` for naming a **function** (always start with an action verb)
- Function definition example (add docstrings for explanations):
.. code-block:: python
def my_function(arg1):
"""
Add such a descriptive comment at the beginning of each function
in order to explain clearly to the next user what the function does. :)
Args
arg1: first argument
"""
- Use ``TODO:`` for naming **To Dos** in the code
- Add **one blank line** between each function for clarity
- **Useful comments** are strongly encouraged
- Want to report a feature improvement or bug? Go on `SlicerCART Github `__.
* On Github, 1 issue for 1 Pull Request. Always create a branch.
.. code-block:: bash
git checkout -b 'feature-name'
Core Organization
-----------------
See :doc:`repository_organization` for the repository files and folders tree structure.
See :doc:`class_organization` for the class diagrams of the repository scripts.
.. toctree::
:hidden:
repository_organization
class_organization
Development Workflow
-----------------
1. **Make Your Changes**
* Write clean, readable code
* Follow our coding standards
* Add tests for new features
* Update documentation as needed
2. **Test Your Changes**
* Run the test suite
* Test manually in 3D Slicer
* Check for any regressions
3. **Commit Your Changes**
* Write clear commit messages
* Keep commits focused and atomic
* Reference issues if applicable
4. **Submit a Pull Request**
* Push your changes to your fork
* Create a pull request from your branch
* Describe your changes in detail
* Link to any related issues
Pull Request Guidelines
--------------------
1. **Before Submitting**
* Rebase on latest upstream changes
* Resolve any conflicts
* Run all tests
* Update documentation
2. **PR Description**
* Clearly describe the changes
* Explain the motivation
* List any breaking changes
* Include screenshots if relevant
3. **Review Process**
* Address reviewer comments
* Make requested changes
* Keep the discussion constructive
Useful links
----------
- `PEP8 style guide official documentation `_
- `Polytechnique Montreal Home-Made Guide for programming style (in French) `_
Getting Help
----------
If you need help:
* Join our discussions on GitHub
* Ask questions in issues
* Contact the maintainers
Thank you for contributing to SlicerCART!