Contributing to Edge-Utils
Welcome! We appreciate your interest in contributing to Edge-Utils. This document provides guidelines and processes for contributing to the project.Ways to Contribute
Code Contributions
- Bug Fixes: Fix bugs and issues reported in the issue tracker
- Features: Implement new features from the roadmap or feature requests
- Performance: Optimize existing code for better performance
- Documentation: Improve documentation, add examples, or fix typos
Non-Code Contributions
- Bug Reports: Report bugs with detailed reproduction steps
- Feature Requests: Suggest new features or improvements
- Documentation: Write or improve documentation
- Testing: Add test cases or improve test coverage
- Reviews: Review pull requests from other contributors
Development Setup
Prerequisites
- Node.js 18+ and npm
- Git
- A code editor (VS Code recommended)
Local Development
-
Fork the repository
-
Install dependencies
-
Set up development environment
-
Run tests
-
Start development server
Project Structure
Development Workflow
1. Choose an Issue
- Check the issue tracker for open issues
- Look for issues labeled
good first issue
orhelp wanted
- Comment on the issue to indicate you’re working on it
2. Create a Branch
3. Make Changes
- Write clear, concise commit messages
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
4. Test Your Changes
5. Submit a Pull Request
- Push your branch to your fork
- Create a pull request against the main branch
- Fill out the pull request template
- Wait for review and address feedback
Code Guidelines
JavaScript/TypeScript Style
- Use ES6+ features
- Use async/await for asynchronous code
- Use const/let instead of var
- Use template literals instead of string concatenation
- Use arrow functions when appropriate
- Use meaningful variable and function names
Code Formatting
We use ESLint and Prettier for code formatting. The configuration is inpackage.json
.
Testing
- Write unit tests for all new functionality
- Aim for high test coverage (>80%)
- Use descriptive test names
- Test both success and error cases
- Mock external dependencies
Example Test
Documentation
API Documentation
- Document all public APIs with JSDoc comments
- Include parameter types and descriptions
- Document return values and possible errors
- Provide usage examples
Example JSDoc
README Updates
- Update README.md for significant changes
- Add examples for new features
- Update installation instructions if needed
Pull Request Process
Before Submitting
- Tests pass locally
- Code is formatted and linted
- Documentation is updated
- Commit messages are clear and descriptive
- Branch is up to date with main
Pull Request Template
Please fill out the pull request template with:- Description: What changes were made and why
- Type of change: Bug fix, feature, documentation, etc.
- Testing: How the changes were tested
- Breaking changes: Any breaking changes and migration guide
Review Process
- Automated Checks: CI/CD pipeline runs tests and linting
- Code Review: Maintainers review the code
- Feedback: Address any feedback or requested changes
- Approval: PR is approved and merged
Community Guidelines
Communication
- Be respectful and inclusive
- Use clear and concise language
- Provide constructive feedback
- Ask questions if something is unclear
Issue Reporting
When reporting bugs, please include:- Description: Clear description of the issue
- Steps to reproduce: Step-by-step reproduction guide
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Environment: OS, Node.js version, browser, etc.
- Code sample: Minimal code to reproduce the issue
Feature Requests
When requesting features, please include:- Description: What feature you want
- Use case: Why you need this feature
- Proposed solution: How you think it should work
- Alternatives: Other solutions you’ve considered
Recognition
Contributors are recognized in:- GitHub contributors list
- CHANGELOG.md for significant contributions
- Release notes
- Social media mentions (with permission)
Getting Help
- Documentation: Check the docs folder and README
- Issues: Search existing issues or create new ones
- Discussions: Use GitHub Discussions for questions
- Discord/Slack: Join our community chat (if available)