Thank you for considering contributing to PRISM! We welcome contributions of all kinds, including bug reports, feature requests, documentation improvements, and code contributions.
By contributing, you agree that your contributions will be licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). If you are an organization or otherwise cannot agree to this, please contact us before contributing.
If you find a bug, please open an issue on GitHub with:
- A clear, descriptive title
- Steps to reproduce the issue
- Expected vs. actual behavior
- Your environment (OS, Python version, PRISM version)
- Sample data or minimal example (if applicable)
Feature requests are welcome! Please open an issue with:
- A clear description of the feature
- Use cases and motivation
- Example workflows or mockups (if applicable)
- Fork the repository and clone your fork locally
- Create a feature branch from
main:git checkout -b feature/your-feature-name
- Set up your development environment:
bash setup.sh # macOS/Linux # OR .\setup.ps1 # Windows
- Make your changes following our coding standards (see below)
- Run tests to ensure nothing breaks:
./run_tests.sh # macOS/Linux # OR python run_all_tests.py
- Commit your changes with clear, descriptive commit messages
- Push to your fork and open a pull request against
main
- Provide a clear description of the changes
- Reference any related issues
- Ensure all tests pass
- Update documentation if needed
- Add tests for new functionality
Before requesting review, run through the Release Checklist.
If your changes touch file handling, uploads, or shell execution paths, verify the expectations in SECURITY.md.
- Follow PEP 8 style guidelines for Python code
- Use meaningful variable and function names
- Add docstrings to functions and classes
- Keep functions focused and modular
- Use type hints where appropriate
We maintain comprehensive test coverage. When adding new features:
- Add unit tests in
tests/test_unit.pyfor isolated functionality - Add integration tests in
tests/test_validator.pyfor validation logic - Add web tests in
tests/test_web_*.pyfor web interface features - Ensure cross-platform compatibility (test on Windows if possible)
Documentation is in the docs/ folder and built with Sphinx:
- Update relevant
.mdfiles when changing functionality - Add examples for new features
- Keep screenshots and examples up to date
- Use clear, concise language
- Be respectful and constructive in discussions
- Help others learn and grow
- Follow the code of conduct (implied: be professional and inclusive)
If you have questions about contributing, feel free to:
- Open a discussion on GitHub
- Contact the maintainer(s)
- Check the documentation at https://prism-studio.readthedocs.io
Thank you for helping make PRISM better!