There are two main contributing factors when it comes to intellectual property: copyright and licensing. The copyright holder is the person who owns the rights to the intellectual property. Normally this is the creator; however, copyright can also be transferred to other individuals or companies. The copyright holder has the right to decide how his intellectual property can be used by others. When it comes to software, these usage details are generally published as a license agreement. License agreements can vary a great deal depending on the environment, but they generally resemble a standard legal contract, explicitly outlining the rights and responsibilities of each party. The copyright holder also has the right to change the license for the intellectual property at their discretion. It is this scenario that requires the most due diligence when dealing with third-party contributions.
Anybody who contributes source code to the DotNetNuke project must submit a signed Contributor License Agreement. This document ensures that the individual has the right to contribute intellectual property to the project without any type of encumbrance. It also transfers copyright for any contributed intellectual property to the project. This is important because DotNetNuke needs to be able to ensure all of its intellectual property is licensed consistently throughout the entire application. It protects the community from a situation where an individual copyright holder could change the license restrictions for a specific piece of intellectual property, forcing the entire community into a reactive situation (a situation we have already seen multiple times in the still nascent Microsoft open source community).
In the case of third-party modules that are fully functional applications with an existing and active user base, the intellectual property rights are owned by the external party. Under this scenario, we cannot adopt the intellectual property into the DotNetNuke project because it would mean that we would have no control over its licensing. Even if the contributor agreed to license the intellectual property under a complementary BSD open source license, the original copyright holder would still have the ability to change the license at any time in the future, which would put all users of the module in jeopardy. To mitigate this risk, we require that DotNetNuke must have sufficient rights to the intellectual property so that the community is adequately protected. However, we do not feel it would be fair to force a contributor to release all of the rights to their own intellectual property. Therefore, we have a Software Grant Agreement — a contract that provides both parties with full copyright to the specified intellectual property. Essentially this means that the intellectual property has been split into two independent versions. The contributor owns one version and is allowed to license it or modify it as they see fit. DotNetNuke owns the other version and licenses it under the standard DotNetNuke BSD License for distribution and enhancement. The end result is a win-win situation for both parties as well as the community.