If you want to become or are a poppler contributor, this is a README for you, keep reading!

Licensing
---------
Only send patches to poppler if you agree to license (or relicense) them under
GPLv2 and later (or something more permissive that can be "upgraded" to GPLv2
and later). If you do not agree to this license, please explain the problem / bug
and how you would solve it in words instead of code.

By default all patches attached to the bugzilla or sent to the mailing list will
be assumed to agree with the licensing expressed here.

Channels of contact
-------------------
Poppler has three main channels of contact:
 * The poppler mailing list http://lists.freedesktop.org/mailman/listinfo/poppler
 * The poppler bug tracker (bugzilla) http://bugs.freedesktop.org
 * The #poppler channel at the freenode network
Do not hesitate to drop by talk to people there.

And keep hacking on poppler!
