Contributing Guidelines
Relevant source files
The following files were used as context for generating this wiki page:
OWASP Nettacker welcomes contributions from the community to enhance its automated penetration testing and information-gathering framework. These guidelines ensure that contributions align with the project's technical standards, security protocols, and community values. The project emphasizes a harassment-free experience for all participants as outlined in the Code of Conduct.
Sources: CONTRIBUTING.md:1-10, CODE_OF_CONDUCT.md:3-8, README.md:27-35
Code of Conduct
All contributors are expected to adhere to the Contributor Covenant. This includes using welcoming language, being respectful of differing viewpoints, and focusing on the best interests of the community. Unacceptable behaviors such as harassment, trolling, or publishing private information are subject to enforcement by project maintainers.
Standards of Behavior
- Positive: Inclusive language, empathy, and accepting constructive criticism.
- Negative: Sexualized language, personal attacks, and public or private harassment.
Sources: CODE_OF_CONDUCT.md:10-35
Technical Requirements and Coding Style
The project supports Python versions 3.10 through 3.12. All code must adhere to specific formatting and naming conventions to maintain a consistent codebase.
Development Environment Setup
Contributors should use poetry for dependency management and environment isolation.
| Command | Description |
|---|---|
poetry install | Installs project dependencies defined in pyproject.toml |
make pre-commit | Runs all linting and formatting hooks |
make test | Executes the test suite using pytest |
poetry run nettacker | Runs the CLI version of the tool |
Sources: AGENTS.md:14-20, pyproject.toml:1-40
Coding Standards
- Indentation: 4-space indents.
- Line Length: Maximum 99 characters.
- Formatting: Use
rufffor linting and formatting. - Naming Conventions:
- Modules/Files:
lower_snake_case - Functions/Variables:
lower_snake_case - Classes:
PascalCase - Constants:
UPPER_SNAKE_CASE
- Modules/Files:
Sources: AGENTS.md:22-27, pyproject.toml:88-120
Contribution Workflow
The following flowchart illustrates the standard process for contributing code to OWASP Nettacker, from forking the repository to the final Pull Request (PR) review.
The process ensures that all code is linted, tested, and signed before it reaches the main branch.
Sources: AGENTS.md:36-43, ADOPTERS.md:11-15
Pull Request (PR) Guidelines
PRs must include:
- A clear description and rationale for the changes.
- Linked issues (e.g.,
Fixes #123). - Test evidence (logs or screenshots).
- Updated documentation if the behavior changes.
Sources: AGENTS.md:40-43
Testing Guidelines
Contributions that include new features or bug fixes must be accompanied by tests. The project uses pytest with pytest-asyncio and xdist for parallel execution.
Test Structure
Tests must be located in the tests/ directory, mirroring the nettacker/ package layout. For example, core logic tests reside in tests/core/.
Coverage Requirements
Code coverage is enforced via the --cov=nettacker flag as configured in pyproject.toml.
Sources: AGENTS.md:29-34, pyproject.toml:104-115
Security Policy
Security is a priority for OWASP Nettacker. Contributors and users should follow the responsible disclosure process for any vulnerabilities discovered within the tool itself.
Reporting Vulnerabilities
- GitHub Security Advisory: Submit a private advisory at the official security page.
- Email: Contact project leaders directly for security-related issues.
Vulnerability Handling Process
The project leaders follow a structured triage and fix process:
Sources: SECURITY.md:16-40
Community and Support
For questions not covered in the documentation, contributors can engage with the team via:
- Slack: The
#project-nettackerchannel on the OWASP Slack workspace. - Documentation: Detailed developer docs are available at ReadTheDocs.
- Adopters: Organizations using the tool are encouraged to list themselves in
ADOPTERS.mdby submitting a PR.
Sources: CONTRIBUTING.md:3-8, ADOPTERS.md:11-15, README.md:65-75