Skip to content

Commit 3792d0e

Browse files
authored
Merge pull request #4 from cisco-ai-defense/fixfuzzername
Fixing the code repo name to make it cisco qualifier
2 parents 9516e2d + 3ebc45f commit 3792d0e

6 files changed

Lines changed: 437 additions & 314 deletions

File tree

.python-version

Lines changed: 0 additions & 1 deletion
This file was deleted.

CONTRIBUTING.md

Lines changed: 41 additions & 311 deletions
Original file line numberDiff line numberDiff line change
@@ -10,349 +10,79 @@ endeavor to review incoming issues and pull requests within 10 days, and will
1010
close any lingering issues or pull requests after 60 days of inactivity.
1111

1212
Please note that all of your interactions in the project are subject to our
13-
[Code of Conduct](/CODE_OF_CONDUCT.md). This includes creation of issues or pull
13+
[Code of Conduct](CODE_OF_CONDUCT.md). This includes creation of issues or pull
1414
requests, commenting on issues or pull requests, and extends to all interactions
1515
in any real-time space e.g., Slack, Discord, etc.
1616

1717
## Reporting Issues
1818

19-
Before reporting a new issue, please ensure that the issue was not already
20-
reported or fixed by searching through our [issues
21-
list](https://github.com/cisco-ai-defense/pickle-fuzzer/issues).
19+
Before creating an issue, please:
20+
- Search [existing issues](https://github.com/cisco-ai-defense/pickle-fuzzer/issues) to avoid duplicates
21+
- Provide clear reproduction steps
22+
- Include environment details (OS, Rust version, package version)
2223

23-
When creating a new issue, please be sure to include:
24+
**Security Issues**: Please report security vulnerabilities via [SECURITY.md](SECURITY.md), not through GitHub issues.
2425

25-
- **Clear title**: Descriptive summary of the issue
26-
- **Description**: Detailed explanation of the problem
27-
- **Steps to reproduce**: How to trigger the issue
28-
- **Expected behavior**: What should happen
29-
- **Actual behavior**: What actually happens
30-
- **Environment**: OS, Rust version, pickle-fuzzer version
31-
- **Test case**: Minimal code example (if applicable)
26+
## Feature Requests
3227

33-
**Example Issue Template:**
34-
```markdown
35-
### Description
36-
Generation fails when using protocol V4 with large opcode ranges.
28+
We welcome feature suggestions! Please:
29+
- Check for existing feature requests first
30+
- Clearly describe the use case and benefits
31+
- Consider if it aligns with the project's goals
3732

38-
### Steps to Reproduce
39-
1. Run: `pickle-fuzzer --protocol 4 --min-opcodes 500 --max-opcodes 1000 output.pkl`
40-
2. Observe error message
33+
## Pull Requests
4134

42-
### Expected Behavior
43-
Should generate a valid pickle file.
35+
Before submitting a pull request:
4436

45-
### Actual Behavior
46-
Fails with error: "FRAME size calculation overflow"
37+
1. **Check for existing work**: Search issues and PRs to avoid duplicates
38+
2. **Create an issue first**: For non-trivial changes, discuss the approach
39+
3. **Follow the development guide**: See [DEVELOPING.md](DEVELOPING.md) for setup and workflows
40+
4. **Include tests**: All changes must include appropriate tests
41+
5. **Run checks**: Ensure `cargo fmt && cargo clippy -- -D warnings && cargo test` passes
42+
6. **Update docs**: Update relevant documentation
4743

48-
### Environment
49-
- OS: macOS 14.0
50-
- Rust: 1.75.0
51-
- pickle-fuzzer: 0.1.0
52-
```
53-
54-
**If you discover a security bug, please do not report it through GitHub.
55-
Instead, please see security procedures in [SECURITY.md](/SECURITY.md).**
56-
57-
## Suggesting New Features
58-
59-
We welcome feature suggestions! Before creating a feature request:
60-
61-
1. **Check existing issues**: Search for similar feature requests
62-
2. **Consider scope**: Ensure the feature aligns with project goals
63-
3. **Provide use case**: Explain why this feature would be valuable
64-
65-
**Feature Request Template:**
66-
```markdown
67-
### Feature Description
68-
Add support for custom mutator plugins.
69-
70-
### Use Case
71-
Allow users to define domain-specific mutation strategies for targeted fuzzing.
72-
73-
### Proposed Implementation
74-
- Plugin API using dynamic loading
75-
- Trait-based mutator interface
76-
- Configuration via TOML file
77-
78-
### Alternatives Considered
79-
- Static mutator registration (less flexible)
80-
- Python-only mutators (performance concerns)
81-
```
82-
83-
Feature requests can be submitted via [GitHub Issues](https://github.com/cisco-ai-defense/pickle-fuzzer/issues) with the "enhancement" label.
84-
85-
## Sending Pull Requests
86-
87-
Before sending a new pull request, take a look at existing pull requests and
88-
issues to see if the proposed change or fix has been discussed in the past, or
89-
if the change was already implemented but not yet released.
90-
91-
We expect new pull requests to include tests for any affected behavior. This project
92-
follows [Semantic Versioning 2.0.0](https://semver.org/), and we may reserve breaking
93-
changes until the next major version release.
94-
95-
### Versioning Policy
96-
97-
**Semantic Versioning (SemVer):**
98-
- **MAJOR** (x.0.0): Incompatible API changes, breaking changes
99-
- **MINOR** (0.x.0): New features, backwards-compatible
100-
- **PATCH** (0.0.x): Bug fixes, backwards-compatible
101-
102-
**Breaking Changes:**
103-
- Changes that require users to modify their code
104-
- Removal of public APIs or features
105-
- Changes to CLI behavior or flags
106-
- Changes to output formats
107-
108-
**Pre-1.0 Versions:**
109-
During the 0.x.x phase, minor versions may include breaking changes as the API stabilizes.
110-
Once 1.0.0 is released, breaking changes will only occur in major version updates.
111-
112-
### Pull Request Guidelines
113-
114-
**Before submitting:**
115-
- [ ] Create an issue first (for non-trivial changes)
116-
- [ ] Fork the repository and create a feature branch
117-
- [ ] Write tests for your changes
118-
- [ ] Run `cargo fmt && cargo clippy -- -D warnings && cargo test`
119-
- [ ] Update documentation if needed
120-
- [ ] Add entry to CHANGELOG.md (if applicable)
121-
122-
**Pull Request Description Template:**
123-
```markdown
124-
## Description
125-
Brief summary of changes.
44+
### Pull Request Checklist
12645

127-
## Related Issue
128-
Fixes #123
129-
130-
## Changes Made
131-
- Added X feature
132-
- Fixed Y bug
133-
- Updated Z documentation
134-
135-
## Testing
136-
- [ ] Unit tests added/updated
137-
- [ ] Integration tests added/updated
138-
- [ ] Manual testing performed
139-
- [ ] All tests passing
140-
141-
## Checklist
142-
- [ ] Code follows project style guidelines
46+
- [ ] Tests added/updated and passing
47+
- [ ] Code formatted (`cargo fmt`)
48+
- [ ] No clippy warnings (`cargo clippy -- -D warnings`)
14349
- [ ] Documentation updated
144-
- [ ] Tests added/updated
145-
- [ ] No breaking changes (or documented if necessary)
146-
```
147-
148-
### Commit Message Guidelines
149-
150-
We follow conventional commit format for clear history:
151-
152-
**Format:**
153-
```
154-
<type>(<scope>): <subject>
155-
156-
<body>
157-
158-
<footer>
159-
```
160-
161-
**Types:**
162-
- `feat`: New feature
163-
- `fix`: Bug fix
164-
- `docs`: Documentation changes
165-
- `style`: Code style changes (formatting, no logic change)
166-
- `refactor`: Code refactoring
167-
- `perf`: Performance improvements
168-
- `test`: Adding or updating tests
169-
- `chore`: Maintenance tasks
170-
171-
**Examples:**
172-
```bash
173-
# Good commit messages
174-
feat(generator): add support for custom mutators
175-
fix(opcodes): correct FRAME size calculation for large pickles
176-
docs(readme): update installation instructions
177-
test(generator): add tests for protocol V5
178-
179-
# Bad commit messages
180-
fixed stuff
181-
update
182-
WIP
183-
```
50+
- [ ] Commit messages are clear and descriptive
18451

185-
**Best Practices:**
186-
- Use present tense ("add feature" not "added feature")
187-
- Keep subject line under 72 characters
188-
- Provide detailed body for non-trivial changes
189-
- Reference issue numbers in footer (e.g., "Fixes #123")
52+
### Versioning
19053

191-
## Development Setup
54+
This project follows [Semantic Versioning](https://semver.org/). During the 0.x phase, minor versions may include breaking changes.
19255

193-
### Prerequisites
56+
## Development
19457

195-
- Rust 1.70 or later
58+
For detailed development instructions, see:
59+
- **[DEVELOPING.md](DEVELOPING.md)** - Setup, workflows, and best practices
60+
- **[TESTING.md](TESTING.md)** - Testing guidelines and requirements
19661

197-
### Building from Source
62+
### Quick Start
19863

19964
```bash
20065
git clone https://github.com/cisco-ai-defense/pickle-fuzzer
20166
cd pickle-fuzzer
20267
cargo build
203-
```
204-
205-
### Running Tests
206-
207-
```bash
208-
# Run all tests
20968
cargo test
210-
211-
# Run tests with output
212-
cargo test -- --nocapture
213-
214-
# Run specific test
215-
cargo test test_name
21669
```
21770

218-
### Code Coverage
219-
220-
We maintain >70% code coverage. Before submitting a PR, please ensure your changes include tests:
221-
222-
```bash
223-
# Install tarpaulin (first time only)
224-
cargo install cargo-tarpaulin
225-
226-
# Generate coverage report
227-
cargo tarpaulin --out Html --output-dir coverage
228-
229-
# View the report
230-
open coverage/tarpaulin-report.html # macOS
231-
xdg-open coverage/tarpaulin-report.html # Linux
232-
```
233-
234-
**Coverage Requirements:**
235-
- Overall coverage should remain >70%
236-
- New code should have >80% coverage
237-
- All public APIs must be tested
238-
- Include both unit tests and integration tests where appropriate
239-
240-
See [TESTING.md](TESTING.md) for detailed testing guidelines.
241-
242-
### Writing Tests
71+
## Community
24372

244-
All new features and bug fixes should include tests:
245-
246-
**Unit Tests** - Add to the bottom of source files:
247-
```rust
248-
#[cfg(test)]
249-
mod tests {
250-
use super::*;
251-
252-
#[test]
253-
fn test_my_feature() {
254-
// Test implementation
255-
}
256-
}
257-
```
258-
259-
**Integration Tests** - Add to `tests/` directory:
260-
```rust
261-
use pickle_fuzzer::{Generator, Version};
262-
263-
#[test]
264-
fn test_integration_scenario() {
265-
let mut gen = Generator::new(Version::V3);
266-
let result = gen.generate();
267-
assert!(result.is_ok());
268-
}
269-
```
270-
271-
### Code Style
272-
273-
We follow standard Rust formatting conventions:
274-
275-
```bash
276-
# Format code
277-
cargo fmt
73+
- **Discussions**: Use [GitHub Discussions](https://github.com/cisco-ai-defense/pickle-fuzzer/discussions) for questions and ideas
74+
- **Issues**: Report bugs via [GitHub Issues](https://github.com/cisco-ai-defense/pickle-fuzzer/issues)
75+
- **Review**: Help by reviewing PRs and testing changes
27876

279-
# Run linter
280-
cargo clippy -- -D warnings
281-
282-
# Check everything before submitting
283-
cargo fmt && cargo clippy -- -D warnings && cargo test
284-
```
285-
286-
## Participating in Discussions
287-
288-
We encourage community participation beyond code contributions:
289-
290-
### GitHub Discussions
291-
292-
Use [GitHub Discussions](https://github.com/cisco-ai-defense/pickle-fuzzer/discussions) for:
293-
- **Questions**: Ask about usage, features, or implementation
294-
- **Ideas**: Share thoughts on future directions
295-
- **Show and Tell**: Share projects using pickle-fuzzer
296-
- **General**: Community chat and collaboration
297-
298-
### Discussion Guidelines
299-
300-
- **Be respectful**: Follow our [Code of Conduct](CODE_OF_CONDUCT.md)
301-
- **Search first**: Check if your question has been answered
302-
- **Be specific**: Provide context and examples
303-
- **Stay on topic**: Keep discussions focused
304-
- **Help others**: Share your knowledge and experience
305-
306-
### Issue Triage
307-
308-
Help maintain the project by:
309-
- Reproducing reported bugs
310-
- Adding missing information to issues
311-
- Suggesting labels or categorization
312-
- Closing resolved or duplicate issues
313-
314-
## Other Ways to Contribute
315-
316-
We welcome anyone that wants to contribute to `pickle-fuzzer` to triage and
317-
reply to open issues to help troubleshoot and fix existing bugs. Here is what
318-
you can do:
319-
320-
- **Issue Triage**: Help ensure that existing issues follow the recommendations from the
321-
_[Reporting Issues](#reporting-issues)_ section, providing feedback to the
322-
issue's author on what might be missing.
323-
- **Documentation**: Review and update the existing content of our documentation with up-to-date
324-
instructions and code samples.
325-
- **Code Review**: Review existing pull requests, and test patches against real existing
326-
applications that use `pickle-fuzzer`.
327-
- **Testing**: Write a test, or add a missing test case to an existing test.
328-
- **Examples**: Create example projects or tutorials showing pickle-fuzzer usage.
329-
- **Benchmarking**: Run performance tests and report results.
330-
- **Bug Hunting**: Use pickle-fuzzer to find bugs in pickle implementations and report findings.
331-
332-
## Review Process
333-
334-
### Timeline
335-
336-
- **Initial Response**: Within 10 days
337-
- **Review Cycles**: Typically 3-7 days between reviews
338-
- **Stale Issues/PRs**: Closed after 60 days of inactivity
339-
340-
### What to Expect
341-
342-
Maintainers will:
343-
1. Review your contribution for technical correctness
344-
2. Check adherence to coding standards
345-
3. Verify tests and documentation
346-
4. Provide constructive feedback
347-
5. Merge when all requirements are met
348-
349-
### Getting Help
77+
## Getting Help
35078

35179
If you need assistance:
352-
- Comment on your PR or issue
80+
- Check existing documentation and issues
35381
- Ask in [GitHub Discussions](https://github.com/cisco-ai-defense/pickle-fuzzer/discussions)
35482
- Be patient - maintainers are volunteers
35583

356-
Thanks again for your interest in contributing to `pickle-fuzzer`!
84+
## License
85+
86+
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.
35787

358-
:heart:
88+
Thank you for contributing! 🎉

0 commit comments

Comments
 (0)