Contributing Guidelines
We welcome contributions in the form of bug reports, bug fixes, new features, and documentation updates.
Contribution Policy
All contributions should align with the core engineering direction of navigate:
Keep a clear model-view-controller separation. See software architecture.
Minimize new dependencies when possible.
Avoid unnecessary configuration variables in
configuration.yamlandexperiment.yaml.Discuss major refactors with the software team before implementation.
For microscope-control behavior changes, require live-system validation before merge into
develop.Use standard units in model/view/controller code:
Time: milliseconds
Distance: micrometers
Voltage: volts
Rotation: degrees
Contribution Workflow
For setup and submission mechanics (forking, cloning, environment setup, branch creation, and pull requests), follow Developer Install.
PR Quality Bar
Before opening a pull request, complete all required checks:
Run formatting and linting: pre-commit run --all-files
Run tests: pytest
If documentation changed, run: conda run -n navigate make -C docs html -j 15
Add or update tests for new or changed behavior
Update documentation for user-facing or developer-facing changes
Code and Testing Standards
For coding style, type hints, docstring standards, linting/formatting policy, and testing guidance, see Code Quality.
Hardware Integration Guidance
For hardware concurrency, blocking communication patterns, and device interface requirements, see Hardware Communication Guidelines.
Where To Ask For Help
Open a general issue: GitHub Issues
Submit a bug report: Issue report template
Submit a feature request: Feature request template
Contributor Behavior
All contributors are expected to follow the Code of Conduct.