Closed Bug 82339 Opened 23 years ago Closed 22 years ago

Embedding samples probably shouldn't use boiler-plate licences

Categories

(Core Graveyard :: Embedding: APIs, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED
Future

People

(Reporter: adamlock, Assigned: adamlock)

References

Details

(Keywords: embed, topembed-)

A lot of the source code in embedding has the NPL boiler plate. Shouldn't we be 
using the MPL-GPL dual licence instead?
What do people think? Should we be using NPL or dual MPL/GPL for embedding code?
This is a frequently asked question.  I'm cc'ing hecker and mitchell for the
best answers.

/be
um, very silly question, how would it be useful for embedding to be GPL if the 
code it links against is MPL/NPL and therefore incompatible w/ GPL?
But what use it for our embedding samples such as mfcEmbed to be NPL when it
compells anyone using them as a basis for their own apps to submit those changes
back to Netscape?

The samples should at least be dual MPL/GPL or perhaps we chould even strip the
licence altogether (but leave the copyright) and call them public domain? Tell
people they can do what they like with them.

As for the other stuff, we should be using MPL unless - to paraphrase the URL
below - "we know of some specific reason why they shouldn't".

http://www.mozilla.org/MPL/boilerplate-1.1/
Per Brendan's request, here's my opinion: I haven't looked at this code
specifically, but I presume that the code in general can be divided into two
different categories:

The first category covers code that is explicitly intended as sample code for
people to use in creating their own applications. This code is not really part
of Mozilla per se, instead it is code that users are expected to use as a base
for applications embedding Mozilla -- they're going to add their own code to the
sample code source files, or cut and paste fragments of the sample code into
their own source files.

IMO this sample code should be licensed with minimal restrictions. It's not
technically possible to make it "public domain" (because the code still is
implicitly copyrighted by somebody), but it could be released under something
like the MIT license, or even something more minimal than that. The guide here
should be the permissions granted for code samples distributed to developers by
Netscape, Microsoft, etc.

If for some reason the copyright holder(s) (e.g., Netscape and others) don't
want to release this sample code under such a minimal license, IMO it still
shouldn't be released under the NPL, because that would give Netscape excessive
and unnecessary rights to customer-created applications into which developers
cut and paste fragments of sample code. Instead I'd recommend the MPL (or MPL/GPL).

The second category of code is code that really is part of Mozilla and not just
sample code. IMO this code should be handled just like any other Mozilla code:
Existing code should be licensed the same way it's being licensed now, new code
written by non-Netscape developers should be under the MPL (unless the existing
code is dual-licensed, in which case it should be under the MPL/GPL), and for
new code written by Netscape developers Netscape should be encouraged to use the
MPL (or MPL/GPL) instead of the NPL (or NPL/GPL) if possible. (Of course,
Netscape make take this advice or not.)
s/make/may ?

the MIT license sounds good,  
http://www.opensource.org/licenses/mit-license.html
Looks like a lot of this is covered by bug 98089. Just the issue of what licence
for the samples to sort out now.
Depends on: 98089
QA Contact: mdunn → bmartin
Target Milestone: --- → Future
Summary: Boiler-plate licences in embedding is probably wrong → Embedding samples probably shouldn't use boiler-plate licences
Specifically I'm talking about TestGtkEmbed, PPEmbed & MFCEmbed sample code here
and not the GTK Widget, ActiveX control or the PowerPlant backend if that can be
considered seperate from PPEmbed.
I'm looking at the MIT licence and I don't think it's adequate either in its
present form. I think this section should be deleted.

", subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software"

I believe the samples should be totally public domain for anyone to do what they
like with. At the same time I think we need to make it crystal clear, that this
right only extends to the sample code, not to anything else in Mozilla.

Here is a sample header modified from the MIT licence. I would like consensus on
the form this should take and then I'll go in and change all the headers. BTW do
I need to put in the "BEGIN/END LICENSE BLOCK" bits that the MPL boiler plate has?


/*
 * Copyright (c) 2002 Mozilla.org
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this Mozilla sample software and associated documentation files
 * (the "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to permit
 * persons to whom the Software is furnished to do so, subject to the
 * following conditions:
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 * Contributor(s):
 *
 */
I don't think that there's any harm in removing the condition about keeping the
copyright notice, but then I'm not a lawyer; it may be that removing the
condition might cause problems if a "downstream" licensee received the code
without the disclaimer and then proceeded to sue somebody over problems with the
code.

However if you do remove that condition, I think you can remove the phrase
"subject to the following conditions" as well. I don't believe that the warranty
disclaimer is a "condition" in the sense meant here, since it is not a
requirement imposed on licensees, but rather a statement by the licensor. But
again, I am not a lawyer and Mitchell or others may disagree with me here.

Another point: "mozilla.org" is not a legal entity and cannot copyright
anything. The copyright holder should be whatever entity or individual created
the code, whether that's Netscape Communications Corporation, John Doe, or whoever.

Finally, yes I think you should use the "license block", as it makes it much
easier for automated scripts to recognize the license headers when we audit the
Mozilla source tree for proper licenses.

Here is a revised version of the proposed license, incorporating my suggestions
above:


/* ***** BEGIN LICENSE BLOCK *****
 * Version: Mozilla-sample-code 1.0
 *
 * Copyright (c) <year(s)> <name of copyright holder>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this Mozilla sample software and associated documentation files
 * (the "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to permit
 * persons to whom the Software is furnished to do so.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 * Contributor(s):
 *
 * ***** END LICENSE BLOCK ***** */
New version looks fine to me but IANAL either. Jud, what's the best way to
resolve this?
Mitchell & Brendan can you comment on the proposed licence and give approval for
the change if appropriate? The licence would cover the contents of the
embedding/test dir for the time being (i.e. winEmbed, mfcEmbed & cocoaEmbed) 

I will change the copyright notice to be Netscape if mozilla.org cannot be a
copyright holder.
I would like to see this marked with the topembed keyword. It is very important for anyone building products 
on Mozilla. An NPL requirement to give source code to Netscape could be a serious obstacle to many 
embedding projects.
Adding topembed.

Brendan & Mitchell - I still need a yay or nay regarding this licence change. Thanks
Keywords: topembed
First, was this code was written by someone who is a Netscape employee?  If so,
I have no idea who at Netscape needs to approve using a license other than the
NPL or MPL for cod.e  So I can't say whether an MIT license is OK. 

On the other hand, it was always intended that new code would be governed by the
MPL, not the NPL.  So an MPL/GPL combo makes sense.

If this code was written by people not employed by Netscape, then of course an
MIT style license can be chosen by the authors.  If an MIT license is used, then
engineers will need to keep in mind the disctinction between code used in
samples and that which goes into Mozilla and should get the MPL/GPL.

If the original contributor is Netscape  (throught its employees) then the
copyright notice should be Netscape.

Mitchell

mitchell
There's a difference between ordinary source files, which are meant to be used unmodified most of the time, 
and sample code source files, which are meant to almost always be modified and redistributed. The license 
for sample code should not impose restrictions on modification and redistribution. The license used for most 
source files is not suitable for sample code source files for that reason. See Frank's comment #5.
Mitchell, the embedding samples are intended to be used by anyone - commercial
or otherwise - in any way they like so we want to stick a licence on that allows
that. The GPL/MPL obviously makes that samples useless for anyone intending to
produce a closed-source commercial product since it "infects" their code.

So the purpose of this bug is to change the licences to this MIT derived one.
Jud has already given the permission for us to change our own code, but I just
want to confirm that its okay by you. If so, let me know and I'll push it through.

As far as copyright is concerned, I intend to put Netscape since the winEmbed,
mfcEmbed & cocoaEmbed were all written by Netscape employees.
topembed- per EDT, but added embed keyword to keep it on the radar.
Keywords: topembedembed, topembed-
I am currently working as a consultant on a proprietary cross-platform Mozilla embedding product for a large 
software developer. I will need to use embedding sample code to make this work; I am currently using 
embedding sample code and I expect to use more rather than less in the future. Either NPL or MPL on that 
sample code as they stand may cause this project to fail legal review, which will be starting soon. Those 
licenses do not seem to have been set up with sample code in mind.

On reading the MPL carefully (on which the NPL is based) it appears to me that this could be taken care of 
with either a modification to the MPL that takes sample code into account, or a file-by-file waiver of the 
obligations in section 3.2 for Source Code Availability for modifications to sample source files. This should 
also be stated to apply to section 3.6 where it references section 3.2.

In the MPL case that would look like this for C files. The new paragraph starts "This file contains Sample 
Code".

/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * This file contains Sample Code and so license is granted to copy and
 * modify it without any obligation to make source code available. Section
 * 3.2 of the License is waived for this file and modifications to this file,
 * including the application of Section 3.2 in Section 3.6 or any other Section
 * of the License.
 *
 * The Original Code is __________________________________________.
 *
 * The Initial Developer of the Original Code is
 * ____________________________________________.
 * Portions created by the Initial Developer are Copyright (C) 2___
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * Alternatively.... [GPL/LGPL alternatives remain unchanged]
 *
 * ***** END LICENSE BLOCK ***** */

There would be a similar addition to the Netscape Public License boilerplate.
Well, I personally am not familiar enough with the code to be conviced that all
conditions on use should be removed.  But that doesn't matter, Netscape as the
owner of the code is free to  make this decision, and certainly has the people
who understand the code best.

mozilla.org has accepted code under the MIT license, so I don't see why we
wouldn't take this under the MIT license.

The suggested deletions allowing the liability disclaimer to be removed seem
unwise to me.  The MIT license is widely accepted, is this deletion really
necessary?  Futzing with accepted precedent is often alluring, but I wouldn't do
it lightly.

Note that I am not giving legal advice to anyone here.

Mitchell
Mitchell writes: "The suggested deletions allowing the liability disclaimer to
be removed seem unwise to me.  The MIT license is widely accepted, is this
deletion really necessary?"

IMO it is not absolutely necessary to modify the MIT license for this use. It's
my understanding that Adam suggested dropping the requirement to retain the
notices basically as a way of making the sample code more "public domain" in
nature, i.e., minimizing as much as possible the requirements placed upon the
licensee. As Mitchell implied though, making code more "public domain" in nature
can be a mixed blessing; in particular, as I understand it (from informal
conversations with another attorney -- also not offering formal legal advice :-)
someone releasing "public domain" code (i.e., disclaiming copyright,
distributing the code without any license restrictions whatsoever, etc.) could
still be sued (possibly successfully) by someone alleging that the code has
caused them harm in some ways. Hence the use of warranty and liability
disclaimers even in "minimal" licenses like the MIT license.

Since the licensor in this case is Netscape, really AOL Time Warner, I think
this is a concern that should be considered. So after thinking about it some
more, I think the best and most prudent course is to use the vanilla MIT
license, per the example below:

/* ***** BEGIN LICENSE BLOCK *****
 * Version: Mozilla-sample-code 1.0
 *
 * Copyright (c) 2002 Netscape Communications Corporation and
 * other contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this Mozilla sample software and associated documentation files
 * (the "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to permit
 * persons to whom the Software is furnished to do so, subject to the
 * following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 * Contributor(s):
 *
 * ***** END LICENSE BLOCK ***** */

If people using the code want to remove the notice then they'll go ahead and do
that anyway, but at least the basic legal niceties will have been observed.
Okay, I'll use the standard MIT licence.
Marking bug fixed. I've changed all the licenses in embedding/tests/
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Thanks. That should work for me in those caszs. There's also the embedding/examples folder, which I think is 
entirely sample code, and some of the code in embedding/browser seems to be sample code as well. At 
least the embedding/examples files should also be changed.

I will contact the owners of marbrow, the Mac OS Classic embedding sample, about this as well; they will 
probably want to use the MIT license rather than MPL.

I still think that over the long term the MPL should be extended to cover this case, rather than use a different 
license. Perhaps I should file an enhancement request for that?
Tim MAroney writes "I still think that over the long term the MPL should be
extended to cover this case, rather than use a different license. Perhaps I
should file an enhancement request for that?"

I understand your desire to modify the MPL in ways that would be more in keeping
with your intended use of the software, as opposed to "us[ing] a different
license". However an MPL with the changes you suggest, even as optional clauses
in the license note, would in fact be a different license than the current MPL,
one that just happens to share the same name. IMO it is better simply to use the
MPL where it has been used traditionally and has been deemed appropriate (e.g.,
with the core Mozilla code) and to use other licenses like the MIT license in
situations like sample code where the MPL is (IMO) not appropriate.

The other issue with modifying the MPL for use with sample code is that the MPL
explicitly requires that certain types of derivative works be also licensed
under the MPL. (In particular, Modifications to an MPL-licensed file must be
licensed under the MPL.) Your suggested changes do not eliminate this feature of
the MPL; indeed, you include a similar feature in your proposed license notice:
"Section 3.2 of the License is waived for this file **and modifications to this
file** ..." [emphasis added]. I'm not speaking as a lawyer here, but I think
this could cause potential problems in cases where one might want to combine
Mozilla core code with Mozilla sample code, because both licenses can exert
claims on the other code in the file.

(In other words, the sample code in the file can be considered a Modification of
the core Mozilla code in the file, and thus would have to be licensed under the
traditional MPL, with source code made available. Similar, the core mozilla code
could be considered a Modification of the sample Mozilla code, and thus could be
distributed without source code being made available. Thus the two different
licenses -- and they *are* two different licenses for this purpose -- would be
in conflict.)

Now it may be that one could argue around this potential, or try to tweak the
proposed MPL revision to address it. However I suspect that other potential
problems would still appear. Using the MIT license sidesteps this problem,
because that license doesn't make explicit claims re licensing of code added to
the original work. Plus many people (both developers and lawyers) are familar
with the MIT license and comfortable with the way it works in a context like this.

If you want to continue this discussion, I suggest taking it either to private
email or the license newsgroup, new://news.mozilla.org/

Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.