[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Maintaining copyright notices

From: John W. Eaton
Subject: Maintaining copyright notices
Date: Fri, 3 Jan 2020 19:10:50 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0

The Octave source files currently contain copyright notices that list individual contributors. I adopted these file-scope copyright notices because that is what everyone was doing 30 years ago in the days before distributed version control systems. But now, with many contributors and modern version control systems, having these file-scope copyright notices causes trouble when we update copyright years or refactor code.

Over time, the file-scope copyright notices may become outdated as new contributions are made or code is moved from one file to another. Sometimes people contribute significant patches but do not add a line claiming copyright. Other times, people add a copyright notice for their contribution but then a later refactoring moves part or all of their contribution to another file and the notice is not moved with the code. As a practical matter, moving such notices is difficult -- determining what parts are due to a particular contributor requires a time-consuming search through the project history. Even managing the yearly update of copyright years is problematic. We have some contributors who are no longer living. Should we update the copyright dates for their contributions when we release new versions? Probably not, but we do still want to claim copyright for the project as a whole.

To minimize the difficulty of maintaining the copyright notices, I would like to change Octave's sources to use what is described here


in the section "Maintaining centralized copyright notices":

  The centralized notice approach consolidates all copyright
  notices in a single location, usually a top-level file.
  This file should contain all of the copyright notices
  provided project contributors, unless the contribution was
  clearly insignificant. It may also credit—without a copyright
  notice—anyone who helped with the project but did not
  contribute code or other copyrighted material.

  This approach captures less information about contributions
  within individual files, recognizing that the DVCS is better
  equipped to record those details. As we mentioned before, it
  does have one disadvantage as compared to the file-scope
  approach: if a single file is separated from the distribution,
  the recipient won’t see the contributors’ copyright notices.
  But this can be easily remedied by including a single
  copyright notice in each file’s header, pointing to the
  top-level file:

    Copyright YYYY-YYYY The Octave Project Developers

    See the COPYRIGHT file at the top-level directory
    of this distribution or at https://octave.org/COPYRIGHT.html.

followed by the usual GPL copyright statement.

The COPYRIGHT file would also point to the COPYING file and the AUTHORS file. A draft version of that file is attached. I created it from Mercurial history and old ChangeLog files (for even older changes). I did not generate it directly from the Copyright lines in current source files because those lines have things like copyright years updated just because we were updating years and those dates have nothing to do with the years people actually made contributions. I'd rather avoid propagating the mistake of updating copyright years for people who are no longer contributing (possibly because they are dead).

In the future, we will update copyright years for each contributor listed in the COPYRIGHT file. If we are doing that from Mercurial history each year, then it seems easier than attempting to do it for each source file.

Then the guidelines for updating copyright info each year would be something like

  * Update the dates the copyright statements of each file
    so that all source files list the current year.  I believe
    this is justified because the Octave developers are claiming
    copyright for the project as a whole and we publish a version
    during the current year (even without a formal release, the
    sources are published on the web always).

  * Update the dates in the COPYRIGHT file for anyone who
    contributed some change during the year.  It should be
    easy to generate a list of contributors from the hg history
    and fairly easy to match them up with previous contributors
    listed in the COPYRIGHT file.  Should we also try to skip
    trivial changes?  If so, then maybe we should make it
    possible to automate this job by tagging such changes with a
    "[trivial change]" marker in the commit message.

Should the COPYRIGHT file include email addresses with the names? For now, I have them as <...> in the attached copy but the original version that I created includes the full addresses.

Additionally, I think it is time to drop the "Author:", "Created:", "Adapted-by:" and similar lines that appear in some source files since that information is incomplete, tends to become inaccurate over time, and is duplicated in the version control system (where it is also most likely to be correct).

I'm ready to make these changes prior to the 6.1 release but would like to hear from others before proceeding.


Attachment: COPYRIGHT.txt
Description: Text document

reply via email to

[Prev in Thread] Current Thread [Next in Thread]