Software licensing

Software Process Engineering


Danilo Pianini — danilo.pianini@unibo.it


Compiled on: 2026-10-20 — printable version

back

What is a license

A legal instrument used to regulate access, use, and redistribution of software

  • You generally want to retain some guarantees on the software, e.g.:
    • be recognized as the original creator;
    • decide whether or not someone else can redistribute it
    • decide under which circumstances the software can be used
    • get paid if others use it
  • Law can change greatly among countries
    • If you are not a lawyer, or you can’t pay a lawyer, don’t come up with your own license
    • A custom license is likely to be in conflict with the law of some countries
    • Better to choose something proven to work

Copyright vs. Copyleft

Legal right that grants the creator of an original work exclusive rights for its use and (re)distribution

Copyleft

Practice (not a legal right!) in which the creator surrenders some, but not all, rights under copyright law.

  • Strong: all derived works inherit the copyleft license
  • Weak: some derived works may not inherit it
    • Whether linking produces a derived work is decided by the license itself!
  • Full: all the parts of the work are distributed under the terms of the copyleft license
  • Partial: only some parts are covered by the copyleft license.

Ownership vs. Licensing

Ownership

Possession of a copy of software.

The possession implies the right to use, even if such use implies a violation of the license (e.g. for making changes to the software, or making incidental copies).

Licensing

The software is not sold, but merely “licensed”, namely permitted to be used, under the conditions of an End-user license agreement (EULA).

Proprietary vs. Free


Rights scale, public domain on the left, proprietary on the right.

Proprietary

The software publisher grants the right to use a certain number of copies under the conditions of an EULA, but does not transfer ownership of the copies to the customer. Usage of the software may be subject to acceptance of the EULA.

Free

The software publisher grants extensive rights to modify and redistribute the software, often prohibiting rolling back such rights (strong copyleft).

Freedom: as in beer vs. as in speech

Much easier for Italian speakers:

  • free as in speech: libero
  • free as in beer: gratuito

Free as in beer

Free of charge

Free as in speech

The user receives the source code of the software, is allowed to modify and redistribute it.

  • The user can be asked to pay for receiving a copy: it can be distributed for a fee
  • The author can also ask for additional money for accessing the source code
    • but not “too much”
    • e.g., asking for a billion dollars would make the software de-facto proprietary.

Free vs. Open source

Usually together, but:

  • Open source: focus on availability of source code and right to modify and share it
  • Free: focus on freedom to use the program, modify, and share it

There are non-free open source licenses:

  • Apple Public source license 1.0 $\Rightarrow$ too generic
  • Artistic License 1.0 $\Rightarrow$ overly vague
  • NASA Open Source Agreement

And there are free non-open source licenses as well

Unlicensed software

  • Internal business and trade secrets
    • Release is unwanted
    • Undisclosed, unavailable, unlicensed
  • Software distributed without any license
    • fully copyright protected, and therefore legally unusable
  • Public domain
    • At copyright termination, distributed unlicensed software becomes public domain: freely usable, modifiable, redistributable
    • It takes over 100 years for software released after 2008

Proprietary licenses’ constraints

  • Closed volume: the customer commits to purchase a certain number of licenses over a fixed period (mostly two years).
    • Licensing can be limited per user, CPU, concurrent usage, etc.
  • Maintenance and support: proprietary licenses usually include forms of maintenance and support
  • Warranty: proprietary licenses often include a warranty
    • Typically time limited
    • Typically with purchasable extensions

GNU GPLv3

GNU General Public License

  • Free and open source
  • Strong copyleft
    • Modified versions must be released under a compatible license
    • Combined works (linking) count as derived work $\Rightarrow$ also GPL
  • Does not allow linking from non GPL-compatible licensed software!
    • If you want your software to be used as a dependency of proprietary software, don’t use this license!

GNU LGPLv3

