tags:

views:

886

answers:

9

I find it unnecessarily duplicated to have it in each code file, but I see it on most open source projects. Should I do that same, or just include a single license outside the code?

+18  A: 

A single one outside the code, please ! I don't know about the others, but I hate seeing the same thing on top of every file. I think I've read it a few times, just by page_down-ing through it.

ldigas
If it's something short like BSD/Apache/MIT, then it should be okay.
Zifre
I disagree with Zifre. Any repeated license at the top is irritating for me.
strager
It's reasonable and sensible to identify which license each source file was released under, because the file might be separated from the rest of the code (reuse - encouraged, in general, by Open Source), and if the file contains no information about the licence, it's trickier to track back to the correct licence. But the whole licence in each file - no; that would be grotesque for GPL or LGPL. As already suggested, for the short licences, it's a nuisance to have the actual licence text in the file, but it's a judgement call. But it is sensible to identify which licence it's released under.
Jonathan Leffler
I just updated the file headers in my project to have only three lines: copyright, name of license, and an URL to the license text. It shorted my headers from 26 lines (BSD) to 3 lines. :)
Esko Luontola
@Esko Luontola - +1 - yes, I mentioned that approach somewhere in the comments also. IMHO, the best one. The user can't "accidentaly not see the licence" if you warn him with a link to it, and you're not clogging the screen with the actual licence text.
ldigas
@Jonathan Leffler - Nice point Jonathan. Esko's approach takes care of that problem also, just include the files of all licences you're using in your code, and point to them. I prefer to see even the short licences in separate files.
ldigas
@Esko: Can you please post a sample? I don't know what you have written for the copyright. Thanks.
Joan Venge
+2  A: 

If your code is going to be compiled so you are just distributing a binary then it really does not matter. Because when you create a binary, the comments are removed before the compilation process takes place. It only matters if you will be distributing the actual source code either open source or closed source. This typical matters if you will be distributing a application in a scripting language that doesn't compile.

adimitri
Thanks. It's gonna be open source.
Joan Venge
You can create a hard-coded string to contain the license, so it'll appear on the binary, but that's probably too much :).
Liran Orevi
+5  A: 

I think the reasoning behind putting it in each file is a legal one. If the agreement is in each file, there is no chance of someone stumbling across a piece of code without being exposed to the license.

It may not be a good one, but all the big boys use it so if it's just visual pain, I would look for a better reason not to do the same.

If you're using GPL this is more of an issue, but if you're using public domain licenses like BSD or MIT, I don't think you really care what people do with the code anyway. I suppose it depends on how strict your license is.

Kekoa
Well, in that case, just point in each file that upon continuing with it, you agree to the licence in file licence.txt. But don't copy/paste the same text in each file. I sometimes find files with code shorter then the licence.
ldigas
Yeah, I agree that it works just as well that way, especially for long licenses. Even though it may not be legally essential, or even supportable in court, a reference to your license is at the very least good to inform people without them having to go search around for what license the code is under.
Kekoa
+7  A: 

EULA is the wrong term here, as the people looking at source code usually are not end users.

Legally, it makes no difference either; copyright does not need to be declared explicitly.

Basically, all you achieve is a lower risk of people accidentally violating your license terms. You'll have to decide how important that is to you.

I'd say the best compromise is to put a very short header containing a link (absolute URL as well as relative within the project) to the full license text into each source code file. That way, anyone who cares about the license knows where to find it (ideally, people who're willing to pay massive license fees; you certainly want those people to be able to contact you!)

Michael Borgwardt
Copyright may not need to be explicit, but what about copy-left?
Kekoa
@kekoav: copyleft is less restrictive than copyright. By default, you can't make derivative works.
Zifre
What's copyleft?
Joan Venge
Btw Michael your idea to put a link is good.
Joan Venge
You mean a url, right? In that case would be complain that they didn't have internet, so didn't know the license?
Joan Venge
In a dispute, that would not be a valid argument. If told that there is a license, and how to retrieve it, you can't site technical barriers that are your fault that prevented you from seeing the license.
Lasse V. Karlsen
Thanks lassevk, makes sense.
Joan Venge
"Copyleft" is slang for the the basic idea of GPL to "subvert" copyright restrictions from within, i.e. using your rights as a copyright holder to grant a license to anyone to use your code freely, but force them to release THEIR code which is based on yours under the same license.
Michael Borgwardt
Yes, but a "copyleft" work is still copyrighted. Without copyright laws, the copyleft license does not work.
jmucchiello
Correct; but in this context, as Zifre said, it does not matter. If you don't know the license under which a particular piece of code was published, you have to assume you're not allowed to use it at all. So as the publisher, you don't have to go to extra lengths to make people read the license.
Michael Borgwardt
+2  A: 

IANAL,

Assuming you are talking about licensing, not a EULA, you can put the license outside. This is almost always done with really long licenses such as the GPL. It would be silly to put the entire GPL license in every file. Usually you would just have some type of notice saying where you can find the actual license. This is perfectly legal. However, with really short licenses such as BSD/Apache/MIT/whatever, it is simpler to just include to license in every file, since the notice saying where to find the license would be almost as long as the license itself.

Zifre
+5  A: 

No, you don't have to put the license in each source code file.

If you look closer, most FOSS applications don't do that either. They put a copyright statement at the top of each file and a short sentence telling you what license the file is under and where you can find the full text of the license. They usually point you to the COPYING or LICENSE file containing the full text of the license and/or to a website that contains the full text (in case the COPYING file isn't there anymore).

Like Michael Borgwardt said in his answers, legally you don't have to do this. But it is advisable for source code that you intend to distribute since people can immediately see who has the copyright and what the license is.

Sander Marechal
This. The copyright notice should include a reference to the name of license (if it is a standard one) and a description of how to find the license file in the source tree.
jmucchiello
A: 

You dont need it for the license, a single external file will do as long as its clear what files it covers.

However for Copyright you should have the copyright notice on every piece of text.

James Anderson
Thanks, so copyright is different?
Joan Venge
INAL but a license is a contract between you and the user/customer. Copyright is an assertion of ownership of a piece of a written work. Someone could pick up a fragment of your code and reasonably claim it wasn't copyright because the notice was missing. Dont worry though "Copyright Joe Soap (Cleansoft Inc.)" is all you need.
James Anderson
You're so wrong about that. While it's generally good to indeed add copyright notices everywhere just to be clear, but that doesn't make it fair game to "assume it wasn't copyrighted" Because you know EVERYTHING is copyrighted. When someone obtains source code, he may find a license statement that allows him to use it, or he may find out that it is in the public domain for one reason or another. If he doesn't though it is copyrighted and can't be copied. Copyright is an automatic thing and it's good to mention it, but not doing so doesn't mean you lose it...
Jasper
A: 

It depends on what the license dictates. The GPL, for example, instructs you to put a short notice in every source file, include the entire license somewhere in your source distribution, and make your source distribution available to anyone who get a copy of the binary distribution.

If you disagree with this, and it is YOUR code, you're free to choose a more agreeable license, or create your own.

Mark Jones
A: 

What I do is to put a two-line comment at the top of the file, stating my company's name, last revision date and the name of the license the source file has, then at the very bottom of the file a short version of the license.

Of course, the full license (all of them in case of multiple licenses) is always enclosed on source file and release directories.

GaiusSensei
how do you automate last revision date?
Dustin Getz