Thank you in advance for your interest in contributing! This document provides guidelines and instructions for contributing to this project.
- Be respectful and inclusive
- Provide constructive feedback
- Respect intellectual property rights
- Focus on responsible disclosure
Just add me on discord: archangel1911 and let me know
When reporting bugs or issues:
- Check existing issues - Avoid duplicates
- Be descriptive - Include:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Your environment (OS, Rust version, etc.)
- Include logs - Attach error messages or debug output
- Minimal reproducible example - If possible
For feature requests:
- Check roadmap - See if already planned in docs/general/ROADMAP_V3.2_TO_V4.0.md
- Describe the use case - Why is this feature needed?
- Provide examples - How would users interact with it?
- Consider scope - Will this benefit the broader community?
# Clone the repository
git clone https://github.com/yourusername/rust-decompiler.git
cd rust-decompiler/rust_file_explorer
# Install Rust (if not installed)
# https://rustup.rs/
# Build the project
cargo build
# Run tests
cargo test
# Run with debug output
cargo run-
Create a branch
git checkout -b feature/description-or-fix/issue-number
-
Make changes
- Write clear, idiomatic Rust code
- Add comments for complex logic
- Follow existing code style
-
Test your changes
cargo test cargo build --release cargo clippy -- -D warnings cargo fmt -
Commit with clear messages
git commit -m "Brief description Detailed explanation if needed - Bullet point 1 - Bullet point 2 Fixes #issue-number (if applicable)
-
Push and create Pull Request
git push origin feature/description
- Rust formatting: Use
cargo fmt - Linting: Pass
cargo clippywithout warnings - Documentation: Document public APIs and complex logic
- Comments: Explain "why", not "what"
- Naming: Use clear, descriptive names
Example:
/// Detects platform and returns appropriate compiler flags
///
/// # Returns
/// A vector of compiler-specific optimization flags
pub fn get_platform_flags() -> Vec<String> {
// Implementation
}- Add tests for new functionality
- Test on Windows, Linux, and macOS if possible
- Include both positive and negative test cases
#[test]
fn test_c_compilation_windows() {
// Test C compilation on Windows
}
#[test]
fn test_rust_compilation_cross_platform() {
// Test Rust compilation across platforms
}- Keep PRs focused - One feature/fix per PR
- Update documentation - Include relevant docs changes
- Reference issues - Link to related issues
- Be responsive - Address review feedback promptly
- Sign commits - Use GPG signing if possible:
git commit -S -m "message"
rust_file_explorer/
├── src/
│ ├── main.rs # Entry point
│ ├── lib.rs # Library exports
│ ├── decompiler.rs # Core decompilation
│ ├── custom_compiler.rs # Compilation support
│ ├── cross_platform_compiler.rs # Cross-platform compilation
│ ├── pe_reassembler.rs # PE file reassembly
│ └── ... (other modules)
├── native/
│ └── disassembler.c # Native C code
├── docs/ # Documentation
├── examples/ # Example code
└── tests/ # Integration tests
When contributing, ensure documentation is updated:
- Update README.md if user-facing changes
- Update relevant docs in docs/ directory
- Add inline code comments for complex logic
- Update CHANGELOG if significant changes
- Profile code before optimization
- Use
cargo benchfor benchmarking - Document performance implications
- Consider memory usage for large files
Test on multiple platforms:
- Windows 10/11 - Primary target
- Ubuntu/Debian - Linux support
- macOS (optional) - Additional support
Platform-specific code:
#[cfg(target_os = "windows")]
fn platform_specific_function() { }
#[cfg(target_os = "linux")]
fn platform_specific_function() { }
#[cfg(target_os = "macos")]
fn platform_specific_function() { }- Don't commit credentials or secrets
- Report security vulnerabilities privately
- Follow responsible disclosure practices
- Respect intellectual property rights
- Check documentation: https://github.com/yourusername/rust-decompiler/tree/main/docs
- Review existing issues and discussions
- Start a new discussion for questions
<type>(<scope>): <subject>
<body>
<footer>
Types: feat, fix, docs, style, refactor, perf, test, chore
Example:
feat(compiler): add cross-platform C compilation support
- Implement Windows, Linux, macOS compiler detection
- Add platform-specific compilation flags
- Improve error reporting
Fixes #123
All pull requests go through:
- Automated tests (CI/CD)
- Code review
- Approval from maintainers
- Merge to main branch
Contributors are recognized in:
- CONTRIBUTORS.md file
- GitHub contributors page
- Release notes (for significant contributions)
Thank you for contributing to making this project better! 🚀