Thank you for your interest in contributing to CycloneDDS.NET! We welcome contributions from the community.
- .NET 8.0 SDK or later
- Windows (currently the primary development platform)
- PowerShell (for build scripts)
-
Clone the repository with submodules:
git clone --recursive https://github.com/pjanec/CycloneDds.NET.git cd CycloneDds.NET -
Build the native Cyclone DDS libraries (one-time setup):
.\build\native-win.ps1 -
Build and pack the NuGet packages:
.\build\pack.ps1
-
Run tests:
dotnet test
src/- Core C# source codeCycloneDDS.Core/- Core DDS functionalityCycloneDDS.Runtime/- Runtime marshalling and native interopCycloneDDS.Schema/- Schema definition attributes
tools/- Build-time code generation toolstests/- Unit and integration testscyclonedds/- Native Cyclone DDS submodulebuild/- Build scripts
-
Fork the repository and create your branch from
main:git checkout -b feature/my-new-feature
-
Make your changes following the coding standards:
- Follow existing code style and conventions
- Add XML documentation comments for public APIs
- Include unit tests for new functionality
- Ensure all tests pass
-
Commit your changes with clear, descriptive messages:
git commit -m "Add feature: description of what you added" -
Push to your fork and submit a pull request:
git push origin feature/my-new-feature
-
Describe your changes in the PR description:
- What problem does this solve?
- How did you test it?
- Are there any breaking changes?
- Use C# idiomatic patterns and modern language features
- Follow Microsoft's C# Coding Conventions
- Keep performance in mind - this is a high-performance library
- Write clear, self-documenting code with appropriate comments
- Add XML documentation for public APIs
- Write unit tests for new functionality
- Ensure existing tests still pass
- For performance-critical code, consider adding benchmarks
- Test with both zero-copy and managed allocation paths where applicable
When reporting issues, please include:
- .NET SDK version
- Operating system and version
- Steps to reproduce the issue
- Expected vs actual behavior
- Any relevant error messages or stack traces
- Be respectful and inclusive
- Provide constructive feedback
- Focus on what is best for the project and community
If you have questions about contributing, feel free to:
- Open an issue for discussion
- Refer to the documentation in the
docs/directory - Check existing issues and PRs
By contributing, you agree that your contributions will be licensed under the MIT License.