๐ค Contributing to FixMP3Tags
Thank you for your interest in contributing! Whether you're fixing bugs, improving documentation, testing with different MP3 files, or adding features โ your help is welcome and appreciated.
๐ฆ Project Scope
FixMP3Tags is a command-line tool for fixing and normalizing MP3 ID3 tags. It aims to be:
- Lightweight and dependency-minimal (core Perl + essential MP3 modules)
- Cross-platform (Linux, macOS, Windows with Perl)
- Destructive tag replacement, with a dry-run mode and backup guidance
- Flexible with user-defined patterns and rules
๐งฐ How to Contribute
๐ Report Bugs
- Search issues first to avoid duplicates
- Include:
- OS and Perl version (
perl -v) - MP3 file examples (if possible)
- Steps to reproduce
- Error messages or unexpected behavior
- OS and Perl version (
โจ Suggest Features
- Open an issue with a clear description
- Explain the use case and why it's valuable
- Bonus: suggest how it could be implemented
๐ ๏ธ Submit Code
- Fork the repo
- Create a new branch (
feature/my-featureorfix/my-bug) - Make your changes
- Run tests:
make test - Submit a pull request with a clear summary
๐ Improve Docs
- Typos, formatting, or clarity improvements are always welcome
- You can edit
README.md,CONTRIBUTING.md, or add new docs - Help improve POD documentation in the modules
๐ต Test with Different MP3 Files
- Test with various MP3 encodings and ID3 tag versions
- Report compatibility issues
- Share test files (if possible) or detailed descriptions
๐งช Development Setup
git clone https://github.com/vr-ski/fix-mp3-tags.git
cd fix-mp3-tags
# Install dependencies
cpanm --installdeps .
# Run tests
make test
# Or directly with prove
prove -l t/
# Test the script
perl -Ilib bin/fix-mp3-tags --help
For development with a local Perl environment:
# Using perlbrew (recommended)
perlbrew install perl-5.36.0
perlbrew switch perl-5.36.0
# Using plenv
plenv install 5.36.0
plenv global 5.36.0
๐งผ Code Style
This project uses:
- Perl Best Practices: Follows Perl::Critic standards (see
.perlcriticrc) - Automatic Formatting: Uses
perltidy(see.perltidyrc) - Code Quality: Enforced with pre-commit hooks (see
.pre-commit-config.yaml)
Before submitting:
# Format code
perltidy lib/**/*.pm bin/fix-mp3-tags
# Check code quality
perlcritic lib/**/*.pm bin/fix-mp3-tags
# Run tests
make test
# Or run specific tests
prove -lv t/01-processor.t
Key Style Points:
- Use strict and warnings in all files
- Follow Perl Best Practices (Damian Conway)
- Write tests for new functionality
- Add POD documentation for new modules/methods
- Keep functions focused and single-purpose
๐งช Testing
Running Tests:
# Basic test suite
make test
# With verbose output
prove -lv t/
# Specific test file
prove -lv t/02-user-patterns.t
# Test coverage (if Devel::Cover installed)
cover -test
Adding Tests:
- New features should include tests in
t/ - Test both success and failure cases
- Use
Test::Morefor new test files - Consider edge cases with different MP3 formats
๐ฆ Release Process
For maintainers:
- Update
$VERSIONinlib/FixMP3Tags/Processor.pm - Update
Changesfile with release notes - Commit and tag:
git tag -a v0.02 -m "Release 0.02" - Push tags:
git push --tags
๐ License and Attribution
By contributing, you agree that your code will be released under the BSD 2-Clause License.
This project builds upon the Perl ecosystem and MP3::Tag library. Special thanks to all the CPAN contributors whose modules make this tool possible.
๐ Thank You
Your contributions help make this tool more reliable and useful for everyone. If you've tested this with different MP3 files, tag formats, or operating systems, please share your experience!
๐ Need Help?
- Check existing issues and discussions
- Review the Perl documentation:
perldoc perlintro - MP3::Tag documentation:
perldoc MP3::Tag - Open an issue for questions about the codebase
Happy hacking! ๐ต