Skip to content

contributing: Use SPDX copyright tags in the most complicated file headers#7763

Open
wenzeslaus wants to merge 1 commit into
OSGeo:mainfrom
wenzeslaus:spdx-final-notices
Open

contributing: Use SPDX copyright tags in the most complicated file headers#7763
wenzeslaus wants to merge 1 commit into
OSGeo:mainfrom
wenzeslaus:spdx-final-notices

Conversation

@wenzeslaus

@wenzeslaus wenzeslaus commented Jul 18, 2026

Copy link
Copy Markdown
Member

Converts 23 files whose headers needed reading in full: r.sun, the RST interpolation library, the McCauley tools, and the MIT-licensed v.lrs.segment.

  • r.sun: 2002 Jaro Hofierka and 2002 GeoModel, s.r.o.; postal addresses and email lists stay out of holder lines.
  • lib/rst/interp_float converts with the identifier by maintainer decision; r.resamp.rst in the same code family states the GPL explicitly.
  • The McCauley files use the name alone; with the email the line passes the 80-column limit where clang-format breaks the tag.
  • v.lrs.segment converts to SPDX-License-Identifier: MIT with its two holders on their own lines.
  • Four third-party files are deferred: Oracle's mysql_config, gitlog2changelog.py from NUT, and two vendored web assets under man.
 /*-
  * Written by H. Mitasova, I. Kosinovsky, D. Gerdes Fall 1993
  * US Army Construction Engineering Research Lab
- * Copyright 1993, H. Mitasova (University of Illinois),
- * I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL)
+ * SPDX-FileCopyrightText: 1993 H. Mitasova (University of Illinois)
+ * SPDX-FileCopyrightText: 1993 I. Kosinovsky (USA-CERL)
+ * SPDX-FileCopyrightText: 1993 D.Gerdes (USA-CERL)
+ * SPDX-FileCopyrightText: Other GRASS authors
+ * SPDX-License-Identifier: GPL-2.0-or-later
  *
  * modified by McCauley in August 1995

The policy decisions were made during GRASS Community Meeting 2026 in San Michele all'Adige.

Like the other conversion PRs, this should technically merge after #7749, which defines "Other GRASS authors", but it does not have to.

The edits were applied by a per-file replacement script that asserts each old text occurs exactly once and that trailing bytes never change. The script was written and this conversion prepared with AI assistance (Claude Code with Opus 4.8 and Fable 5); the decisions are the author's.

Details: decisions, deferred files, and how it was checked (AI generated)

Decisions

  • r.sun (4 files): holders 2002 Jaro Hofierka and 2002 GeoModel, s.r.o., plus 2011 Hamish Bowman on his own line in rsunlib.c. Contact information goes with the notice. The team clause years follow the v.delaunay precedent: named lines keep years, the collective is bare. The FSF license block each file carried in a separate comment is replaced by the identifier.
  • lib/rst/interp_float (4 files): Copyright 1993, H. Mitasova (University of Illinois), I. Kosinovsky, (USA-CERL), and D.Gerdes (USA-CERL) with no license text. One holder per line, affiliations kept; the Written by and modified by lines are untouched.
  • McCauley (12 files): 1994 James Darrell McCauley (or 1994-1995), name only. With the email the line is 81 to 86 columns; clang-format wraps comments at 80 and would break the tag. Bill Brown's 1994 Bill Brown, USACERL <brown@gis.uiuc.edu> fits at 77 columns and keeps the email in r.surf.area.
  • v.lrs.segment: 2004-2007 Radim Blazek <blazek@itc.it> and 2004-2007 Hamish Bowman (side_offset bits), then SPDX-License-Identifier: MIT replacing the license text, the same operation as for the GPL files. This is the one file in the series with a license other than GPL-2.0-or-later.
  • r.surf.area and r.resamp.rst: the full three-paragraph FSF text is replaced by the identifier; attribution lines stay.

Deferred as third party (4 files)

  • mswindows/osgeo4w/mysql_config: Oracle's script, GPL version 2 only.
  • utils/gitlog2changelog.py: Marcus D. Hanwell's, via the NUT project.
  • man/jquery.fixedheadertable.min.js, man/parser_standard_options.css: vendored web assets.

Checked

Each replacement asserts the old text occurs exactly once and trailing bytes never change. Across the 23 files: no license prose remains, no emitted line exceeds 80 columns, and pre-commit passes with nothing reformatted, verified with hooks actually running. clang-format adjusted whitespace in the four interp_float headers after the initial edit; the committed text is the hook-stable form, re-verified as a byte-level no-op. The script (resolve_final.py.txt) is attached.

resolve_final.py.txt

…aders

Convert 23 files whose headers needed reading in full.

r.sun names Jaro Hofierka and GeoModel, s.r.o. as holders for 2002,
with 2011 Hamish Bowman in rsunlib.c. Postal addresses and email lists
are not carried into holder lines, and the team clause years are not
carried over, following the v.delaunay precedent. The lib/rst
interp_float files convert with the identifier by maintainer decision:
r.resamp.rst in the same code family states the GPL explicitly with
the same holders. The McCauley files in v.perturb, v.qcount, and
v.normal use the name alone, because the line with the email address
would pass the 80-column limit at which clang-format breaks the tag.
Bill Brown's email fits and stays in r.surf.area.

v.lrs.segment/main.c is MIT licensed and converts to
SPDX-License-Identifier: MIT, with Radim Blazek and Hamish Bowman on
their own lines and the license text replaced by the identifier, the
same operation as for the GPL files.

Four files are deferred as third party: mysql_config is Oracle's,
gitlog2changelog.py is Marcus D. Hanwell's via NUT, and two files
under man are vendored web assets.

The edits were applied by a per-file replacement script that asserts
each old text occurs exactly once and that trailing bytes never
change. Written with AI assistance (Claude Code with Opus 4.8 and
Fable 5); the decisions are the author's.
@github-actions github-actions Bot added vector Related to vector data processing raster Related to raster data processing C Related code is in C libraries module labels Jul 18, 2026
Comment thread raster/r.surf.area/main.c
#include "local_proto.h"

int main(int argc, char *argv[])
int main(int argc, char *argv[])

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accidental space?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C Related code is in C libraries module raster Related to raster data processing vector Related to vector data processing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants