Reporting Bugs
Following these guidelines will help the community understand, reproduce, and fix bugs effectively.Before Submitting a Report
Check for Similar Issues
Search for similar open or closed issues. If found, add a comment to the existing issue.
Verify Version
Check if you’re using the latest version. If not, reproduce the bug with the latest release.
Submitting a Good Bug Report
A well-structured bug report should include:- Clear Title - Use a concise and descriptive title
- Version Information - Include the output of
retis --version - Reproduction Steps - Provide exact, clear steps to reproduce the bug
- Reliability - How consistently can the bug be reproduced?
- Actual Outcome - Describe what actually happens
- Expected Outcome - Describe what should happen and why
- Performance Data - Include numbers if the issue is performance-related
The community should not have to guess extra steps, configuration, or prerequisites. Provide complete information upfront.
Following Up
- It’s OK to ping once or twice
- Give the community time to reproduce and develop a solution
- Remember that everyone has limited time and must prioritize
Suggesting New Features
Feature requests help shape the direction of the project and prioritize development efforts.Before Suggesting a Feature
- Check Existing Features - Review the tool’s help documentation
- Search Issues and Milestones - Look at milestones and issues
- Comment on Existing Issues - If found, express interest and add suggestions
Creating a Feature Request
- Use a clear, concise and descriptive title
- Describe the environment and use case
- Provide detailed explanation of the desired implementation
- Explain how current behavior is lacking
- Understand that external contributions are highly valued
External contributions for new features have a great impact on choosing the direction of the project.
Code Contributions
Development Guidelines
Follow Coding Style
Adhere to Rust and BPF coding standards
Document Your Code
Document functions, structures, enums, and complex logic
Add Unit Tests
Include tests for new functionality
Use Conscious Language
Choose inclusive terminology in your code
Development Setup
Base your work on themain branch:
Coding Style
Rust Code - Strictly follow the Rust coding style as enforced byrustfmt
BPF Code - Follow the Linux kernel coding style as enforced by checkpatch.pl, particularly the networking flavor for multi-line comments.
checkpatch.pl can generate false positives. When this happens, the coding style rules take precedence.Events and Rust Bindings
When introducing new events or modifying existing ones:- Annotate - Add
__bindingannotation to new event types - Generate - Run
make gen-bindings - Commit - Include generated files in your pull request
Submit binding changes in separate patches to facilitate review. You’ll need
bindgen installed - check the current version in bindings headers.Testing Guidelines
Before opening a pull request:Code Coverage
Assess test coverage locally:If your default toolchain isn’t installed via rustup, set
CARGO_OPTS=+nightly to specify a rustup-installed toolchain.Backward Compatibility
Retis maintains compatibility guarantees as described in the compatibility documentation.- Ensure backward compatibility of generated events
- Update
retis-events/src/compat/compat.rswhen needed - Test with previous versions when applicable
Pull Request Process
Before Opening a PR
Test Your Changes
Test even simple one-liner changes
Run Lints
Execute
make lints and fix issuesSign Off Commits
Follow DCO requirements
Clear Description
Use descriptive title and detailed explanation
PR Description Checklist
- Clear Title - Concise and descriptive
- References - Link related issues or PRs
- Environment - Describe where the feature provides value
- Explanation - Detail why, how, and expected behavior
- Testing Steps - Provide step-by-step testing guide
- RFC Tag - Add “[RFC]” prefix for discussion-focused PRs
Following Up
- Resolve Conversations - Mark applicable discussions as resolved
- Handle Conflicts - Rebase on latest
mainif needed - Be Patient - The community has limited time and prioritizes accordingly
Python Bindings Development
Quick build and test workflow using maturin:Documentation Preview
Generate a local preview of the documentation:localhost:8000 in your browser.
Getting Help
GitHub Issues
Ask questions and report problems
Discussions
Join community discussions
Your contributions help make Retis better for everyone. Thank you for being part of the community!
