Introduction
First, thank you for considering contributing to ImageGlass! It’s people like you that make the open source community such a great community! We welcome any type of contribution, not only code. You can help with:- QA: File bug reports with detailed information (screenshots with console open are helpful)
- Marketing: Write blog posts, howto guides, print stickers, spread the word
- Community: Present the project at meetups, organize local community events
- Code: Work on open issues, comment on issues to show support
- Money: Support via GitHub Sponsors or PayPal
- Translation: Help make ImageGlass accessible to everyone via Crowdin
Getting Started
Before you start contributing:- Set up your development environment - Follow the Getting Started guide
- Understand the architecture - Read the Architecture documentation
- Build from source - Try Building from Source to ensure your environment is ready
Ways to Contribute
Reporting Bugs
Good bug reports are extremely helpful. Here’s how to file a good bug report:- Search existing issues - Check if the bug has already been reported
- Use the bug report template - Follow the template in GitHub Issues
- Provide detailed information:
- ImageGlass version
- Windows version
- Steps to reproduce
- Expected behavior vs actual behavior
- Screenshots or video recordings
- Console output (if applicable)
Example Bug Report
Suggesting Features
Feature requests are welcome! To suggest a feature:- Check existing feature requests - See if it’s already been suggested
- Use the feature request template - Available in GitHub Issues
- Explain the use case - Why would this feature be useful?
- Provide examples - How do other applications handle this?
Contributing Code
Any code change should be submitted as a pull request, based on thedevelop branch.
Branch Strategy
develop- Active development (base your PRs on this branch)prod- Stable production releases (do not PR to this branch)
Before You Start Coding
- Create an issue - Discuss the change you want to make
- Get feedback - Wait for maintainer feedback before investing significant time
- Fork the repository - Create your own fork to work in
- Create a feature branch - Branch from
develop
Coding Standards
Code Style
- Use latest C# features - The project uses
<LangVersion>latest</LangVersion> - Follow .editorconfig - The project includes
.editorconfigfor consistent formatting - Enable nullable reference types - All projects use
<Nullable>enable</Nullable> - Use implicit usings - Enabled via
<ImplicitUsings>enable</ImplicitUsings>
Code Quality
- Fix all analyzer warnings - The project uses:
- IDisposableAnalyzers - Ensures proper disposal
- Microsoft.VisualStudio.Threading.Analyzers - Detects threading issues
- Dispose resources properly - Always dispose IDisposable objects
- Use async/await correctly - Follow async best practices
- Avoid unsafe code unless necessary - Only use
unsafefor performance-critical sections
Example Code
Writing Tests
While ImageGlass doesn’t currently have extensive unit tests, contributions that include tests are highly valued:- Test critical functionality
- Test edge cases
- Test error handling
Commit Messages
Write clear, descriptive commit messages:- Start with a type:
Fix:,Add:,Update:,Refactor:,Docs: - Use imperative mood: “Fix bug” not “Fixed bug”
- Keep first line under 72 characters
- Add detailed description if needed (separated by blank line)
Submitting a Pull Request
-
Push your branch to your fork:
-
Create a pull request on GitHub:
- Set base branch to
develop - Use a clear title describing the change
- Fill out the PR template completely
- Set base branch to
-
PR description should include:
- What changes were made
- Why the changes were necessary
- How to test the changes
- Screenshots/videos for UI changes
- Related issue numbers (e.g., “Fixes #123”)
Example Pull Request Description
Code Review Process
The bigger the pull request, the longer it will take to review and merge. Tips for faster reviews:- Break down large PRs - Split into smaller, focused changes
- Provide context - Explain what and why, not just what
- Respond to feedback - Address reviewer comments promptly
- Keep PRs focused - One feature or fix per PR
- Small PRs (< 100 lines): Usually reviewed within 1-3 days
- Medium PRs (100-500 lines): May take 3-7 days
- Large PRs (> 500 lines): Could take 1-2 weeks
Contributing Documentation
Documentation improvements are always welcome!Types of Documentation
- Code comments - Document complex algorithms and business logic
- API documentation - XML documentation comments for public APIs
- User guides - Help users understand features
- Developer guides - Help other developers contribute
Documentation Standards
Contributing Translations
ImageGlass uses Crowdin for translations. See the Translations guide for detailed instructions.Financial Contributions
ImageGlass is free and open source. Financial contributions help maintain and improve the project:- GitHub Sponsors - Recurring or one-time donations
- PayPal - One-time donations
- Recognition in the README
- Sponsor badge on GitHub
- Eternal gratitude from the maintainer
Community Guidelines
Code of Conduct
- Be respectful - Treat everyone with respect and kindness
- Be constructive - Provide helpful feedback
- Be patient - Maintainers are volunteers
- Be collaborative - We’re all here to make ImageGlass better
Communication Channels
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - General questions and discussions
- Discord - Real-time chat at ImageGlass Discord
- Email - [email protected] for private matters
Response Times
Please be patient. Maintainers are volunteers and may not respond immediately:- Issues: Usually responded to within 1-3 days
- Pull requests: Reviews may take 1-7 days depending on complexity
- Discord: Real-time responses from community members
Licensing
By contributing to ImageGlass, you agree that your contributions will be licensed under the GNU General Public License v3.0. See the LICENSE file for details.Third-Party Dependencies
If your contribution adds a new dependency:- Check the license - Must be compatible with GPL-3.0
- Document the dependency - Add to the appropriate
.csprojfile - Add license attribution - Include in
License/folder
Questions?
If you have any questions:- Search existing issues - Your question may already be answered
- Check the docs - Review the documentation
- Ask on Discord - Join ImageGlass Discord
- Create an issue - If you can’t find an answer
- Email - [email protected] for private questions
Recognition
Contributors are recognized in:- GitHub contributors page
- Release notes (for significant contributions)
- README acknowledgments
Thank You!
Your contributions, whether code, documentation, bug reports, or support, make ImageGlass better for everyone. Thank you for being part of this community!Next Steps
- Getting Started - Set up your development environment
- Architecture - Understand the codebase
- Building from Source - Build ImageGlass locally
- Translations - Help translate ImageGlass