GNU Lesser General Public License (LGPL)

  • A modification of the GPLv3 with a linking exception
    • Not an entirely different license, unlike the previous LGPL
  • Free and open source
  • Weak copyleft
    • Modified versions of the library must be released under a compatible license
    • Combined works (linking) do not inherit the LGPL, but inherit some obligations
  • Allows linking from code with a different license
  • Work linking the LGPL library (combined work) must:
    • Allow modification of the original linked library shipped with the work
    • Allow reverse engineering and debugging of the combined work
  • These requirements are often unacceptable for companies!

GNU GPL with linking exception

GNU General Public License with linking exception

  • Can be built on top of a GPL, by manually adding an exception for linking
  • Free and open source
  • Strong copyleft, but on a narrower scope
    • Modified versions must be released under a compatible license (as in GPL)
    • Combined works (linking) are carved out of the copyleft by the exception
  • Allows linking from code with a different license without further restrictions
    • Combined work can be redistributed under non GPL-compatible licenses

Example exception

Linking this library statically or dynamically with other modules is making a combined work based on this library.
Thus, the terms and conditions of the GNU General Public License cover the whole combination.
As a special exception, the copyright holders of this library give you permission to link this library with
independent modules to produce an executable, regardless of the license terms of these independent modules, and to
copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that module. An independent module is a module which
is not derived from or based on this library. If you modify this library, you may extend this exception to your
version of the library, but you are not obliged to do so. If you do not wish to do so, delete this exception
statement from your version.

Copyleft and linking: a summary

Modified library Work that links the library
GPLv3 must be GPL must be GPL (it is a derived work)
LGPLv3 must be LGPL any license, plus relinking and reverse engineering duties
GPL + linking exception must be GPL any license, no further duties
  • The left column is the same everywhere $\Rightarrow$ all three are copyleft on their own derivatives
  • The right column is what the strong / weak labels are about:
    • LGPL weakens the obligations on the combined work $\Rightarrow$ weak copyleft
    • The exception removes the combined work from the scope of copyleft, leaving full GPL strength inside it $\Rightarrow$ strong copyleft

MIT License

  • Extremely permissive
  • Free and open source
  • GPL compatible
  • No copyleft: the work or a derivative can be redistributed under any other license
  • Does not protect trademarks
  • Does not protect patent claims

Apache License 2.0

  • More restrictive than MIT
  • Free and open source
  • GPL compatible
  • No copyleft: the work or a derivative can be redistributed under any other license
  • Protects trademarks
  • Allows for placing a warranty
  • Protects patent claims
  • Forces authors of derived works to state significant changes made to the software
  • If a NOTICE file with authors is provided, it must be included when redistributed. Entries can be appended.

WTFPL

  • Extremely permissive but problematic
  • A good example of how things may go wrong if you write licenses without competence
  • Free, not open source
  • No copyleft
  • Better use something else
           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                   Version 2, December 2004

Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 0. You just DO WHAT THE FUCK YOU WANT TO.

FOSS License compatibility

floss license network

compatibility

Creative Commons

Available rights

  • BY (Attribution) – Derivative works must credit the original author
  • SA (Share-alike) – Enables copyleft
  • NC (Non-commercial) – Derivative work can only be used for non-commercial purposes
  • ND (No derivative Works) – Free distribution and copy, but derivatives are forbidden

Valid combinations

  • CC0 – Public domain (prefer the MIT license for similar protection)
  • CC-BY – Attribution
  • CC-BY-SA – Attribution, Share-alike (enables copyleft)
  • CC-BY-NC – Attribution Noncommercial
  • CC-BY-NC-SA – As above, plus copyleft
  • CC-BY-ND – Attribution No Derivatives (commercially usable, but not modifiable)
  • CC-BY-NC-ND – As above, non commercial

Applying a License

  1. Create a LICENSE or COPYING plain text file in the repository with the full license text
    • Full text can be easily found online
    • Change the owner and the copyright year
  2. Apply a copyright notice header to every source file
    • Use an automated tool to do it
    • Most IDEs can deal with this
    • Header templates are usually available where the license is published

Your software is now licensed!

Software licensing

Software Process Engineering


Danilo Pianini — danilo.pianini@unibo.it


Compiled on: 2026-10-20 — printable version

back