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
* CVS statistics for GRASS 6
* Ohloh GRASS CVS statistics
List of GRASS Versions (1984-today)
== 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 Reviewed ==
=== 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
* d.m is based on tcltkgrass which was contributed to the public domain (announcement)
* gis.m is based on d.m
=== imagery ===
i.* commands
=== include ===
include files
=== lib ===
around 45 libraries of the GRASS system + 2 external libraries as integrated into GRASS:
==== - bitmap ====
==== - btree ====
==== - cdhc ====
==== - D ====
==== - datetime ====
==== - db ====
==== - display ====
==== - dspf ====
==== - edit ====
==== - external ====
===== -- bwidget =====
===== -- shapelib =====
==== - fonts ====
==== - form ====
==== - front.end ====
==== - g3d ====
==== - gis ====
==== - gmath ====
==== - gtcltk ====
==== - image ====
==== - imagery ====
==== - init ====
==== - linkm ====
==== - ogsf ====
==== - proj ====
==== - raster ====
==== - rowio ====
==== - rst ====
==== - segment ====
==== - sites ====
==== - symbol ====
==== - vask ====
==== - vector ====
=== 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
Category:Incubation