Open source guru Eric Raymond posted an entry to his blog a few days ago about a controversy in one project because a user accused the project manager of rejecting contributions from “persons of color”. Eric’s argument all along has been “show us the code!”: open source software is and must be a meritocracy, where nothing matters but how good your code is.
It struck me that open source projects need a contribution policy that makes this explicit. Herewith, my proposal. Comments and suggestions for revision are invited.
Open Source Contribution Policy
Version 0.4, 2018–10–08
We will accept contributions of good code that we can use from anyone.
What this means
- “We will accept”: This means that we will incorporate your contribution into the project’s codebase, adapt it as needed, and give you full credit for your work.
- “contributions”: This means just about anything you wish to contribute to the project, as long as it is good code we can use. The easier you make it for us to accept your contribution, the happier we are, but if it’s good enough, we will do a reasonable amount of work to use it.
- “of good code”: This means that we will accept contributions that work well and efficiently, that fit in with the goals of the project, that match the project’s coding style, and that do not impose an undue maintenance workload on us going forward. This does not mean just program code, either, but documentation and artistic works as appropriate to the project.
- “that we can use”: This means that your contribution must be given freely and irrevocably, that you must own the copyright or else have written permission of those who do to contribute it for our unrestricted use, and that your contribution is made under the correct license for the project.
- “from anyone”: This means exactly that. We don’t care about anything but your code. We don’t care about your race, religion, national origin, biological gender, perceived gender, sexual orientation, lifestyle, political viewpoint, or anything extraneous like that. We will neither reject your contribution nor grant it preferential treatment on any basis except the code itself. We do, however, reserve the right to tell you to go away if you behave too obnoxiously toward us.
If Your Contribution Is Rejected
If we reject your contribution, it means only that we do not consider it suitable for our project in the form it was submitted. It is not personal. If you ask civilly, we will be happy to discuss it with you and help you understand why it was rejected, and if possible improve it so we can accept it. If we are not able to reach an agreement, then you are free to fork our project, as with any Open Source project, and add your contribution to your fork.
0.1, 2015–11–18: Initial draft.
0.2, 2015–11–18: Added “If Your Contribution Is Rejected” section.
0.3, 2015–11–19: Added “irrevocably” to “we can use” and changed “it” to “your contribution” in the “if rejected” section. Thanks to Patrick Maupin.
0.4, 2018–10–08: Clarified and simplified the “we can use” section on copyrights and licensing. Thanks to Bruce Perens.