Closed Bug 971666 Opened 10 years ago Closed 10 years ago

Request for guidance on copyright notices for bug 938157 (new unwinder library)

Categories

(mozilla.org :: Licensing, task)

x86_64
Linux
task
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: jseward, Assigned: gerv)

References

Details

Bug 938157 introduces a new unwinder library, which is to be used
to help profile Gecko on some Tier-1 platforms.

The new library is an extensively cut-down and extensively
modified version of the Breakpad library that exists already in
the tree, in toolkit/crashreporter/google-breakpad.  A
significant part of the new library is new code written by me.

Please give guidance for what copyright notices to give for the
following files that bug 938157 adds.  The question arises
because many of the files are a mixture of Google and Linaro
code (in our tree) and new code, combined in a not easily
disentanglable way.

Here is a list of the files in question and the copyright summary
lines that exist within them.

newlib_common.cpp
  Copyright (c) 2011 Google Inc.
  Copyright (c) 2013 Google Inc.

newlib_common_ext.h
  Copyright (c) 2010 Google Inc.
  Copyright (c) 2012, Google Inc.
  Copyright (c) 2013 Google Inc.
  Copyright (c) 2006, Google Inc.
  Copyright Greg Colvin and Beman Dawes 1998, 1999.
  Copyright (c) 2001, 2002 Peter Dimov

newlib_dwarf.cpp
  Copyright (c) 2010 Google Inc.
  Copyright (c) 2010 Google Inc.
  Copyright (c) 2010, Google Inc.

newlib_dwarf_ext.h
  Copyright 2006 Google Inc.
  Copyright (c) 2010, Google Inc.

newlib_dwarf_int.h
  Copyright (c) 2010 Google Inc.
  Copyright 2008 Google, Inc.
  Copyright (c) 2010 Google Inc.
  Copyright (c) 2010 Google Inc.

newlib_elf.cpp
  Copyright (c) 2011 Google Inc.
  Copyright (c) 2012, Google Inc.
  Copyright (c) 2006, Google Inc.

newlib_elf_int.h
  Copyright (c) 2012, Google Inc.
  Copyright (c) 2006, Google Inc.
  Copyright (c) 2012, Google Inc.

newlib_exidx.cpp
  Copyright 2011 Linaro Limited
  Copyright (c) 2010 Google Inc.
  Copyright 2011 Linaro Limited
  Copyright (c) 2010 Google Inc.

newlib_exidx_ext.h
  Copyright 2011 Linaro Limited
  Copyright (c) 2010 Google Inc.
  Copyright (c) 2011, Google Inc.
  Copyright 2011 Linaro Limited
  Copyright (c) 2010 Google Inc.
In general, we consider it OK to amalgamate copyright lines for the same entity across different years, and to use ranges of years.

So, for example, newlib_exidx_ext.h could say:

  Copyright 2011 Linaro Limited
  Copyright (c) 2010-2011 Google Inc.

Or, are you in fact asking: "Several of these files have copyright notices scattered through them; is it OK to have a single one at the top?"

If that's your question, then the answer is "Yes, if the only difference is the name of the person mentioned". It's OK to have a single license with multiple copyright holders at the top. If they have also inserted their name into the license, it's OK to replace that with "copyright holders" and amalgamate as long as every other aspect of the license wording is identical.

Does that help?

