The legal aspects of selling software are, for the most part, pretty vague for most developers. During preparations for launching our software market, Binpress, I absorbed a lot of information from our very good copyright attorney and got to understand much better the nuances of software licensing. Here are some of the lessons I learned.
You need a software license when you are selling software
Seems obvious, right? however, many freelance developers do not use any license. Common misconception seems to be that when you develop custom code for a client, he basically owns the code when the job is done. That premise is usually false. While the license given to custom software solutions is usually liberal, allowing changes to source-code (with conditions) - there are many restrictions that apply on the buyer. For example, it's very rare to allow a client to resell your work as his - though without a license, he can certainly do that.
The purpose of a license is to protect your intellectual property (IP) and copyright. While you may intend to allow a client to modify the source code you provide to fit his needs, it does not necessarily mean he can sell it or include it in his other works.
Lets go over some decisions you have to make when writing a software license and explain the legal terms that describe it:
Do you want to allow clients to redistribute your software?
The most basic and critical question. If you answer YES, the license is called a Sublicensable license and it allows license holders (your clients) to resell your code with their own license, as long as that license does not contradict your original license.
Sometimes, an additional condition is added that the software cannot be sold as is and must be included in a greater work to be sublicensed. This condition prevents your client from becoming your competitor and basically selling the same product you are selling. A sublicesnable license should be used when you want to allow clients to sell solutions based on your work - for example, the client wants to sell CMS product that uses a plug-in developed by you.
The opposite of a sublicesnable license is a Personal license. A personal license prohibits license holders from reselling, renting or even allowing use of your code by 3rd parties. This type of license is common when you are selling premade (non-custom) code and want to limit use to the client only. The vast majority of desktop applications are sold under this license.
Do you want to allow clients to modify the source code?
Despite what it may seem, a sublicensable license by itself does not allow clients to modify your code. In order to allow that, the license must include the right to create derivative works. A derivative work is a modified version of your source code.
Having the right to create derivative works in a sublicensable license by itself does not give the client the right to sell modifications (only the original code). In order to allow the sale of a modified version of your source code (either as standalone or as a part of a larger work), the license must include the right to distribute derivative works.
How many sites and servers do you want to allow clients to use your software on?
This web-oriented clause restricts the client's use of the software to pre-determined number of sites / servers. While more relevant if you are selling a non-custom solution, it can still apply to custom solutions as well. You can also provide the right to use the software on unlimited sites / servers. A common approach is to offer different pricing (mostly for non-custom solutions) depending on the extent of use granted.
Do you want to allow commercial use of your software?
While this condition is true for most custom solutions, there are cases - such as when you are giving a discount to a non-profit - where you want to prohibit commercial use. It is common for off-the-shelf solutions to have a pricing strategy in which the basic product is given for free and commercial versions or extensions are sold for a fee. In order to allow that to happen, commercial use must be covered by the license.
There are basically three main options - royalty free commercial use, non-commercial use and commercial use with conditions. The last one states that commercial use is allowed if certain criteria are met (criteria that you need to decide upon and must be specified in the license).
Do you want to allow clients to sell their license?
Self explanatory. In legal terms - a license that allows license holders to sell their license and their right to use the software to a 3rd party, is called an assignable license. A license that restricts sale of the license is called a non-assignable & non-transferable license.
Do you want to grant your clients an exclusive license?
An exclusive license allows you to sell your software to only one client (granting them exclusivity). This could be a requirement by a client, or your way to insure them that you will not be reselling the custom solution they paid you to develop. In most cases this only applies to custom solutions.
This is just a partial list - there are many more minor restrictions and rights that can be included in a software license. We cover some of those in our licensing guide on binpress, and there even more less common clauses that can be applied. If you want to create a legally termed and binding software license using those conditions, we provide a commercial license generator for registered developers in our marketplace.
If you have any questions regarding any of the topics I covered, I would be happy to elaborate or even pass it on to our attorney. The next time you will be talking to clients about a potential project, be sure to have a ready software license that covers their rights and restrictions. This can save you much anguish and provide you with legal protection in the case that things go south.