Contributing to ACloudViewer#
We welcome contributions from the community! This guide will help you get started with contributing to ACloudViewer.
Getting Started#
Fork the Repository
Fork the ACloudViewer repository on GitHub.
Clone Your Fork
git clone https://github.com/YOUR_USERNAME/ACloudViewer.git cd ACloudViewer
Set Up Development Environment
Follow the Building from Source guide to build ACloudViewer from source.
Development Workflow#
Creating a Branch#
Create a new branch for your feature or bug fix:
git checkout -b feature/your-feature-name
Making Changes#
Make your changes to the codebase
Follow the coding style guidelines (see below)
Add tests for new features
Update documentation as needed
Running Tests#
Before submitting your changes, run the test suite:
cd build
make tests -j$(nproc)
ctest
For Python tests:
pytest python/test/
Code Style Guidelines#
C++ Code Style#
Follow the Google C++ Style Guide
Use 4 spaces for indentation (no tabs)
Maximum line length: 120 characters
Use
clang-formatfor automatic formatting
Python Code Style#
Follow PEP 8
Use 4 spaces for indentation
Maximum line length: 88 characters (Black formatter)
Use type hints where appropriate
Documentation#
Document all public APIs with clear docstrings
Use Doxygen comments for C++ code
Use Google-style docstrings for Python code
Update relevant documentation in
docs/directory
Commit Guidelines#
Commit Messages#
Follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(io): add support for LAZ format
fix(visualization): correct point cloud rendering issue
docs: update installation instructions
Submitting Changes#
Creating a Pull Request#
Push your changes to your fork:
git push origin feature/your-feature-name
Go to the ACloudViewer repository and create a pull request
Fill out the pull request template with:
Clear description of changes
Related issue numbers
Testing performed
Screenshots (if applicable)
Pull Request Review#
Maintainers will review your PR
Address feedback and update your branch as needed
Once approved, your PR will be merged
Community Guidelines#
Code of Conduct#
We follow the Contributor Covenant Code of Conduct.
Be respectful and constructive in all interactions.
Getting Help#
Issues: Report bugs or request features on GitHub Issues
Discussions: Ask questions on GitHub Discussions
Documentation: Check the documentation for guides and API references
Types of Contributions#
Bug Reports#
When reporting bugs, please include:
ACloudViewer version
Operating system and version
Steps to reproduce
Expected vs actual behavior
Error messages or logs
Feature Requests#
For feature requests:
Clearly describe the proposed feature
Explain use cases and benefits
Provide examples if possible
Documentation Improvements#
Documentation contributions are highly valued:
Fix typos or unclear explanations
Add examples and tutorials
Improve API documentation
Translate documentation
Code Contributions#
Areas where contributions are welcome:
Core Library: Point cloud processing, mesh algorithms, I/O support
Visualization: Rendering improvements, GUI enhancements
ML/DL: Machine learning integrations, neural network support
Plugins: New plugin development
Python Bindings: Python API improvements
Performance: Optimization and GPU acceleration
Recognition#
Contributors will be acknowledged in:
CHANGELOG.mdGitHub contributors page
Release notes
Thank you for contributing to ACloudViewer! 🎉