Qt Project Legal Aspects
In order to participate in the Qt Project, you (or the legal entity on whose behalf you intend to contribute) need to execute the Contribution Agreement.
For questions about use of the Qt trademarks or brand guidelines, please refer to our trademark policy, brand guidelines (PDF) and trademark license agreement (PDF).
Below you will find information about the following topics:
- The rationale for requiring the Contribution Agreement
- Information about licensing used in the Qt Project
- How to execute the Contribution Agreement (Individual and Corporate)
- Best Practices for Maintainers and Contributors
- A FAQ about the Contribution Agreement
What is the Contribution Agreement and why is it needed?
A Contribution Agreement defines the license rights and obligations that the contributor (i.e. the developer/company holding copyright to the software to be submitted to the Qt project) is willing to grant to recipient (i.e. the other party of the agreement, here Digia). In case of Qt, the Contribution agreement for Qt defines the license rights and obligations that the contributor is willing to grant for the benefit of the Qt Project. It is important to note that the contributor retains ownership of the contribution as the Qt Project does not require copyright assignment for contributions made to the Qt Project.
In case of Qt, a contribution agreement is primarily required because Digia has existing obligations regarding Qt and wants to enable the broadest, most vibrant Qt ecosystem. The contribution agreement facilitates Digia’s compliance with the spirit of its commitments to the Open Source Community, under the agreement with the KDE Free Qt Foundation, and enables participation of commercial Qt users in the Qt project.
Qt project licensing
Most of the code in the Qt Project is licensed under the GNU Lesser General Public License v. 2.1 ("LGPL"). In addition to LGPL, the Qt libraries are available also under commercial license terms from Digia. The Qt documentation is licensed under the GNU Free Documentation License version 1.3.
LGPL has been chosen as the primary license for Qt Project, because it provides the following four degrees of freedom:
- The freedom to run the program for any purpose.
- The freedom to study how the program works and adapt it to specific needs.
- The freedom to redistribute copies so you can help your neighbor.
- The freedom to improve the program and release your improvements to the public, so that the whole community benefits.
These four degrees of freedom are very important for the success of the open-source Qt Project, and it is important that all users of Qt under LGPL adhere to these and fully meet all the requirements set by the LGPL. It is recommended than a thorough legal analysis is conducted when choosing to use the LGPL or other open-source licenses. In many cases, the LGPL is well suited, but it is important that the freedoms of the LGPL are not restricted from the user of an application or device using an LGPL library such as Qt, which may be difficult to achieve in some use cases.
The following requirements should be fulfilled when, for example, creating an application or a device with Qt using the LGPL:
- Complete corresponding source code of the library used with the application or the device built using LGPL, including all modifications to the library, should be delivered with the application (or alternatively provide a written offer with instructions on how to get the source code). It should be noted that the complete corresponding source code has to be delivered even if the library has not been modified at all.
- In case of dynamic linking, it is possible, but not mandatory, to keep application source code proprietary as long as it is “work that uses the library” - typically achieved via dynamic linking of the library. In case of static linking of the library, the application itself may no longer be “work that uses the library” and thus become subject to LGPL. Static linking is an item that is not clearly stated in the LGPL and possible methods to circumvent the application becoming a derivative work are not proven, thus is it best to either link dynamically, or provide the application source code to the user under LGPL.
- The user is allowed to change and re-link the library used in the application or device – including reverse engineering. It is not clearly stated whether or not the user has to be able to place the modified library back into the device, if this is meant by the LGPL license, it should be enabled.
- If the application or device is not fully following all requirements of the LGPL, it is not allowed to be distributed at all. This includes, for example, possible patent license restricting distribution of the application in which case there is no right to distribute.
- The freedoms provided by the LGPL license cannot be in any way negotiated upon or restricted from any of the recipients – i.e. it is not possible to make such terms for an application or a device using theLGPL library that would in any way restrict the rights provided by the LGPL.
- The user of an application or device created with LGPL library has to be notified of their rights by providing a copy of the LGPL license text to the user and displaying a prominent notice about using the LGPL library – i.e. it is not allowed to hide the fact the LGPL library is used.
This is not a complete list of LGPL requirements – please refer to the LGPL for complete list of requirements – it is always recommended to contact an experienced legal counsel to clarify detailed licensing suitability. Please note that the Qt Project does not any offer legal guidance on whether or not a certain license is suited for your need, or if your application or device meets the LGPL requirements.
The Qt Project has made the following exceptions from LGPL licensing:
- Third party software already included in Qt is governed by the separate Open Source license terms under which the third party software has been distributed. All third party software is listed in the documentation, along with their licensing terms. For example, here you can find list of third party licenses used in Qt.
- Libraries that must be statically linked, such as the QtMain Library (QaX Server, QaX Container) have been licensed under a BSD-style license.
- Application code as part of examples, which can be used by Qt contributors in the application creation is generally licensed under a BSD-style license
- Documentation is licensed under the GNU Free Documentation License
Contributing Code Not Owned by the Contributor
If you wish to contribute or use code owned by a third party in the Qt Project, you need to ensure that the third party code is licensed under terms that are compatible with the below described licensing guidelines used for the Qt Project. All third party code contributions must comply with the following:
- The third party code is licensed under license terms that are compatible with the GNU Lesser General Public License version 2.1 as included on the Free Software Foundation’s website; and
- The third party code is not licensed under:
- Other GNU software licenses (i.e. GNU General Public License versions 2.0 or 3.0; GNU Lesser General Public License version 3.0); or
- license terms requiring as a condition of use, modification and/or distribution of the software subject to the license, that the software or other software combined and/or distributed with it be disclosed or distributed in source code form; licensed for the purpose of making derivative works; or redistributable at no charge.
Moreover, on a case by case basis some exceptions to this rule may be made and the Chief Maintainer will post on the Qt Project web site a list of modules where exceptions have been granted.
The Chief Maintainer shall remove, from the Qt code repositories or project website, any third party code which does not meet the criteria specified above.
As the Qt Project desires to facilitate the broadest Qt ecosystem and given that LGPL-only licensed code hinders participation by some Qt commercial users, the Qt Project is actively working to reduce Qt’s dependencies on LGPL-only licensed code.
How to accept the Contribution Agreement
Acceptance of the Contribution Agreement is a prerequisite to submitting code to Gerrit for review. If the contributor tries to upload a change to Gerrit without having previously accepted the Contribution Agreement (PDF), a message will appear in the command line telling the contributor that the Contribution Agreement must be executed before the change may be uploaded.
The steps below need to be followed to execute the Contribution Agreement
- Log in to Gerrit with your JIRA account
- Go to "Settings" on the top right corner
- Go to "Agreements"
- Press "New Contributor Agreement" link
- Select the agreement type "Individual"
- Read the agreement for an individual contributor
- Complete the agreement by writing "I AGREE" in the box beneath the text
- Press "Submit Agreement" button
Contribution Agreements for Corporate Contributors
A Contribution Agreement for Corporate Contributors (PDF) can be used in situations where company wants to define a group of employees who are allowed to contribute to the Qt Project in conjunction with their employment. It is advisable for an individual to check from the company whether he/she is allowed to contribute during his/her working time using the company’s assets, and if the Contribution Agreement for Corporate Contributors is needed because multiple employees will contribute to the Qt Project.
When company decides to use the Contribution Agreement for Corporate Contributors there must be named contact person at the company who will assume responsibility for adding members to the company’s developer group created in Gerrit. This means that the contact person should manage the company’s participant list of employees who are authorized to contribute to the Qt Project and be aware, at all the times, of who is authorized to contribute.
The content of the Contribution Agreement for Corporate Contributors is exactly the same as the Contribution Agreement for Individual and the terms are not negotiable.
In order to a Contribution Agreement for Corporate Contributors to be executed, the following steps need to be followed:
- Company downloads a copy of Contribution Agreement for Corporate Contributors here
- The Agreement is signed by the company and a PDF scan of the Agreement is sent to Contribution Agreement / Legal Contact / Ruotsalainen Topi (get in touch here).
- Digia countersigns the Agreement and returns an executed agreement to the Company.
- The Gerrit Administrator creates a group for the Company in question and attaches the Contribution Agreement to the group account.
- The contact persons from the Company are added into the administrator group by the Gerrit Administrator
- Administrators are able to add/delete members to their Company specific developer group
- Administrators inform the developers when they are included in the Company group so they can start to contribute to the Qt Project.
Best Practices for Approvers/Maintainers
- It is your duty as an approver and/or a maintainer to ensure that unlicensed contributions are not accepted to the Qt Project and you are empowered to reject contributions which you suspect may be unlicensed or don’t comply with the licensing policies for the Qt Project.
- If you suspect you have received a request to include a problematic contribution, raise the issue and discuss the case with the contributor. Escalate to the maintainer / chief maintainer if you are unsure about a contribution. The Chief maintainer has the ultimate power to make a determination about any particular contribution and whether it meets the Qt Projects guidelines.
- If you are contacted by a project participant regarding contributions that require special attention treat these issues seriously, with care and respond promptly.
Best Practices for Contributors
- If you are contributing as part of your employment, check your employment agreement or discuss with your employer to determine who owns intellectual property (i.e. code, documentation, and other content) created during your working time and whether you have authorization to contribute to the Qt Project.
- Try to minimize contributions of third party code
- If you are contacted by a project participant regarding contributions that require special attention treat these issues seriously, with care and respond promptly.
Legal FAQ for the Contribution Agreement
What is a contribution agreement?
A contribution agreement defines the license rights and obligations that the contributor (i.e. the developer/company holding copyright to the software to be submitted to project, here Qt) is willing to grant to recipient (i.e. the other party of the agreement, here Digia). In case of Qt, the Contribution agreement for Qt defines the license rights and obligations that the contributor is willing to grant for the benefit of the Qt Project.
Why is a contribution agreement required?
It defines the exact rights that Digia and Qt project receives from the contributor planning to submit code to the Qt Project. In case of Qt, a contribution agreement is primarily required because Digia has existing obligations regarding Qt and wants to enable the broadest, most vibrant Qt ecosystem. The contribution agreement facilitates Digia’s compliance with the spirit of its commitments to the Open Source Community, under the agreement with the KDE Free Qt Foundation, and enables participation of commercial Qt users in the Qt project.
What happens with the IP (Intellectual Property Rights) for the code that developers contribute?
The Qt Project doesn’t require a copyright or other IP assignment for contributions submitted and each person retains ownership of the code as well as related IP they create. Ownership of code or related IP is not transferred. The Qt Project does require a contribution agreement (i.e. license) in benefit of Qt, so that Digia can continue to meet the spirit of its existing commitments, such as those owed to the KDE Free Qt Foundation and commercial users of Qt.
Are contribution agreements commonly used within OSS projects?
There are many examples of successful open source projects where a contribution agreement is used, such as Eclipse, Apache, Google projects, etc. Naturally, there are also many examples of successful open source projects where no contribution agreement is used. Each project needs to decide their approach and in case of Qt, an important aspect in deciding to continue using a contribution agreement is that the contribution agreement facilitates Digia’s compliance with the spirit of its commitments to the Open Source Community, under the agreement with the KDE Free Qt Foundation, and enables participation of commercial Qt users in the Qt project.
The contribution agreement refers to "consideration". What is "consideration" in this context?
"Consideration" is a legal term of art that means something of value given by both parties to a contract that induces them to enter into the agreement to exchange mutual performances. In the case of the contribution agreement, the contributor’s consideration is the software code or documentation (i.e. the contribution) submitted and in the case of Digia, its consideration is the making available of the Qt software to the contributor and the Qt community.
Does the contribution agreement require me to warrant that my contribution doesn’t infringe 3rd party patents?
No, but a contributor is required to warrant that the contributor is the owner of the contribution being contributed and that the contributor has the authority to grant the copyright and patent licenses included in the contribution agreement. The contribution agreement requires the contributor to give a patent license for patents owned by the contributor (or licensable by the contributor) as detailed in contribution agreement itself.
I want to contribute code to the Qt Project that I developed as part of my job. Can I contribute this code?
Yes, but as (under applicable legislation) your employer typically will own all intellectual property (e.g. code, examples, documentation, tutorials, etc.) that you create as part of your employment, it is important that your employer has consented to your participation and contributions in the Qt Project. That provides clarity for all parties involved. Additionally, please note that in Section 3.3 of the Contribution Agreement you provide a warranty that you or the legal entity on whose behalf the contribution is made has the authority to grant the licenses included in the agreement.
Furthermore, if your company will be having several employees contribute, your company can enter into a corporate contribution agreement whereby your employer can specify and manage who is able to contribute from your company.
Can we set up a contribution agreement to enable contributions from several employees in our company?
Yes, if your company will be having several employees contribute, your company can enter into a corporate contribution agreement whereby your employer can specify and manage who is able to contribute from your company.
Why are there restrictions on "third party" contributions?
"Third party contribution" means here software or other content that is submitted to the Qt Project by an individual other than the copyright owner. There are restrictions on such "third party contributions" because the Qt Project wants to enable contributions by all Qt users, including commercial Qt users. Such restrictions are in the Contribution Agreement to ensure that no conflicts are created between licensing model in the Qt Project and any possible existing licensing model already attached to such "third party contributions". For example, if the Qt Project accepted code that was, for example, restricted to "LGPL-only" licensing in the essential Qt modules, the use of Qt by commercial users would be significantly restricted. Commercial Qt users are crucial to funding the development of Qt and we want to ensure they are able to continue to fully participate in the Qt Project.
How can I terminate my contribution agreement?
You may terminate your contribution agreement by sending a written notice to Contribution Agreement / Legal Contact / Ruotsalainen Topi. As set forth in Section 6.4 of the Contribution Agreement, the termination will become effective 30 days after receipt of the notice. Please note, however, that any contributions you have made to the Qt Project will continue to be subject to the terms of the contribution agreement.
What does the contribution agreement do?
It defines the exact rights that you, as the contributor, grant when you submit code or other materials to the Qt project. Under the contribution agreement, you provide the following:
- A copyright license to Digia for your contributions;
- A patent license to Digia and Qt users (if applicable) to your contributions used alone or in combination with Qt as specified in further detail in the Contribution Agreement;
- A warranty that you are able to grant the above licenses;
- A warranty that by making your contribution you are not breaching your other agreements.
How does the contribution agreement help me?
The Contribution Agreement enables Digia to make the Qt asset available under an open governance model. As Qt development began over 15 years ago, Digia has several existing commitments related to the Qt asset, namely those owed to the KDE Free Qt Foundation and commercial Qt users. Without a contribution agreement, Digia would be unable to meet its obligations to these important stakeholder communities. Additionally, the entire Qt community benefits from the terms included in the Contribution Agreement, such as those provided in the patent license clause.
I, or my company, would like to negotiate some changes to the contribution agreement. How do I do this?
It is the policy of the Qt Project that contributors should all contribute under the same terms and conditions so modifications to the Contribution Agreement are not made. However, we are happy to accept your comments or feedback regarding the Contribution Agreement. You may submit your comments or feedback to Contribution Agreement / Legal Contact /Ruotsalainen Topi.
How can I provide my comments to the contribution agreement to Digia?
Comments or feedback to the Contribution Agreement may be submitted to Contribution Agreement / Legal Contact /Ruotsalainen Topi.
Can Digia at any time change the terms of the contribution agreement?
No, not easily. The Contribution Agreement terms may only be modified in accordance with Section 5, which requires that Digia notify the Chief Maintainer of its desire to modify the terms. Upon such notification, the Chief Maintainer initiates an election from among the current Qt Project Maintainers. The elected Maintainers then meet with Digia to discuss the changes and the elected Maintainers, by a majority vote, may veto Digia’s modifications to the Contribution Agreement.
I’m reluctant to give Digia the right to enforce my copyright against potential infringers. Do I have a say whether Digia proceeds with enforcement actions?
It likely depends on the individual circumstances of each case. The copyright enforcement authorization is included in the Contribution Agreement for the benefit of the entire community. Every user of Qt has an interest in ensuring the Qt asset is available for the benefit of the entire Qt community under agreed rules, which is the reason why this right to enforce is an important deterrent against potential infringers trying not to follow these rules.
Do I have to physically sign the contribution agreement?
No, the Contribution Agreement is accepted by using a "click to accept" process. By asserting that you have read, understood the terms and agreed to accept the agreement by typing "I accept" you have entered into the Contribution Agreement and no further actions are required to enter into the agreement. If you elect to set up a corporate-wide contribution agreement, the agreement must be physically signed and submitted as described on the Qt Project web site.
What happens if I contribute code which I have patented to Qt Project?
There are no restrictions preventing you from contributing your patented technology to the Qt Project and the Contribution Agreement regulates this situation. You continue to own your patents, but of course you should be aware that by doing such contribution you are also giving a patent license (as defined in the Contribution Agreement) to Digia and the Qt community for any patents that are licensable by you and infringed by your contribution itself or when used in combination with Qt. Please refer to the Patent License Section in the Contribution Agreement for information about the scope of the patent license.
Will Digia review the code and contributions?
Code can be periodically reviewed by Digia. However, since the governance model is changed in the Qt Project Digia does not take the responsibility for reviewing the Qt code base or offer any warranties, assurances or guarantees to the Qt community regarding the suitability of the code. Therefore we encourage the others using the code to review it as well. It is good to keep in mind that code that is not reviewed is included in Qt repository.
Are patented contributions accepted to Qt?
The Qt project is not taking a stand on whether patented technology should or should not be included in Qt and it is up to each individual contributor/contributing company to decide upon an IPR approach that works best for its business.
Individuals and corporation contributors should be aware, however, that if a contributor contributes code for which such contributor has a patent (or a right to license such patent) then the contributor grants a patent license to the Qt Project for such patented technology as defined in Contribution Agreement. Similarly, it should be noted that there are no warranties or other assurances from contributors, the Qt project, or Digia regarding possible third party patent infringement claims.
It is a common goal for all participants in the Qt Project that non-licensed patented contributions are not accepted. Contribution Agreement provides clarity also in this respect as it contains well-defined patent grant from the contributor. Non-licensed contributions are not accepted, so that the Qt Project is not impacted from possible unclarity created by non-licensed patented contributions.
I would like to relicense "third party" code currently available under a non-compatible license. What happens if I am unable to reach the original copyright holders or the copyright holder does not agree to license the work under a license compatible with the Qt Project?
In those cases such code under non-compatible license cannot be contributed to Qt Project, and in practice only solution there may be that the code in question needs to be rewritten.
Is this FAQ legally binding?
No. This FAQ is merely provided as a reference guide to the Contribution Agreement. We recommend that contributors always read the actual Contribution Agreement text, which is the legally binding document.
I would like to receive specific guidance on my position under Qt Contribution Agreement. Can you help?
Unfortunately no. We can only provide general level FAQs and Q&A like these, but no legal advice. Your legal rights and obligations are defined in the contribution agreement itself, and we cannot provide any legal guidance to you. You need to discuss with your own legal counsel for any legal advice you may want to seek based on your specific circumstances.