Getting Started
Fork the repository
Fork kashsuks/rode to your GitHub account
Set up development environment
Follow the Building from Source guide to set up your environment
Development Setup
Prerequisites
Ensure you have:Rust Toolchain
Rust 2021 edition or later
Code Editor
Any editor with Rust supportRecommended: VS Code with rust-analyzer
Git
Version control system
Cargo Tools
Helpful cargo extensions
Running in Development Mode
Usecargo watch for automatic rebuilds during development:
Code Style
Formatting
Rode uses standard Rust formatting. Before committing:Linting
Run Clippy to catch common mistakes and improve code quality:Code Organization
Follow these conventions:Module Structure
Module Structure
- Keep modules focused on a single responsibility
- Use
mod.rsfor module organization - Export public APIs through module re-exports
Naming Conventions
Naming Conventions
- Use
snake_casefor functions, variables, modules - Use
PascalCasefor types, structs, enums - Use
SCREAMING_SNAKE_CASEfor constants
Documentation
Documentation
Add doc comments for public APIs:
Error Handling
Error Handling
- Use
Result<T, E>for operations that can fail - Avoid
.unwrap()in production code - Use
.unwrap_or_else()ormatchfor graceful handling
Making Changes
Understanding the Codebase
Before making changes, familiarize yourself with:Architecture
Read the architecture documentation
Message Flow
Understand Iced’s message-driven architecture in
src/app.rsModule Layout
Browse the module organization in
src/Dependencies
Check
Cargo.toml for the libraries Rode usesTypes of Contributions
- Bug Fixes
- New Features
- UI Improvements
- Documentation
Fixing Bugs
Identify the issue
- Reproduce the bug consistently
- Check existing issues on GitHub
- Create an issue if one doesn’t exist
Locate the code
- Use the architecture guide to find relevant modules
- Use
cargo clippyto identify potential issues - Add debug logging if needed
Fix and test
- Make minimal changes to fix the issue
- Test thoroughly in both debug and release builds
- Ensure no regressions in other features
Testing
Running Tests
Rode includes tests in thetests/ directory:
Writing Tests
When adding new features, include tests:Manual Testing
Test your changes manually:Commit Guidelines
Commit Messages
Use clear, descriptive commit messages:Commit Message Format
Follow this structure:feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Commit Best Practices
Keep commits focused
Keep commits focused
Each commit should address one logical change:✅ Good: Separate commits for different changes❌ Avoid: Multiple unrelated changes in one commit
Write meaningful messages
Write meaningful messages
Explain why the change was made, not just what changed:✅ Good:❌ Avoid:
Reference issues
Reference issues
Link commits to related issues:
Pull Request Process
Before Submitting
Creating a Pull Request
Open a PR on GitHub
Go to the Rode repository and click “New Pull Request”
Fill out the template
Provide:
- Description: What does this PR do?
- Motivation: Why is this change needed?
- Testing: How did you test this?
- Screenshots: For UI changes
- Related Issues: Link to issues this PR addresses
PR Template Example
After Submission
Respond to feedback
Respond to feedback
- Address review comments promptly
- Ask questions if feedback is unclear
- Push additional commits to the same branch
- Be open to suggestions and alternative approaches
Keep your branch updated
Keep your branch updated
If the main branch changes while your PR is open:
Be patient
Be patient
Rode is maintained by a solo developer with limited time.
Reviews may take time. Don’t be discouraged if you don’t get immediate feedback.
Code Review
What Reviewers Look For
Correctness
Does the code work as intended? Are there edge cases?
Code Quality
Is the code clean, readable, and idiomatic Rust?
Performance
Are there performance implications? Can it be optimized?
Maintainability
Is the code easy to understand and modify in the future?
Addressing Review Comments
When reviewers request changes:Community Guidelines
Be Respectful
Be kind and constructive in discussions
Welcome newcomers and help them get started
Accept that there may be different valid approaches
Focus on the code, not the person
Communication
- GitHub Issues
- Pull Requests
Use issues for:
- Bug reports
- Feature requests
- Questions about the codebase
- Discussion of proposed changes
Development Tips
Debugging
Debugging
Use Rust’s built-in debugging:
Performance Profiling
Performance Profiling
Profile your changes if they affect performance:
Understanding Iced
Understanding Iced
Rode uses the Iced GUI framework. Helpful resources:
Incremental Development
Incremental Development
Work in small, testable increments:
- Write the minimal code to test your idea
- Test it works
- Refactor and improve
- Add error handling
- Add documentation
- Test edge cases
Getting Help
GitHub Issues
Ask questions by opening an issue
Architecture Docs
Review the architecture documentation
Source Code
Read the well-commented source code
Rust Docs
Check the official Rust documentation
Recognition
All contributors are recognized in:- The GitHub contributors list
- Release notes for significant contributions
- The project README
Your contributions make Rode better for everyone. Thank you for taking the time to contribute!
License
By contributing to Rode, you agree that your contributions will be licensed under the GNU General Public License v3.0.Next Steps
Architecture
Deep dive into Rode’s architecture
Building
Set up your development environment