A licensing mechanism whereby users are allowed to use, modify, re-distribute, and even sell copies of a software program. The only stipulation is that, if the program is re-distributed with modifications, the source code of the modifications must be provided.