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 relicense them under GPLv2 or later,
if you don't agree to such license, you should explain us the problem or bug
and how you would solve it by words.

By default all patches attache to the bugzilla or the mailing list would 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 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!