Gerv
(In reply to Gervase Markham [:gerv] from comment #1)

Sorry to be imprecise.  That helps somewhat but not completely.

> In general, we consider it OK to amalgamate copyright lines for the same
> entity across different years, and to use ranges of years.
> So, for example, newlib_exidx_ext.h could say:
> 
>   Copyright 2011 Linaro Limited
>   Copyright (c) 2010-2011 Google Inc.

I found this example confusing, because Linaro and Google are
different entities.

IIUC, then, for files which contain multiple Google notices, just with
different dates, and no other notices, it would be OK to use a single
notice at the top, with a range of years.  Correct?  That would take
care of the majority of the files:

  newlib_common.cpp
  newlib_dwarf.cpp
  newlib_dwarf_ext.h
  newlib_dwarf_int.h
  newlib_elf.cpp
  newlib_elf_int.h

The problem is then what to do about the files that contain notices
from different entities:

  newlib_common_ext.h
  newlib_exidx.cpp
  newlib_exidx_ext.h

What is the recommendation there -- leave them all in place?
Move them all to the top of the file?

Also, for both sets of files, there has been quite extensive reworking
by me in places.  Is it necessary to add a standard Mozilla notice to
them too?
(In reply to Julian Seward from comment #2)
> >   Copyright 2011 Linaro Limited
> >   Copyright (c) 2010-2011 Google Inc.
> 
> I found this example confusing, because Linaro and Google are
> different entities.

Right, which is why there are two lines, rather than one. (Down from the 5 you quoted.)

> IIUC, then, for files which contain multiple Google notices, just with
> different dates, and no other notices, it would be OK to use a single
> notice at the top, with a range of years.  Correct?  That would take
> care of the majority of the files:

Yes, that would be fine.

> The problem is then what to do about the files that contain notices
> from different entities:
> 
>   newlib_common_ext.h
>   newlib_exidx.cpp
>   newlib_exidx_ext.h
> 
> What is the recommendation there -- leave them all in place?
> Move them all to the top of the file?

Assuming the licenses are word-for-word identical apart from various references to the name of the copyright holder, you can have a single license block at the top, with multiple copyright lines (one per organization), and references to the actual name of an org in the license body replaced by "copyright holder" or similar.

> Also, for both sets of files, there has been quite extensive reworking
> by me in places.  Is it necessary to add a standard Mozilla notice to
> them too?

No; if these come from upstream and we want to have the option of contributing back, we should keep them BSD-licensed. So no MPL notice. We could add a (C) line for Mozilla, but we don't - they are legally ineffective, and can be misleading if people think the file header is an accurate record of the copyright interest in a file.

Gerv
(In reply to Gervase Markham [:gerv] from comment #3)

> > The problem is then what to do about the files that contain notices
> > from different entities:
> > 
> >   newlib_common_ext.h
> >   newlib_exidx.cpp
> >   newlib_exidx_ext.h
> > 
> > What is the recommendation there -- leave them all in place?
> > Move them all to the top of the file?
> 
> Assuming the licenses are word-for-word identical apart from various
> references to the name of the copyright holder,

Alas, they are not word-for-word identical.  There are 3 different ones;
I attach examples of each below.

--- (1) -- Google ----------------------------------------------------

// Copyright (c) 2013 Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

--- (2) -- Linaro ----------------------------------------------------

/* libunwind - a platform-independent unwind library
   Copyright 2011 Linaro Limited

This file is part of libunwind.

Permission is hereby granted, free of charge, to any person obtaining
a copy of this 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.  */

--- (3) -- Greg Colvin and Beman Dawes and Peter Dimov -------------------------------

//  (C) Copyright Greg Colvin and Beman Dawes 1998, 1999.
//  Copyright (c) 2001, 2002 Peter Dimov
//
//  Permission to copy, use, modify, sell and distribute this software
//  is granted provided this copyright notice appears in all copies.
//  This software is provided "as is" without express or implied
//  warranty, and with no claim as to its suitability for any purpose.
//
//  See http://www.boost.org/libs/smart_ptr/scoped_ptr.htm for documentation.
Where a file has multiple non-identical licenses, hoist them all up to the top.

Gerv
OK.  I think that answers all my questions.  Thank you.
Blocks: 938157
(In reply to Gervase Markham [:gerv] from comment #1)
> In general, we consider it OK to amalgamate copyright lines for the same
> entity across different years, and to use ranges of years.

Should I use ranges when the amalgamated copyright lines do not denote
a contiguous sequence of years, or a comma-separated list?  eg:

  newlib_elf_int.h
    Copyright (c) 2012, Google Inc.
    Copyright (c) 2006, Google Inc.
    Copyright (c) 2012, Google Inc.

Should this become

    Copyright (c) 2006, 2012 Google Inc.

or

    Copyright (c) 2006-2012 Google Inc.

?
The former.

Gerv
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.