First off, thank you for considering contributing to ImageWriter! It's people like you that make ImageWriter such a great tool.
This project and everyone participating in it is governed by respect and professionalism. By participating, you are expected to uphold this standard.
Before creating bug reports, please check the existing issues to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples
- Describe the behavior you observed and what you expected
- Include screenshots if possible
- Specify your Windows version
- Include the ImageWriter version you're using
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- List examples of how it would be used
- Fork the repository and create your branch from
masterormain - If you've added code, ensure it compiles with Delphi 7
- Follow the existing code style (see CODING_STYLE_GUIDE.md)
- Add header comments to new units using the project template
- Add tests for new functionality
- Update CHANGELOG.md with your changes
- Follow commit message conventions (see COMMIT_CONVENTIONS.md)
- Write clear, descriptive commit messages
This project follows Conventional Commits specification.
Format: <type>(<scope>): <subject>
Examples:
feat(archive): add ZIP support
fix(device): handle access denied error
docs(readme): update installation instructions
test(validation): add path sanitization tests
See COMMIT_CONVENTIONS.md for detailed guidelines.
- Borland Delphi 7 or compatible compiler
- Windows development environment
- Basic knowledge of Pascal/Delphi
build.batThis will compile both ImageWriter.exe and ImageWriterPro.exe.
ImageWriter/
├── src/ # Source code (.pas, .dfm files)
│ └── managers/ # Business logic managers (37+ modules)
├── resources/ # Resources (icons, manifests)
├── docs/ # Documentation
├── tests/ # Automated test suite (DUnit + PowerShell)
├── lib/ # External libraries (zlib1.dll)
├── *.dpr # Delphi project files
├── *.dof # IDE project settings
├── *.cfg # Compiler configuration
├── BUILD_CONFIGURATION.md # Build instructions
└── build.bat # Build script
All new units should include a header comment:
{******************************************************************************}
{ }
{ ImageWriter - [Unit Purpose] }
{ }
{ Copyright (c) 2024-2025 Anton Zelenov }
{ Based on dd for Windows by John Newbigin (http://chrysocome.net/dd) }
{ }
{ This program is free software: you can redistribute it and/or modify }
{ it under the terms of the GNU General Public License as published by }
{ the Free Software Foundation, either version 3 of the License, or }
{ (at your option) any later version. }
{ }
{ Description: }
{ [Brief description of what this unit does] }
{ }
{******************************************************************************}- Use meaningful variable and function names
- Add comments for complex logic
- Keep functions focused and manageable in size
- Handle exceptions appropriately
- Use try-finally blocks for resource management
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests when relevant
Example:
Add dynamic ZLib loading feature
- Replace static imports with LoadLibrary/GetProcAddress
- Add EnsureZLibAvailable function
- Update documentation
Fixes #123
Before submitting a pull request:
- ✅ Test on multiple Windows versions if possible (7, 10, 11)
- 🔒 Test both elevated and non-elevated scenarios
- 💾 Test with various image formats (raw, .gz, .zip)
- 🔍 Verify no memory leaks or resource leaks
- 🖱️ Check that the UI responds properly
Feel free to open an issue with the label "question" if you have any questions about contributing.
By contributing to ImageWriter, you agree that your contributions will be licensed under the GNU General Public License v3.0.
This project is based on dd for Windows by John Newbigin. We acknowledge and appreciate the original work that made this project possible.
Project Maintainer: Anton Zelenov (tixset@gmail.com)
GitHub: https://github.com/tixset/ImageWriter