When contributing to the DANOS project, a Developer Certificate of Origin sign-off is required. In short, the DCO is an affirmation that you have permission to submit the contribution to the project. Unlike many contributor license agreements, it is not a copyright assignment: you continue to own the copyright of your contributions. This means that you must choose the license that your contribution will be available under, and during review we will determine if that license is acceptable or not. If a license is unacceptable, we will usually make a recommendation of a license that would be acceptable, and you are free to resubmit the review with that license or any other license.
When determining if a license is acceptable or not, a number of factors will be considered, including:
Compatibility – Is the license compatible with the licenses of other code? For example, a contribution under a GPL incompatible license that links with GPL code would be unacceptable.
Open Source/Free – Is the license a free and open source license? Contributions under a EULA, or restricting which end-users can use the software are unlikely to be accepted.
Validity – Is the license valid in different legal jurisdictions? For example, some jurisdictions do not allow for voluntarily putting work "in the public domain".
Primarily, the DANOS project uses one of four licenses. If you are unsure about which license to use for your contribution, we would suggest one of these:
GNU General Public License v2.0 (GPL 2) – This is a "strong copyleft" license. When distributing a derived work of GPL 2 code, the work as a whole must be available under the same license. In DANOS, this has been used for the majority of repositories providing binaries which do not have a plugin architecture. For example, ifmgrd and vyatta-service-dns.
GNU Lesser General Public License v2.1 (LGPL 2.1) – This is a "weak copyleft" license. It is similar to the GPL, however dynamically linking to a work is not considered a derived work. In DANOS, the LGPL has been used for repositories providing binaries which have a plugin architecture. For example, vyatta-dataplane allows for pipeline plugins, and configd allows for AAA plugins. The intention of LGPL in these cases is to ensure that enhancements to the binary are shared, while allowing system integrators to add differently licensed plugins.
Mozilla Public License 2.0 (MPL 2) – This is a "weak copyleft" license. It has similar source access provisions to the GPL, however the boundary is at the source code file level. In DANOS, this is mostly used for Go libraries due to the use of static linking in Go.
BSD 3-Clause "New" or "Revised" License – This is a permissive license. It does not require that source access is provided when the binary is distributed. In DANOS, this is mostly used for YANG files.