Sorry, the topic gets boring but I added a license header to a C++
sourcefile (cinelerra/cache.C) I edited which reads:

/*
  Copyright (C)         Heroine Virtual Ltd.
    1996-2006,          Jack Crossfire <[EMAIL PROTECTED]>

  Copyright (C)         CinelerraCV
    2007,               Christian Thaeter <[EMAIL PROTECTED]>
                        et al.

  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License as
  published by the Free Software Foundation; either version 2 of the
  License, or (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

This file is actually mostly rewritten by me so the 'et al.' is only a
safety measure, but for other files I don't want to figure who else
touched them manually.

I'll go on to add such to all files where I apply non-tivial edits, any
objections?

If anyone feels left out in some file, please notify me, I'll add you.


For future I would suggest the following (already sketched that on irc):
Write a smart script which can deduce licenses by:
 - checking the type of file, we only handle text files,
   binary files need exception rules
 - grepping for copyright/license information in the file
 - checking if the directory where the file is has a license file
 - check against a manually maintained exception list

if the script can NOT safely figure out the license (ex: detected a
copyright note but no license, ...) then it should notify the user for
human inspection for adding it to the exception list after manual review.

if the script can safely figure out under which license a file falls
then use the SVN history to figure out who edited it when and in which
revision.
We need a list associating revisions with people for exceptional cases,
it could take file patterns(or regex) like this example:

# for all revisions all fonts belong to 'ms'
*: *.ttf:ms

# *:hv denotes a upstream merge,
# foo/bar.C:j6t was also edited by Johannes etc.
r1234: *:hv foo/bar.C:j6t ...

next we need an association of user and the license they usually use
ms FONTSEULA
hv GPL
j6t GPL

maybe also a syntax for exceptional licenses  foo/barf.C:j6t!BSD

if the script detects a collision it should notify this for fixing in
the exclusion list.

having all this information (date/person) we can automatically construct
a copyright header including year('s) and person.

This is only a sketch, such a script should have some more logic and
should be applied in a 'dry-run' while developed. At least I think this
approach is much easier than manually reviewing the history of 5000+
files. Further the development and history of this script and its
exception list will be tracked in revision control this gives some open
and reviewable process and I also believe this way is far less prone of
human errors which will happen on a manual review.

Finally we should put a big DISCLAIMER into the sourcetree which
explains this process and note that anyone who spots a problem shall
notify us and it will be fixed.

So, now the bad news: When someone else starts it, I will help to work
out the details. But I will not code it! I will not participate in a
discussion if we could/should do it this way, just do it or leave it.

        Christian


_______________________________________________
Cinelerra mailing list
Cinelerra@skolelinux.no
https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra

Reply via email to