License header: Difference between revisions

From FreeMind
Jump to navigationJump to search
(9 intermediate revisions by the same user not shown)
Line 9: Line 9:
<pre>
<pre>
/* FreeMind - A program for creating and viewing mind maps
/* FreeMind - A program for creating and viewing mind maps
  * Copyright (C) 2000-<YEAR> <AUTHORS>
  * Copyright (C) <START-YEAR>-<END-YEAR> <AUTHORS>
  * See COPYING for Details
  * See COPYING for Details
  *
  *
Line 27: Line 27:
  */
  */
</pre>
</pre>
The <START-YEAR> is often 2000, but not always.


Questions:
Questions:
Line 105: Line 107:
</pre>
</pre>
Notes: The authors are not stated on a per-file basis; they can be seen from the commit history. See also https://api.libreoffice.org/share/readme/LICENSE.html. A similar header (not stating individual contributors) was seen in other files[https://github.com/LibreOffice/core/blob/master/basic/source/runtime/iosys.cxx][https://github.com/LibreOffice/core/blob/master/dbaccess/source/core/dataaccess/ComponentDefinition.cxx].
Notes: The authors are not stated on a per-file basis; they can be seen from the commit history. See also https://api.libreoffice.org/share/readme/LICENSE.html. A similar header (not stating individual contributors) was seen in other files[https://github.com/LibreOffice/core/blob/master/basic/source/runtime/iosys.cxx][https://github.com/LibreOffice/core/blob/master/dbaccess/source/core/dataaccess/ComponentDefinition.cxx].
Example license header from GCC[https://github.com/gcc-mirror/gcc/blob/master/libcpp/charset.cc]:
<pre>
/* CPP Library - charsets
  Copyright (C) 1998-2026 Free Software Foundation, Inc.
  Broken out of c-lex.cc Apr 2003, adding valid C99 UCN ranges.
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 3, 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; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */
</pre>
Notes: This is made possible by [[copyright assignment]] to FSF, which ceased for GCC only in 2021. This GNU GPL V3+, not V2+.
Example license header in LLVM/Clang[https://github.com/llvm/llvm-project/blob/main/clang/lib/Driver/Action.cpp]:
<pre>
//===- Action.cpp - Abstract compilation steps ----------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
</pre>
Notes: no individual contributors are listed. The license information is concise.


== Option: do not list individual contributors ==
== Option: do not list individual contributors ==
Line 119: Line 156:
* Someone who has contributed code or other assets via email, a patch tracker or other similar means.
* Someone who has contributed code or other assets via email, a patch tracker or other similar means.


Who is ''not'' a ''FreeMind contributor''?
Who is ''not'' a ''FreeMind contributor'' in a narrow sense yet his work is directly used by FreeMind?
* Someone whose code or other assets (e.g. images) were taken into FreeMind as they could given the license but did not contact the FreeMind project in any way or did not indicate in any way that he is contributing something to FreeMind.
* Someone whose code or other assets (e.g. images) were taken into FreeMind as they could given the license but did not contact the FreeMind project in any way or did not indicate in any way that he is contributing something to FreeMind.
A good terminology for the above should be clarified. Perhaps the former would be a ''direct FreeMind contributor'' while the latter would be an ''indirect FreeMind contributor''. But this terminological choice does not match Winslow 2020. And it would seem doubtful to think that e.g. the authors of Batik (a component used by FreeMind for SVG export) are ''indirect FreeMind contributors''. Perhaps the latter could be called ''quasi-contributor'', using the alienating prefix ''quasi-''.


== Links ==
== Links ==
* https://www.linuxfoundation.org/blog/blog/copyright-notices-in-open-source-software-projects
* [https://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.pdf Managing copyright information within a free software project], 12 Sep 2012, softwarefreedom.org
* [https://www.linuxfoundation.org/blog/blog/copyright-notices-in-open-source-software-projects Copyright Notices in Open Source Software Projects] by Steve Winslow, 10 Jan 2020, linuxfoundation.org


[[Category:Development]]
[[Category:Development]]

Revision as of 10:04, 15 May 2026

The author of this page is Dan Polansky, bar any changes in the revision history that could appear later.

What follows includes reports on current license header practice in FreeMind as well as design considerations on how things could be done in future and what principles to apply. In support of the latter, practice in other free/open-source (FOSS) projects is considered.


FreeMind license header

FreeMind uses the following license header in .java files (see also Licensing; keywords: copyright header, copyright notice):

/* FreeMind - A program for creating and viewing mind maps
 * Copyright (C) <START-YEAR>-<END-YEAR> <AUTHORS>
 * See COPYING for Details
 *
 * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

The <START-YEAR> is often 2000, but not always.

Questions:

  • What detail and granularity of authorship should be maintained in the license header?
  • Would it suffice to identify the license more succinctly, e.g. "License: GNU GPL V2+; see COPYING for details"? For instance, the applicable SPDX license identifier is "GPL-2.0-or-later"[1].
    • What FOSS projects use this kind of succincts identification?
    • What FOSS projects use SPDX identifier and in what way?

Example author-declaring lines in the license headers of FreeMind 0.9.0:

  • Copyright (C) 2000-2001 Joerg Mueller <joergmueller@bigfoot.com>
  • Copyright (C) 2000-2006 Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitri Polivaev and others.
  • Copyright (C) 2000-2006 Christian Foltin and others
  • Copyright (C) 2000-2004 Joerg Mueller, Daniel Polansky, Christian Foltin and others.

Helpful queries using Unix-like oneliners:

  • grep -r --include="*.java" "Copyright" .
  • grep -h -r --include="*.java" "Copyright" . | sort | uniq
  • grep -h -r --include="*.java" "Copyright" . | sed "s/.*\(C\).*[0-9] *//" | sort | uniq
    This one drops the beginning with years and year ranges.

Examples from other FOSS projects

Example license header in Emacs[2]:

/* Program execution for Emacs.

Copyright (C) 2023-2026 Free Software Foundation, Inc.

This file is part of GNU Emacs.

GNU Emacs 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 3 of the License, or (at
your option) any later version.

GNU Emacs 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 GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */

Notes: the license header resembles that of FreeMind. GNU Emacs requires copyright assignment to FSF, making the above avoidance of listing individual contributors possible/easier to justify.

Example license header from Linux[3]:

// SPDX-License-Identifier: GPL-2.0-only
/*
 *  kernel/sched/core.c
 *
 *  Core kernel CPU scheduler code
 *
 *  Copyright (C) 1991-2002  Linus Torvalds
 *  Copyright (C) 1998-2024  Ingo Molnar, Red Hat
 */

Example license header from LibreOffice[4]:

/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 .
 */

Notes: The authors are not stated on a per-file basis; they can be seen from the commit history. See also https://api.libreoffice.org/share/readme/LICENSE.html. A similar header (not stating individual contributors) was seen in other files[5][6].

Example license header from GCC[7]:

/* CPP Library - charsets
   Copyright (C) 1998-2026 Free Software Foundation, Inc.

   Broken out of c-lex.cc Apr 2003, adding valid C99 UCN ranges.

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 3, 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; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */

Notes: This is made possible by copyright assignment to FSF, which ceased for GCC only in 2021. This GNU GPL V3+, not V2+.

Example license header in LLVM/Clang[8]:

//===- Action.cpp - Abstract compilation steps ----------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//

Notes: no individual contributors are listed. The license information is concise.

Option: do not list individual contributors

Interestingly, Winslow 2020 (linuxfoundation.org) recommends not to list individual contributors and explains why. The source makes a special provision for the case that "[...]a file only contains code that originates from a third party source who didn’t contribute it themselves [...]". Importantly:

  • "Copyright notices are not mandatory in order for the contributor to retain ownership of their copyright."
  • "Copyright notices are rarely kept up to date as a file evolves, resulting in inaccurate statements."
  • Etc.

Similar view/position is taken by Peterson 2020, where Scott K Peterson "is a member of the Red Hat legal team". Peterson emphasizes the importance of license notice, while the copyright notice he holds to be relatively unimportant.

If the above approach were taken, the FreeMind copyright notices could often state "Copyright The FreeMind contributors" and be done with it; but not always, for instance when FreeMind incorporated the code for the splash screen from Gantt project (since arguably, the author of the Gantt project did not contribute that code to FreeMind, but rather, FreeMind took that code from Gantt project, as it could given the license). However, since the most significant contributors up to a FreeMind version are often known, stating them, followed by "and others", could be preferable; and thus, it would state "Copyright Joerg Mueller, Daniel Polansky, Christian Foltin, Dimitry Polivaev and others". A disadvantage of this approach is that should a new very significant contributor appear, all copyright notices would have to be updated, in all .java files, or else the contributor would be added only to the files impacted by him, but that would be going back to manually maintained fine-grained contributor lists on a per-file basis.

Who is a FreeMind contributor?

  • Someone who has contributed code or other assets via email, a patch tracker or other similar means.

Who is not a FreeMind contributor in a narrow sense yet his work is directly used by FreeMind?

  • Someone whose code or other assets (e.g. images) were taken into FreeMind as they could given the license but did not contact the FreeMind project in any way or did not indicate in any way that he is contributing something to FreeMind.

A good terminology for the above should be clarified. Perhaps the former would be a direct FreeMind contributor while the latter would be an indirect FreeMind contributor. But this terminological choice does not match Winslow 2020. And it would seem doubtful to think that e.g. the authors of Batik (a component used by FreeMind for SVG export) are indirect FreeMind contributors. Perhaps the latter could be called quasi-contributor, using the alienating prefix quasi-.

Links