tags:

views:

304

answers:

3

Say I'm writing a program I'm going to release under the GPL. I want to use NLog as the logging module, which is released under the BSD (I'm not just concerned specifically with NLog as there are other BSD modules out there I'd love to use). The BSD license is GPL compatible so I can do this. As far as I understand, I have to leave the BSD license there on each file in NLog, but I can add the GPL to the "whole work".

Now let's say I make a change to the NLog code and I want to contribute that back to the NLog project as BSD licensed, and obviously also keep that improvement in my program. I know that I can do this, but I'm really confused about the mechanics of the copyright notices.

Assuming:

  • Each NLog file has the original copyright and BSD license text at the top.
  • Each file in my application (including the NLog files) has the copying permission for the GPL license at the top, specifying that this file is part of the larger application.
  • The GPL license text is included in a text file at the top of my directory tree.

So when I make a change to the NLog code, do I:

  • Add a copyright notice to the top of that file (Copyright 2009, Me)?
  • Post the change back to NLog's mailing list or something as a file with the GPL reference removed, so it's just BSD?

I would think this is a common task, but I can't find anything online to really help me.

+1  A: 

There is no requirement that any files for any license have the license embedded in them, and I for one find it incredibly irritating when they do. Simply maintain the copyright and any other attribution messages & remove any license stuff.

BTW - other crap that should be removed:

  • version history (don't we have VCS?)
  • "standard" comment blocks that don't tell you anything
anon
I also find it irritating, but the best practice says you should: http://www.gnu.org/licenses/gpl-howto.html Also, I think you're not allowed to remove the BSD license - isn't that one of the requirements of the license?
Scott Whitlock
Nope. You have to maintain the license in your DISTRIBUTION (i.e. as LICENSE, read.me or COPYING file) not in every source code file. The copyright must be maintained.
anon
(Cont'd) It's easy to see that this must be the case, as the binary is equally under the license, but doesn't contain the liscense text.
anon
@Neil - You're not suggesting I remove the license notices from the NLog files are you? You just mean I don't have to add GPL copying notices to each NLog file, right?
Scott Whitlock
@Scott I'm suggesting you can remove them if you want. But no, you don't have to add the GPL to each file.
anon
@Neil - Interesting, very very interesting. I probably wouldn't go through the trouble of removing the NLog license notices (seems like unnecessary work), but just including copyright and attribution at the top of each file, and a single license at the top of the hierarchy is much and easier to maintain.
Scott Whitlock
@Neil: it would be nice to provide references, because both the FSF, Boost and O'reilly's book “Intellectual property and open source” recommend putting the license inside each file.
Bastien Léonard
@Bastien Maybe so, but no license I'm aware of requires it. Consider if you decide to relicense your code from (say) GNU 2 to GNU 3 - are you really going to replace all the licenses in line in your code? It doesn't seem practical to me. And see my previous point regarding the binary.
anon
Including the license in each of the code files is not uncommon, and has been recommended to me specifically and repeatedly by IP attorneys (as opposed to developers who think they know IP law).
Cheeso
@Cheeso Sure. But remember that when a lawyer gives advice their #1 priority is to avoid being sued themselves, not what is best or most convenient for the client. So it's easiest for them to recommend you include the full license in every source file. And who knows - they may be right! All I am saying is that the license itself does not require that you do so.
anon
@Neil - I was looking at the way Qt does it with their cpp files. They have the copyright at the top, plus a license section with 3 different licenses in it (commercial, LGPL, GPL3). Then there's a LICENSE.xxx file in the appropriate directories. I think I might have to follow that model. Also, looked at SharpDevelop - they just have a pointer to a top level file, and the included BSD libraries are just left the way they were from the other project.
Scott Whitlock
+1  A: 

GPL does not force you to make all files in your project GPL. So you can just keep the files you used from another project on the BSD licence, and report and updates back to that project.

As for adding the copy right notice, I think that is only meant for when you release a project, most existing projects will just be interested in the changes you made to their files (if you added files just use the same style). How you commit your own changes to an existing project depends on the project, so just leave them an email once you have changes for them.

Thirler
+1  A: 

If it's too confusing, it's worth having an IP lawyer have a look at it.

Cheeso