First off, thank you for considering contributing to DDALAB! Whether you are fixing a bug, improving documentation, or adding a new analysis feature, your help is what makes scientific tools better for everyone.
By participating in this project, you agree to maintain a professional and respectful environment. We prioritize clear communication, intellectual honesty, and constructive feedback.
We embrace the use of Large Language Models (LLMs) and AI coding assistants (such as Claude, ChatGPT, or GitHub Copilot) to accelerate development.
- Welcome: Feel free to use AI to generate boilerplate, refactor code, or brainstorm implementations.
- Review: All code—whether human-written or AI-generated—must undergo the standard GitHub Pull Request review process to ensure quality and scientific accuracy.
- Responsibility: If you use an LLM, you are responsible for ensuring the code is functional, secure, and adheres to the project's architecture.
- Check the Issue Tracker: See if the bug has already been reported.
- Provide Context: Include your Operating System, DDALAB version, and the type of data you were processing (e.g., EDF, BIDS).
- Provide Logs: You can find diagnostic logs in the app under Settings → Debug Information.
- Fork the repo and create your branch from
main. - Setup the environment as described in the
README.md. - Follow the architecture:
- Desktop application, CLI, and Python runtime changes belong in
packages/ddalab. - Computational changes belong in
packages/dda-rs.
- Update documentation: If you add a feature, please update the relevant documentation in the
docs/folder.
Before submitting a Pull Request, format the code for the language you changed and keep style consistent with the surrounding files.
For Rust changes, run:
cargo fmt --manifest-path packages/dda-rs/Cargo.toml
The active desktop application is the Qt shell inside the unified Python package.
cd packages/ddalab && ./start.sh
The analysis engine is built for performance. If you are modifying dda-rs:
- Do not overuse paralellization, as an overhead may be incurred for smaller parallel tasks.
- Ensure all processing remains local.
- Add a test case to verify accuracy.
All contributors will be acknowledged in the project documentation. For significant contributions to the codebase or methodology, we are happy to discuss co-authorship on future software publications.
Questions?
Feel free to reach out via GitHub Issues or contact Simon Dräger directly via sdraeger at salk.edu.