GPL-2-QA

This software is distributed under the GPL-2-QA license.

Motivation for the QA add-on:
This license intends to promote quality assurance with the R project.

Why not the standard GPL?
The standard GPL does not promote quality assurance. The standard GPL 
- does impose some restrictions on software distributors: the obligation to include the license and the source code
- but does not impose any restrictions on software users, however, support of beneficiaries is needed for quality assurance

This license requires the following differences from GPL-2 for users and distributors:
- users are granted a free right to use the software if and only if they reasonably support R quality assurance once this is defined by the R development team. 
- distributors must distribute this licence add-on together with GPL-2 and source code.

What this means:
- distibutors are as free to modify and distribute as before, they just have to also distribute the QA license add-on
- for users there is no difference today, however, in the future they may have to 'pay' for usage by participating in automated distributed regression testing. 

What is distributed regression testing?
There is no way software developers can guarantee the software works correctly in all possible circumstances. The number of 'possible circumstances' easily explodes in a function that has several input parameters and can run in several environments (hardware, OS, OS version, R version etc.). Therefore the R development team might develop some kind of automated mechanism, which distributes small shares of the necessary combinations to each user of the software and the user contributes the test results to the R project.

What is 'reasonable support'?
Support is reasonable if QA
- does not ask for the users time beyond triggering if/when to donate regression testing
- does not ask for more than 1% of the users CPU time (used for R)
- does not ask for huge bandwidth (only transmission of test parameters and results, no transmission of code, no transmission without the users agreement)
- does not impose security threads to the user, especially
- - the user must not be forced to disclose his identity
- - regression tests must be completely transparent (open source and already part of the package, not transferred at test time)
- - the transfer of test parameters and test results must be completely transparent (no encryption, e.g. plain html)

Copyright 2007 Jens Oehlschlgel
