I recently created an API and I wanted to give it a license where it is free for anyone to use, so I was planning on using the two-clause BSD License. However, after further thought, I realized that I had a few more stipulations I wanted to add. Yes, I wanted the software to be free to use, however, there are a few things I don’t want.
- I don’t really want someone to fork my project just yet. I want the project to remain in one place.
- I want the project to be free and commercial friendly, including free to use the code, or link to a binary in any way.
- I don’t want a company to use my software to sell a competing solution unless I am compensated. In which case, I can license the software to them under a commercial license.
If anyone contributes to the project, I would like the right to sell the code under a different (possibly commercial) license. This prevents license and author sprawl.The fourth clause is crossed out because this will be done at commit time and is not needed in the license of existing source code.
Non-compete line addition to the new BSD License
So I came up with
two one more line to the new BSD License: a third line prohibiting competing projects or solutions without permission; a fourth line that states that any contributions to the project will result in the all rights to the contributed code being assigned back to me. This will be done at commit time and is not needed in the license of existing source code.
<Project> <Project Description> Copyright (c) <Year>, <Owner> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Use of the source code or binaries that in any way competes with this project, whether open source or commercial or other, is prohibited unless permission is granted under a separate license by <Owner>. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Let me know if you think this accomplish the non-compete goal. Especially let me know if something appears erroneous.
Single ownership means the project always has all rights to every line of code, the binaries, and documentation or anything else that may be included in the project. So if any contributions from anybody to the project occur, they occur with the stipulation that ownership and all rights are transferred to the the project owners.
However, doing this in the license above is the wrong place. It should be a separate agreement that occurs in places like when registering with the project or its mailing list or it source repository. So contribution is done under this separate agreement.
Contributing to this project can be done under the following conditions: 1. Any contribution (source code, documentation, or other) to this project is your own work. 2. You transfer all rights to the contribution (source code, documentation, or other) to <Owner>.
Again, let me know if this accomplishes the goal, or is insufficient or has errors.