GRASS Provenance Review
This review is based on Code Provenance Review.
Committers
Current:
See AUTHORS file and ChangeLog, additionally:
Historical and Current contributors (incomplete):
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:
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