Thank you for your interest in contributing to this project! This document provides guidelines for contributing.
- Be respectful and inclusive
- Focus on constructive feedback
- Help maintain a welcoming environment
When reporting bugs, please include:
- Operating system and architecture
- Compiler version
- Steps to reproduce the issue
- Expected vs actual behavior
- Sample code if applicable
Enhancement suggestions are welcome! Please:
- Clearly describe the feature
- Explain the use case
- Consider backward compatibility
- Discuss performance implications
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests if applicable
- Ensure code compiles without warnings
- Update documentation
- Commit with clear messages (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Use C99 standard
- 4 spaces for indentation (no tabs)
- Maximum line length: 100 characters
- Use descriptive variable names
- Add comments for complex logic
- Follow existing code style
- Document all public APIs with Doxygen-style comments
- Include parameter descriptions
- Specify return values
- Note any side effects or requirements
- Provide usage examples
- Use conditional compilation for architecture-specific code
- Provide scalar fallback implementations
- Test on target architectures when possible
- Document SIMD intrinsics usage
- Test on multiple platforms if possible
- Verify output JPEG files with standard viewers
- Check for memory leaks with valgrind
- Benchmark performance changes
- Use present tense ("Add feature" not "Added feature")
- Use imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit first line to 72 characters
- Reference issues and pull requests
By contributing, you agree that your contributions will be licensed under the same license as the project.