A license is an agreement between a developer and user on how a software product can be used. The terms of a license are outlined in a document called a "license" or "licensing agreement".
Licensing agreements can be general and apply to all users, like an EULA. Other agreements are more specific to a particular user; these would include private licensing agreements between a developer and a user.
Other licensing agreements allow users to modify the product's code.
Known as open-source software, developers are offering these products in the spirit of software freedom and draft the agreement necessary to protect interests while granting users extended privileges not offered in specialized agreements or EULA agreements.
All licensing agreements contain similar provisions:
You may be tempted to limit this section to allowing users "to use" software, but more detail is required.
The license needs to indicate whether the use is exclusive to the one licensed user or limited to particular services, sites, and purposes. If sublicensing is allowed, those terms are included here too.
This often overlaps with permitted uses. Many definitions of allowed uses are described in the negative, like the restriction on reverse engineering. Other explicit restrictions may limit the number of copies made of software or on derivative uses.
For example, if you run a platform to help developers create their own apps, you may place a restriction on using the code for profit in your licensing agreement.
Intellectual property rights.
If you wish to retain exclusive ownership of the software and keep it closed-source, your licensing agreement requires a section explaining that the copyright belongs exclusively to you. Even if you offer an open-source product, this remains relevant.
For example, some companies require attribution if a user uses that code for their own product.
Warranties and limitations.
When you allow users to create derivative works with your code, that has the possibility of opening you up to liability if it does not work for them.
If you offer certain guarantees, those need to be stated clearly too.
If a user creates a profitable product using your code, do you expect compensation? Any royalty requirements need to be indicated clearly to the user.
Likewise, if redistribution is prohibited and the code is only for personal use, that statement is also required.
How to choose a software license
Choosing a license form depends on whether your software is free, purchased or contains open source code.
"Free software license" and "open source license" are essentially the same thing, although "free" indicates the freedom to manipulate the software rather than as an indication of price.
A broad license works great for the minimalist.
This "do anything" license allows users to modify the software and use the code in their own proprietary products, including those that are distributed for profit.
A broad license is one of the easiest licenses to implement but offers little copyright protection.
You will need the legal agreement to specify that there are no warranties because you risk liability if your code does not perform as expected.
The GNU, or General Public License, is a free software license that offers users freedom to operate, study, share, and modify the software. An effort that started with the Free Software Foundation (FSF) in 1991, it's now a popular choice for open source projects.
Audacity is an open-source sound manipulation app that's available to download for free. This app is an example of a software product that uses the GNU.
Like many of its type, its starts with the general preamble of FSF which describes the freedom to manipulate and change a product:
Even using the GNU license, that does not give users the chance at a free-for-all of public distribution and profit generation. While using the GNU license leaves your software open to being changed for personal preferences, there are still limitations on using it for proprietary products or distributing it.
Sharing is encouraged, but not for a price.
Audacity describes this briefly at the beginning of its licensing terms. Distribution is allowed but users must make the same disclaimers that are also relevant to Audacity:
PDFCreator is a free product by PDFForge that also uses the GNU license. It also offers a summary by clearly indicating what a user may do:
If you're allowing users to adjust your product, the GNU license is likely your best option for an easy licensing agreement solution.
You can at least use it as a template to create a better licensing agreement. For example, if you allow users to modify the source code but you would prefer they do not distribute copies, make that clear in your agreement.
However, do not label your agreement as a GNU license agreement. If you prefer to limit a user's authority to merely using your product and want to maintain closed-source code, an End-User License Agreement (EULA) is your best option.
The EULA license is used to limit use. There are no terms regarding modification of the software or using its code for other products. An EULA agreement does not allow for derivative products or reverse engineering either.
The agreement will also contain disclaimers of liability and warranties, but that's not unique as most software agreements contain those terms as protection from liability.
If you're not distributing open code or developer tools, you likely want the limits indicated in an EULA agreement. This is especially true if your software is unique on the market and profitable to your company.
The EULA offers additional intellectual property protection that would not be present in other software agreements.
One example of a relevant limitation is the one concerning users and devices. Microsoft licenses Office 365 as a subscription service. While a GNU encourages free distribution, the licensing and subscription agreement available through Microsoft products is much more limiting:
Piriform creates a series of PC management tools, including CCleaner. A link from its platform takes you to a comprehensive list of EULA agreements for each of its products:
If you go to the EULA for CCleaner Free, you will find a conspicuous list of authorized uses for the software. This is a good example where permissive uses are worded primarily as restrictions:
As you can see, licensing agreements are very adaptable from the most liberal to the very restrictive.
An EULA is normally enough if all you wish to authorize is use. However, if you offer open source code, going to a GNU or modified GNU license is likely a good way to go.
Once you decide on a type of licensing agreement, you need to determine how to help your users find the license agreement.
How to use a software license
The link to the license, or the location of its folder, should be stated clearly on your product's front page.
One option is to offer a general announcement, like this sample announcement for entities using the GNU license:
You do not need to maintain the entire content of the license. The purpose of this announcement is to communicate that there is a license agreement affecting the product.
Another way to handle licensing agreement availability is through your product. Going to the "About" tab on CCleaner Free by Piriform takes you to a link that leads to the list of licensing agreements for Piriform products:
If you provide links to a document management service, make sure the license is located in a publicly available folder.
It's difficult to use the protective terms of a license if users cannot access it. This is a frequent error that could waive any copyright protection you enjoy. In addition to making the licensing agreement available, you also need a system to assure users accept it.
Whether you use a GNU, modified GNU or EULA, the easiest way to go about this is with clickwrap. You can set this up as part of the signup process:
You can also set it up as an explicit "I Agree" as shown during OS X Yosemite installation process:
Your licensing agreement will define the extent of your intellectual property rights and the rights of a user to modify the software.
How you choose the type of licensing agreement and its content depends on the end you hope to achieve with your product.
If an open source free-sharing platform is your intention, choosing a GNU or slightly modifying the GNU to your terms is a good course of action.
However, if all you want to allow users to make use of your product with no code modifications, the EULA is a good protection measure.