This is a simple Contributor License Agreement wizard that uses bootstrap, jquery and bootstrap-wizard.
For some functionality, like creating shortUrls, it relies on small services that live in the parent organization of this repository. (such as https://github.com/contributoragreements/u2s)
Clone the repository.
git clone https://github.com/contributoragreements/ca-cla-chooser
cd ca-cla-chooser
Initialize and synchonize the submodule for the bootstrap wizard.
git submodule init
git submodule update
Then you can serve the directory with any local or remote webserver that you like. For development and testing you can use npm to install some dependencies that allow for easy local development and testing.
First install all the dependencies.
npm install
Then you can use npm start
to start a local webserver that serves the app. You can use npm test
to run the tests. Or you can use npm serve-and-test
to start the webserver and then run the tests all at once.
The tests use chai/mocha and webdriverio.
The following mermaid graph displays the overall flow of the contributor agreement license wizard. Please bear in mind that this graph is a simplification. For example the three outbound copyright options for the FLA path follow almost exactly the same path as those on the CLA path, but this is not show for accessibility. Similarly, fields for project name, email address and similar personal details can sometimes trigger small UI changes (like whether or not to show an e-sign link) but otherwise are inconsequential for the wizard flow.
There is also a function dependency graph between the various functions, though it might be quite hard to understand. Most likely, reading the new and improved comments in the code should be more helpful.
The following parameters are valid for the the query parameters (url) and are loaded into the configs
object.
-
beneficiary-name=STRING
-
project-name=STRING
-
project-website=STRING
-
project-email=STRING (some regex verification is performed)
-
process-url=STRING
-
project-jurisdiction=STRING
-
fsfe-compliance=fsfe-compliance|non-fsfecompliance
-
agreement-exclusivity=exclusive|non-exclusive
-
outbound-option=fsfe|same-licenses|license-policy|same|no-commitment
-
outbound-list=[license1,license2]
-
outbound-list-custom=STRING
-
license-policy-location=STRING
-
medialist=[license1,license2]
-
patent-option=Traditional|Patent-Pledge (Traditional patent license or patent pledge) (NB: for some reason one of the few options that starts with an uppercase letter FIXME)
These are so far only used during signing.
- your-date=STRING
- your-name=STRING
- your-title=STRING
- your-address=STRING
- your-patents=STRING
The position of the wizard
- pos=general|copyright|patents|review|apply
The signing action
- action=sign-individual|sign-entity|sign-fla|sign-fla-entity
The location of the microservices (https://github.com/contributoragreements/service.fabricatorz.com) defaults to the contributoragreements.org url. This can be changed through js/config.json file e.g.:
{
"serviceUrl": "http://contributoragreements.org",
"urlShortener": "http://contributoragreements.org/u2s"
}
Ideas for further development can be found in the issues and pull requests of this repo and in the forks of this repo. We welcome any questions and PRs.
https://github.com/contributoragreements/ca-cla-chooser/issues?q=is%3Aopen+is%3Aissue