Contributing to FuryMesh¶
Thank you for your interest in contributing to FuryMesh! This document provides guidelines and instructions for contributing to the project.
Code of Conduct¶
By participating in this project, you agree to abide by our Code of Conduct. Please read it before contributing.
Getting Started¶
Prerequisites¶
- Go 1.18 or higher
- Git
- Basic understanding of P2P networks and distributed systems
Setting Up the Development Environment¶
- Fork the repository on GitHub
- Clone your fork locally:
- Add the original repository as an upstream remote:
- Install dependencies:
Development Workflow¶
Branching Strategy¶
main
- stable releasesdevelop
- development branch- Feature branches - named as
feature/your-feature-name
- Bugfix branches - named as
bugfix/issue-description
Creating a New Feature¶
- Sync your local repository with the upstream:
- Create a new branch for your feature:
- Make your changes and commit them with clear, descriptive messages:
- Push your branch to your fork:
- Create a Pull Request from your fork to the
develop
branch of the main repository
Code Style¶
FuryMesh follows the standard Go style guidelines. Please ensure your code:
- Is formatted with
gofmt
- Passes
golint
andgo vet
- Includes appropriate comments and documentation
- Has meaningful variable and function names
Testing¶
All new features and bug fixes should include tests. Run the test suite with:
For more comprehensive testing, including integration tests:
Pull Request Process¶
- Ensure your code follows the style guidelines and passes all tests
- Update the documentation if necessary
- Include a clear description of the changes in your PR
- Link any related issues in your PR description
- Wait for a maintainer to review your PR
- Address any feedback from the review
- Once approved, a maintainer will merge your PR
Documentation¶
Documentation is crucial for FuryMesh. If you're adding a new feature, please update:
- Code comments
- README.md (if applicable)
- Documentation in the
docs/
directory
To build and preview the documentation locally:
Then visit http://localhost:8000
in your browser.
Reporting Bugs¶
When reporting bugs, please include:
- A clear, descriptive title
- Steps to reproduce the issue
- Expected behavior
- Actual behavior
- FuryMesh version
- Operating system and version
- Any relevant logs or error messages
Feature Requests¶
Feature requests are welcome! Please provide:
- A clear description of the feature
- The motivation behind the feature
- Potential implementation details (if you have ideas)
Community¶
Join our community channels to discuss development:
License¶
By contributing to FuryMesh, you agree that your contributions will be licensed under the project's MIT License.