Leave copyright notices alone!

By Abhijit Menon-Sen <ams@toroid.org>

2010-04-07

Near the beginning of every new year, there is a flurry of activity in open source projects as their developers perform the ritual update of copyright dates in the source code. Here's one example of many, from PostgreSQL:

commit 07c05fef8794be091fd2f271f3a500a152f1712c
Author: Bruce Momjian <bruce@mmmmmmm.nn>
Date:   Sat Jan 2 16:58:17 2010 +0000

    Update copyright for the year 2010.

 COPYRIGHT                                          |    2 +-
 configure                                          |    4 ++--
 configure.in                                       |    2 +-
 contrib/adminpack/adminpack.c                      |    2 +-
 …
 1053 files changed, 1061 insertions(+), 1061 deletions(-)

Everyone does it, because everyone's always done it. Too bad it's a complete waste of time.

There are good reasons to include a copyright notice somewhere in your source code, even though they are no longer mandatory under the Berne convention. A dated notice makes it clear to anyone who sees the code that it is under copyright, and who the owner is; and it provides an indication of how long the copyright protection will persist.

The date in copyright notices is supposed to be the date of first publication. Copyright protection for the work begins at that time and extends for a fixed period. The continued existence or republication of the work in subsequent years obviously has no effect on the copyright term. It makes sense to change the date only if you are publishing a new work that will receive copyright protection independently from the work it was derived from. Minor incremental changes to the original do not qualify.

A major new version with many changes may qualify (whether it does or not is a matter of fact, not law), but even so, it makes sense only to update the copyright notice at the time of release, not every January; and the new notice should mention only the current year, not add it to a list of years gone by. It makes no sense whatsoever to include a range of dates:

-Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
+Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group

A related problem is that people like to spread copyright notices and other boilerplate nonsense all over their code. There are always parts of every source tree that are only ever touched by the ritual annual copyright update.

(Yes, I've spoken to more than one lawyer about this.)