What is a software licence?
A software licence is a legal agreement applied by the owner of the software or code when it is distributed, to let others know what they can and can’t do with their work.
Who needs a software licence?
Many funders and publishers now expect that any software that supports research findings are made open. If you publish any research software or code but don’t choose a licence, then default copyright laws are applied which assumes all rights of the source code are retained by the owner essentially meaning that no one can use your code. If you want to make your source code available openly for reuse, this intention needs to be made clear.
What is licensed?
In general, it is the source code and not the output that is licensed. This means that if someone uses the software or source code within their work, they own its output and they can choose to publish that output however they like, with or without any acknowledgements.
Why should I put a licence on my software?
Giving your software a licence:
- makes it available for future use by others
- allows others to understand if they can use, copy, modify, resell or distribute the software
- makes clear who is liable e.g. if something goes wrong with the software
- will increase the impact of your research through reuse and development by others
Who can apply a licence to software?
It is important to establish who owns the Intellectual Property (IP) of the work to determine who can licence the software. In many Universities, it is the University and/or funding body who hold the copyright over any work created. At the University of Cambridge, the creator of work is usually the primary owner of the IP rights. There may be situations when this is not the case such as:
- sponsored research
- research with multi-institutional collaborations
- collaborations with Industry
You can check with your contracts department to see what applies to you.
If your work could potentially form the basis of a patent application, it is important to consult with Cambridge Enterprise before choosing a licence or sharing your code with anyone other than your fellow creators.
How do I choose a software licence?
How to choose a licence will largely depend on whether you want to put any constraints on anyone who uses your software. The more permissive the licence, the less constraints on the end user. To help you navigate the different options, there are some useful licence selector tools to help you, such as:
If you are working in a community, then it is best to choose a licence that is associated with that community. There is an extensive list of common software licences.
Who is acknowledged in the software licence?
With the majority of licences, acknowledgement is granted for the copyright holder and acknowledging anyone beyond that can be difficult. For example, if a Cambridge researcher owned the work, it would be difficult to acknowledge the University of Cambridge. The same would be true if the University or funding body owned the work but also wanted to credit a researcher.
Does your code use existing software libraries?
If you are using any existing software libraries within your code, then you need to be aware that not all open-source software licences are compatible. The licensing conditions on some libraries may restrict the licence used for any resulting code. You should:
- check the licence on any additional software libraries your code uses or relies on
- consider following the licences already in place (this can be seen as good practice)
- get explicit written permission from the owner if you are using proprietary software
- include details of any copyright notices and licences for open-source packages you are distributing alongside or within any of your new outputs
What is a permissive software licence?
Permissive software licences have no restrictions on what you can do with the code, even commercially as long as you attribute the original creator. Examples of permissive software licenses include MIT, BSD and Apache. Code under a MIT or BSD licence, can even be reused within proprietary software making these some of the most open-source software licences available. Apache can be used “permissively” by co-existing with other licences; for example, having code available as add-ons that can be licensed under a proprietary licence and separately from the original code (under Apache). You are not able to file patent infringement proceedings against anyone using Apache code.
What is a restrictive software licence?
More restrictive licences such as copyleft licences, aim to ensure that software remain freely open for reuse and achieve this by requiring that any derivatives of the software have the same rights applied. Examples of copyleft licences are GNU General Public Licence suite (GPL) and are a popular choice in academic research as any software resulting from code published previously under a GPL licence will automatically be covered by the same licence. In general, software under a GPL licence can be used commercially, and within proprietary software but the software cannot be distributed unless it is made open source.
Can I change the software licence?
If you want to change the software licence, you will need to check:
- the current licence compatibility (e.g. how permissive or restrictive is the licence?)
- who owns the copyright, as you would need agreement from all the copyright holders
It may be possible to change the licence if the current one is permissive. A permissive licence essentially gives permission in advance from the copyright holders to change the licence. It may not be possible if the licence is restrictive.
Examples
It depends on which external libraries you have used in your software.
If all of the libraries have permissive open-source licences, then you are usually free to use any licence you wish. If any of the libraries have strong copyleft licences, though, such as GPL, you have to use an open-source licence. In any case, you are legally required to follow the licence conditions of the external libraries you use within your code. In addition, if your software is written as a collaboration, the licence conditions should be agreed by all copyright holders, who are usually the authors.
In general, yes, though it depends on who owns the copyright, as you would need agreement from all the copyright holders to release the software under a new licence. In addition, anyone is still welcome to use the version released under the original licence with the conditions of that licence if they so wish.
For example, say version 1.0 is released under licence A and version 2.0 under licence B. If licence A is more permissive than licence B, it is not possible to remove those extra permissions from version 1.0, but a user is restricted to the licence B provisions for version 2.0. Your licence must also be compatible with the licence of any external library you use within your code.
It depends on the licensing conditions of the software you received.
Some open-source licences permit you to (re-)licence your modified version under any licence conditions (including proprietary ones), while others such as GPL, do not.