I have been starting to try to upload some of my stuff to GitHub, and I have read a few articles lately with some hard data showing that most of the repositories on GitHub aren't licensed properly. I would like this not to be the case. I decided to start including the MIT license with most of my projects from now on and I got to wondering whether I should name it LICENSE.txt
, or perhaps LICENSE.md
(I like this one) would be better? Then I began to wonder about the more general question: Does it matter what you name the file that holds your open source license at all? For example is your project really licensed properly if you have a valid license inside but the file is named VOIDLICENSE.md
? I know that is a bit contrived, but it demonstrates what I am trying to ask. Are there any limits on what I name the file I place my license in, or for that matter where that file is placed? If it is buried deep down in the directory structure somewhere does it still count? If there is anything else in the file does it still count? I imagine if the license is changed from the template at all it would not be considered a valid MIT license, but if something else is in the file would that void it?
It doesn't matter that much, as long as you choose something sensible.
Since you're using an open source license, you probably want to make it easy for a fellow developer to discover that he may in fact use your code under the MIT License. This is done by making your license file easily discoverable.
Anything like LICENSE, LICENSE.MD, LICENSE.TXT in the root of a repository can be considered easily discoverable. I think you may also assume that if a human does not find a LICENSE file, he would look for something else - say COPYING too. You want to prevent conflicting claims about licensing. Don't say in your README that something is licensed under BSD, while saying in a separate license file that it's MIT.
You may also want to consider discoverability by non-human agents. npm looks for a "license" field in the package.json, and displays this on the package info page at npmjs.org.
The CommonJS spec actually speaks of a "licenses" field. I know for a fact that "license" is also supported by npm though, since I'm using it myself. I also know that npm accepts a simple string value for the license field. i.e. "license":"MIT"
works.
licenses - array of licenses under which the package is provided. This property is not legally binding and does not necessarily mean your package is licensed under the terms you define in this property. Each license is a hash with a "type" property specifying the type of license and a url property linking to the actual text. If the license is one of the official open source licenses the official license name or its abbreviation may be explicated with the "type" property. If an abbreviation is provided (in parentheses), the abbreviation must be used.
http://wiki.commonjs.org/wiki/Packages/1.1
Also, it's good to know that in principle, you retain copyright over anything you publish. If no license is specified, or a (potential) user cannot find a license, he must assume he has NO license to use your work, other than any fair-use provisions under a country's copyright laws. See for discussion: https://softwareengineering.stackexchange.com/questions/148146/open-source-code-with-no-license-can-i-fork-it http://www.codinghorror.com/blog/2007/04/pick-a-license-any-license.html
if the license is changed from the template at all it would not be considered a valid MIT license, but if something else is in the file would that void it?
It would indeed be confusing to at the same time claim you are making something available under the MIT license, while the actual license text says something (slightly) different. However, you are absolutely entitled to license your work any way your want (within the limits of the law. Some requirements can't be made - and are void).
I think the biggest risk (if anything) of slight ambiguity in licensing is that a (potential) user might claim he was under the impression that he was entitled to use your work under the terms of the MIT License, because your license header said so. You'd have more difficulty suing this person in court for any wrongdoing if he did not adhere to any additional terms. He could claim innocence, as it were.
I'd say: Don't use the name of an established License (MIT, BSD, GPL, etc) unless you want to license under exactly these terms. Or if you do use such name, always say "MIT+MY_REQUIREMENTS" or so. "MIT" just wouldn't be a right "summary".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With