GRASS Provenance Review

This review is based on Code Provenance Review.

Committers
Current:

See AUTHORS file and ChangeLog, additionally:
 * contributors with write access
 * contributors without write access
 * translators

Historical and Current contributors (incomplete):


 * GRASS 1.x - 4.x
 * GRASS 5 Core Team
 * GRASS 6 Core Team, see also ChangeLog file

List of GRASS Versions (1984-today)
 * CVS statistics for GRASS 6
 * Ohloh GRASS CVS statistics

Issues and vetting process

 * Completed code vetting:
 * completely vetted for GPL'ization in 1999: http://mpa.itc.it/radim/g50history/ and
 * vetted again for DebianGIS inclusion: http://packages.qa.debian.org/g/grass.html


 * Ongoing: Missing copyright statement addition are continuously added
 * To simplify to trace down code contributors, there is a PERL script (tools/copywrite.pl) in the source code which automatically searches all main.c files which are lacking a Copyright statement. It also automatically extracts the known contributors from the local ChangeLog file (which is created on the fly from CVS) and generates a standard header within such main.c file. Manual review is obviously still needed before submitting the updated file to CVS.


 * Source code browsing:
 * GRASS-QA source code navigator
 * Koders.com/GRASS

Included Libraries
see lib/external/
 * bwidget: lib/external/bwidget/ (part of http://tcllib.sourceforge.net/)
 * shapelib: lib/external/shapelib/ (shapelib.maptools.org)

Non-free Libraries
There are no non-free libraries included. Vetted during GPL'ization, DebianGIS'ization and ongoing.

Code provenance review procedure
It was a manual, interactive procedure with some scripted help. The automated part included:
 * search of main.c files without copyright statement (those with GPL statement have been vetted already 1-2 times earlier, see grass-dev archive)
 * extraction of ChangeLog for the actual main.c file from CVS
 * extraction of authors from Changelog file and draft insertion into actual main.c
 * open of text editor with following files:
 * main.c in process
 * related description.html (which contains authors at page bottom; in order to check for unmentioned authors from the pre-CVS times)
 * local Changelog file

Then the reviewer browsed main.c for offensive code (essentially incompliant copyright notices and such), added missing authors to the copyright header from description.html and polished the layout of the copyright header. Then submission to CVS (now OSGeo GRASS SVN).

Kudos to Schuyler Erle for writing the PERL script which quite helped (tools/copywrite.pl). The expansion of CVS names was done by reading in contributors.csv. M Neteler feel that this is a valid level of automatisation.

Reminder: the GRASS Development Team has already done rigorous code vetting when GRASS was made GPL'ed software (1999).

Note 1: All contributors with SVN access have agreed to RFC2: http://download.osgeo.org/grass/grass6_progman/rfc/rfc2_psc.html (RFC 2: Legal aspects of code contributions)

Note 2: All added copyright statements are documented in ChangeLog (now also in trac): http://grass.osgeo.org/grass63/source/snapshot/ChangeLog.gz

db
db.* commands

debian
debian control directory

demolocation
contains a small latlong test dataset

display
d.* commands

doc
some docs + example modules

general
g.* commands

gui
d.m and gis.m commands

imagery
i.* commands

include
include files

lib
around 45 libraries of the GRASS system + 2 external libraries as integrated into GRASS:

locale
includes various external contributors without CVS write access

man
populated during make, MAN is generated from HTML which is generated from description.html files during compilation

misc
m.* commands

paint
p.* commands

ps
ps.* commands

raster
r.* commands

raster3d
r3.* commands

rpm
some SPEC files

scripts
various scripts, integrated identically to commands during compilation

sites
s.* commands (legacy, not used)

swig
swig interface prototype

testsuite
test scripts for smoke tests

tools
documentation build script and other minor stuff

vector
v.* commands

visualization
nviz and xganim commands