Ways to Support the Project
If you like the project but don’t have time to contribute code, there are other ways to show your support:- Star the project on GitHub
- Tweet about it and share with your network
- Reference Chainbench in your project’s readme
- Mention the project at local meetups and tell your friends/colleagues
Getting Started
Coding Conventions
Chainbench follows strict code quality standards to maintain consistency:Formatting Standards
Formatting Standards
- Black: 120-character line length for code formatting
- isort: Black-compatible profile for import sorting
- Type hints: Use type hints where appropriate
- All code must pass MyPy type checking
Linting Rules
Linting Rules
- Flake8: Standard linting with E203 and W503 ignored for Black compatibility
- Keep the codebase clean and well-documented
- Follow existing patterns in the codebase
Code Quality Checks
Before completing any task, run these quality checks:| Command | Purpose |
|---|---|
poetry run black . | Format code to project standards |
poetry run isort . | Sort imports |
poetry run flake8 | Run linting checks |
poetry run mypy . | Run type checks |
Testing Guidelines
Always use headless mode with short test durations during development. Never run long-duration tests during development sessions.
Testing Best Practices
- Start with minimal load: Use few users and low spawn rates
- Use —autoquit flag: Ensures tests terminate properly
- Test against dev nodes first: Never test production nodes during development
- Start with light profiles: Before testing heavy profiles
- Monitor target node health: During benchmarks
Development Workflow
Managing Dependencies
If you need to add or update dependencies:Reporting Bugs
Before Submitting a Bug Report
- Ensure you’re using the latest version
- Verify it’s actually a bug and not an error on your side
- Check if there’s already a bug report for your issue
- Search the internet to see if others have encountered the same issue
- Collect information about the bug:
- Stack trace (Traceback)
- OS, Platform, and Version
- Python version and package versions
- Your input and the output
- Can you reliably reproduce the issue?
How to Submit a Good Bug Report
Never report security-related issues publicly. Contact the maintainers directly for security vulnerabilities.
- Open an Issue on GitHub
- Explain the expected behavior vs. actual behavior
- Provide as much context as possible
- Describe the reproduction steps in detail
- Include the information you collected
- Label the issue accordingly
- Try to reproduce the issue with your steps
- Mark it as
needs-reproif steps are unclear - Mark it as
needs-fixonce reproduced
Suggesting Enhancements
Before Submitting an Enhancement
- Ensure you’re using the latest version
- Check if the enhancement has already been suggested
- Verify your idea fits with the project’s scope and aims
- Make a strong case for why this feature would benefit most users
How to Submit a Good Enhancement Suggestion
Enhancement suggestions are tracked as GitHub issues:- Use a clear and descriptive title
- Provide a step-by-step description in detail
- Describe the current behavior and expected behavior
- Explain why this enhancement would be useful to most users
- Point to other projects that implement similar features
Legal Notice
When contributing to this project, you must agree that:- You have authored 100% of the content
- You have the necessary rights to the content
- The content you contribute may be provided under the project license
Questions?
Before asking a question:- Search for existing Issues that might help you
- Search the internet for answers first
- Open an Issue on GitHub
- Provide as much context as possible
- Include relevant project and platform versions