Thank you for your interest in contributing to Open Remote ID Parser! This document provides guidelines and instructions for contributing.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Coding Standards
- Testing
- Submitting Changes
- Issue Guidelines
This project adheres to a code of conduct. By participating, you are expected to:
- Be respectful and inclusive
- Accept constructive criticism gracefully
- Focus on what is best for the community
- Show empathy towards other community members
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/YOUR_USERNAME/open-remote-id-parser.git cd open-remote-id-parser - Add the upstream remote:
git remote add upstream https://github.com/user/open-remote-id-parser.git
# Install dependencies (Ubuntu/Debian)
sudo apt-get install cmake g++ git
# Install dependencies (macOS)
brew install cmake
# Build
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DORIP_BUILD_TESTS=ON
cmake --build . --parallel
# Run tests
ctest --output-on-failurecd python
pip install -e ".[dev]"
pytest tests/cd android
./gradlew :orip:buildUse descriptive branch names:
feature/add-wifi-nan-supportfix/bluetooth-parsing-crashdocs/update-api-referencerefactor/simplify-decoder-interface
Follow the conventional commits format:
<type>(<scope>): <description>
[optional body]
[optional 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(decoder): add WiFi NAN support
Implement WiFi Neighbor Awareness Networking decoder
for parsing Remote ID broadcasts over WiFi NAN.
Closes #123
fix(android): resolve JNI memory leak
Free native resources properly in RemoteIDParser.close()
- Use C++17 features
- Follow the existing code style
- Use
snake_casefor functions and variables - Use
PascalCasefor classes and types - Use
SCREAMING_SNAKE_CASEfor constants - Add comments for non-obvious logic
- Keep functions small and focused
// Good
class RemoteIDParser {
public:
ParseResult parse(const RawFrame& frame);
private:
bool validate_payload(const std::vector<uint8_t>& payload);
};
// Constants
constexpr size_t MAX_PAYLOAD_SIZE = 256;- Follow PEP 8 style guide
- Use type hints
- Use
snake_casefor functions and variables - Use
PascalCasefor classes
from typing import Optional
def parse_frame(payload: bytes, rssi: int) -> Optional[UAVObject]:
"""Parse a Remote ID frame."""
pass- Follow Kotlin coding conventions
- Use data classes for DTOs
- Prefer immutability
data class UAVObject(
val id: String,
val location: LocationVector?,
val rssi: Int
)- Write tests for all new features
- Write tests for bug fixes (to prevent regression)
- Aim for high code coverage
- Use descriptive test names
TEST_F(ASTM_F3411_Test, DecodeBasicID_ValidSerialNumber) {
auto msg = createBasicIDMessage("DJI1234567890ABC");
auto adv = createBLEAdvertisement(msg);
UAVObject uav;
auto result = decoder.decode(adv, uav);
EXPECT_TRUE(result.success);
EXPECT_EQ(uav.id, "DJI1234567890ABC");
}# C++ tests
cd build && ctest --output-on-failure
# Python tests
cd python && pytest -v
# With coverage
pytest --cov=orip tests/-
Update your fork:
git fetch upstream git rebase upstream/main
-
Create a feature branch:
git checkout -b feature/your-feature
-
Make your changes and commit them
-
Push to your fork:
git push origin feature/your-feature
-
Open a Pull Request on GitHub
- All tests pass
- Code follows project style guidelines
- New features include tests
- Documentation is updated if needed
- Commit messages follow conventions
- PR description explains the changes
- A maintainer will review your PR
- Address any feedback
- Once approved, your PR will be merged
Include:
- ORIP version
- Platform (OS, compiler, etc.)
- Steps to reproduce
- Expected vs actual behavior
- Sample code or data if possible
Include:
- Use case description
- Proposed solution (if any)
- Alternative solutions considered
- Willingness to implement
For security vulnerabilities, please do NOT open a public issue. Instead, email the maintainers directly.
- Open a Discussion for questions
- Check existing issues before creating new ones
- Join our community chat (if available)
Thank you for contributing to Open Remote ID Parser!