= Contributing to ChunkyPNG

I will gladly accept any contributions from anybody to improve this library. However, this is a
personal open source project, without an active community around it. As a result I am the only
maintainer, and I’d like to keep the scope and complexity of this project small.
This way, with the limited amount of time I dedicate to this project, this library remains a
solid piece of software that many people rely on in their workflow.


== Project scope

The scope of this library is defined as:

1. Reading and writing any PNG image that conforms to the spec, with proper error handling of
  images that do not conform to the spec.
2. Basic canvas drawing and compositing operations to create new or edit existing images.
  However, I will generally be hesitant to add new drawing and compositing methods, because
  the list could be endless to support every niche use case.
3. Remain compatible with Ruby versions that are widely used.

I generally consider this gem to be feature complete based on this scope. I will close issues
and pull requests that go beyond this scope. If you want to work on something, but are not sure
if it will be accepted, feel free to reach out to me by opening an issue before committing your time.

For functionality that goes beyond the scope, I would suggest making it available as a separate
“plugin” gem (e.g. chunky_png-<my-feature>). If anything in the gem needs to be refactored
to support this kind of extensibility, I am happy to accept PRs for that.


== Reporting bugs

- First, see if somebody else has reported the problem already.
- Try to include as much relevant information as possible, so I can recreate the problem.
- If possible, include the PNG image that is causing the issue.
- If possible, include a code snippet that exposes the problem.


== Pull requests

Title and description:

- If you are not yet done, please include <tt>[WIP]</tt> in the title of your pull request.
- Explain why your changes are relevant in the description of your pull request.
- If your changes improve performance, include benchmark methodology and results in the PR.
  See BENCHMARKING.rdoc for more information.

Code:

- Don't break backwards compatibility.
- Follow code conventions. They are enforced through Rubocop.
- Add Yardoc comments as documentation.

Specs:

- Always include specs that test your changes, to prevent me from breaking your code later.
- If your specs use PNG files, try to keep them as small as possible to keep the test suite snappy.
- Make sure that the specs are passing for all Rubies on Travis CI: https://travis-ci.org/wvanbergen/chunky_png/

Misc:

- Add an entry to CHANGELOG.rdoc.
- Do not change <tt>ChunkyPNG::VERSION</tt>


== Releases

- Ensure the latest master is passing on Travis CI.
- Update <tt>CHANGELOG.rdoc</tt>
- Update <tt>ChunkyPNG::VERSION</tt>
- Run <tt>bundle exec rake release</tt>
