Thank you for your interest in contributing to Walrus! We welcome contributions from the community and appreciate your help in making this project better.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/nubskr/walrus/llms.txt
Use this file to discover all available pages before exploring further.
Getting Started
Follow these steps to start contributing:Requirements
Testing
Before submitting your pull request:-
Run the full test suite
- Ensure all tests pass without any failures or warnings
- Add tests for new functionality if you’re introducing new features
-
Run benchmarks for performance changes
Available Tests
The distributed Walrus system includes comprehensive integration tests:Code Quality
Clear Code
Write self-documenting code with appropriate comments explaining complex logic.
Follow Conventions
Match existing code patterns and naming conventions in the project.
Rust Best Practices
Use idiomatic Rust with proper error handling and ownership patterns.
Documentation
Update relevant documentation when changing public APIs.
Types of Contributions
We welcome various types of contributions:Bug Fixes
Help us identify and fix issues in the codebase:- Search existing issues first to avoid duplicates
- Include reproduction steps in your PR description
- Add regression tests when possible
- Reference the issue number in your commit message
Feature Additions
Propose and implement new functionality:- Open an issue to discuss the feature before implementing
- Ensure the feature aligns with project goals
- Include comprehensive tests for the new functionality
- Update documentation and examples
Performance Improvements
Optimize existing code:- Include benchmark results showing the improvement
- Explain the optimization technique used
- Ensure correctness is not compromised
- Test under various workloads
Documentation
Improve code comments, README, or other documentation:- Fix typos and clarify confusing explanations
- Add examples for common use cases
- Update outdated information
- Improve API documentation
Tests
Add test coverage for existing functionality:- Focus on edge cases and error conditions
- Add integration tests for complex workflows
- Improve test clarity and maintainability
Bug Reports
Report issues you encounter:- Use a clear and descriptive title
- Provide detailed steps to reproduce
- Include system information (OS, Rust version, etc.)
- Add relevant error messages or logs
- Check if the issue already exists
Feature Requests
Suggest new features or improvements:- Clearly describe the proposed feature
- Explain the use case and benefits
- Discuss potential implementation approaches
- Be open to feedback and alternative solutions
Submitting Issues
When creating a new issue, please include:Clear and Descriptive Title
Clear and Descriptive Title
Use a concise title that summarizes the issue or feature request.Good: “Segment rollover fails when Raft leader changes during operation”Bad: “Bug in rollover”
Detailed Steps to Reproduce
Detailed Steps to Reproduce
For bug reports, provide exact steps to reproduce the issue:
- Start a 3-node cluster with
make cluster-bootstrap - Create topic “test” with
REGISTER test - Write 1M entries to trigger rollover
- Observe error in node logs
System Information
System Information
Include relevant environment details:
- Operating System: Ubuntu 22.04 LTS
- Rust Version: 1.75.0
- Walrus Version: 0.3.0
- Hardware: 4 CPU cores, 8GB RAM
Error Messages and Logs
Error Messages and Logs
Copy complete error messages and relevant log excerpts:
Pull Request Process
Follow these guidelines when submitting a pull request:Ensure Requirements
Verify your code follows all requirements above (tests pass, code quality maintained).
Update Documentation
If your changes affect the public API or user-facing behavior, update relevant documentation.
Add or Update Tests
Include appropriate tests for your changes. All new functionality must have test coverage.
Development Environment
Prerequisites
- Rust
- Linux (Optional)
- TLA+ (Optional)
Install Rust 1.70 or later:
Building the Project
Code Structure
Questions and Support
If you have questions about contributing or need help getting started:Open an Issue
Create an issue with the “question” label for general questions.
Check Existing Issues
Search existing issues and discussions for similar questions.
Review Documentation
Check the Architecture Guide and README for context.
Review Examples
Look at existing tests and examples in the codebase.
Code of Conduct
Please be respectful and constructive in all interactions. We’re here to build something great together!All contributors are expected to:
- Be welcoming to newcomers
- Provide constructive feedback
- Accept criticism gracefully
- Focus on what is best for the community
- Show empathy towards other community members
Recognition
Contributors are recognized in:- Git commit history
- Pull request acknowledgments
- Project documentation
- Release notes for significant contributions
Thank you for contributing to Walrus! Your efforts help make this project better for everyone.