================= NOTES TO OURSELVES ================

_______ RUNNING _______

To run the batch or incremental:

cd ~bfreeman/org.eclipse.dash/commits-explorer
sh update.sh
nohup sh run-incremental.sh &

To force a batch run:

nohup sh run-batch.sh &

Log files:
The insert log file is ~bfreeman/org.eclipse.dash/commits-explorer/logs/

_______ SWITCHING TO CRON _______ 

We need to switch to using cron to run this. To do so, we need to
solve the ssh problem (not needing a password).

_______ INSTALLING _______ 

1. Apache, PHP, Perl, MySQL; set query caching to 32Mbs or more
2. create the DBPASSWORD.txt file in the batch sub-directory; edit
   the dbpassword.php file in the web-api directory to reference the
   batch/DBPASSWORD.txt file
3. cron to run batch/run-incremental.sh once per day
4. web-api and web-app directories exposed through Apache

There are a few web-apis on www.eclipse.org/projects/web-api/ to support
these programs.

_______ FUTURE WORK _______ 

Haven't resolved what goes wrong with the last of the packages
of tools.cdt in the rlog parsing. Perhaps something with including
dashed lines in comments?

We also had a problem parsing org.eclipse.ui.navigator - same problem?

Use wikitect to generate the project mappings and thus allow/distribute
the maintenance to the architecture council.

Perhaps use a wiki page to maintain the type mappings.

Another wiki page idea: have a way to people to fix the bad data
issues about themselves. For example, a way to annotate that their
login id changed from darinw to dwright (i.e., that both are the same
person), and a way to annotate that person X worked for company Y
during one period and then company Z for another period, etc.

Data cubes (OLAP) often examine more than just number of transactions.
Thus one thing we could add is instead of COUNT(*) in our summaries to
do SUM(CHANGE_SIZE).

If suffixes (file types) are longer than N (12?) translate them to "none".

Tag cloud generation from comments. Animated tag clouds from comments
over time.

Include website commits from /cvsroot/org.eclipse

Do both # of commits and # of lines of change.

Keep track of data valid time and show it on the web page "data collected on XX"
