My research team has developed a model, analyzed data, and generated results. We are currently in the process of publishing the results -- the article is in review -- and we are preparing to make our model available (we're talking with the publisher about whether to include it as a supplementary material with the journal).

Regardless, we will retain rights to distribute the model on our own websites. We believe in the principle of free software and want to make this model generally and freely available but request that those who use it cite the paper in which we introduce the model.

Our question is which license -- I know of GNU and Creative Commons, among others -- is best suited to this goal? Is there a answer to this question?

  • 1
    I would like to add a comment that might be relevant to the GNU option. Our code was written in Matlab, which is definitely not "free software." We want to make our code available for use, but probably can't tap into the best of the free software world.
    – mbarete
    Apr 1 '15 at 3:34
  • 1
    If this type of license doesnt exist, it should be named the academic license; free to use and modify software under the condition of citation Apr 1 '15 at 3:41
  • 1
    You really should be asking your school's lawyers to advise you on this.
    – keshlam
    Apr 1 '15 at 3:49
  • 4
    @NateEldredge Creative Commons explicitly discourage the use of CC for software; it's intended for artistic works. For software, I'd go with MIT, Apache v2, or GPL v3. The effect is the same, but they're worded to specifically handle software. Apr 1 '15 at 9:50
  • 1
    Remember that there are transitive legalities, if your code makes use of libraries. Here's a good resource for licensing issues: stackoverflow.com/questions/11033418/…
    – posdef
    Jul 6 '15 at 9:19

The site http://choosealicense.com/ will probably be helpful to you. The front page of the site offers a simple choice in fairly plain language:

  • I want it simple and permissive. The MIT License is a permissive license that is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and don’t hold you liable. jQuery and Rails use the MIT License.

  • I’m concerned about patents. The Apache License is a permissive license similar to the MIT License, but also provides an express grant of patent rights from contributors to users. Apache, SVN, and NuGet use the Apache License.

  • I care about sharing improvements. The GPL (V2 or V3) is a copyleft license that requires anyone who distributes your code or a derivative work to make the source available under the same terms. V3 is similar to V2, but further restricts use in hardware that forbids software alterations. Linux, Git, and WordPress use the GPL.

The site also has a more in-depth page giving more choices, and more detail about the differences between licenses.

I would strongly advise that you don't use a Creative Commons license for your code. Creative Commons themselves caution against this:

We recommend against using Creative Commons licenses for software. Instead, we strongly encourage you to use one of the very good software licenses which are already available. We recommend considering licenses made available by the Free Software Foundation or listed as “open source” by the Open Source Initiative.

More detail in their FAQ.

Personally I use the GPL (version 3) for most of the code I release. For very small programs -- roughly speaking, anything shorter than the license text of the GPL itself -- I tend to use the MIT license. This is partly because I'm less concerned about the fate of such small code snippets, and partly because it feels a little silly to have more license than code in a release.

As a side note -- although you haven't mentioned this possibility -- please resist any temptation to invent a new license, unless you have a really compelling reason. License proliferation is a big problem, and your code will be less useful if people have to pay a lawyer to determine whether your license is legally compatible with some other software they're trying to use in conjunction with yours. In general, I would suggest picking one of the "big three" mentioned above unless you have specific reasons against this.

Edit: I just saw your comment about the appropriateness of using a GNU license for Matlab code. There is no problem here: there is no concept of "contamination" between the license of your code and the license of the language it's written in. In fact, it would be hard to implement such a restriction, because languages as such don't have licenses: only their implementations do. Many programming languages have both closed-source and open-source implementations -- this includes Matlab, although Octave, the GPL implementation of the language, is not 100% compatible with the original version. However, for Matlab specifically, you might want to consider the BSD license, because it's the only one permitted on MATLAB central. (If you never intend to share your code on MATLAB central, this is less of a problem.)


Since I'm not a lawyer I won't try to advise you... but I'll observe that at least one large corporation seems pretty happy with Apache's version of a by-attribution license. And it's hard to beat the creative commons licenses for brevity and clarity, though I can't vouch for strength

  • 1
    The Creative Commons organisation advises against their licenses being used for software.
    – Flyto
    Apr 1 '15 at 11:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.