I've added code to the invite page where everything starts. Next up is the 
submission handling.

There are preview buttons that become active once the candidate's name, email 
address are filled, the PMC/PPMC is identified, and the user chooses invite, 
discuss, or vote.

The (Preview) button now calls the server with a POST request and the data 
associated with the request.

The server receives the POST, validates the request, assigns a token (scrambled 
number) to the request, stores the request in the permanent record, and sends 
back the request for verification by the user.

If the user chooses to (Submit) the request, another POST is sent to the 
server, but this time the token is part of the request. In fact, it might be 
the only thing that needs to be sent, because the token is the key to the 
permanent record. 

The request has a life cycle governed by a status flag that starts out as 
PendingDIscuss, PendingVote, or PendingInvite. The original user's Submit 
request will retrieve the record based on the token, perform the appropriate 
action and change the status.

Subsequent interactions from users that reference the same token will be 
handled based on the status:

1. Discuss: The record contains all of the comments from all of the users. 
These comments are send to the front end and displayed on a form that includes 
a free-form field where comments can be entered. The (Submit) button POSTs the 
user's comments to the record and emails the private list with all of the 
comments received, attributed to each submitter. 

The original user can close discussion by using the (Proceed to Vote) button. 
This button changes the status to Vote and sends email to the pmc list to 
request that members vote.

2. Vote: The record contains all of the comments from all users from the 
discuss phase. The vote phase adds entries for each member who votes. The vote 
displays all votes received to date along with any comments from the vote 
phase. Radio buttons allow the member to record a vote, +1, +0, -0, -1. Votes 
of -1 require the comment field to be filled; other votes do not. The (Submit) 
button sends the vote to the server. The server response sends the current 
votes to the private list along with a link to the same record. 

The original user can close the vote by using the (Tally the Vote) button. When 
this message is POSTed the server changes the status to either VoteSuccess or 
VoteFail and sends the results to the private list with the subject 
[RESULT][VOTE] Joe Blow for whimsy committer and PMC member, copying board@ or 
private@incubator as appropriate.

3. Invite: If the vote is for committer only, an invitation is sent to the 
prospective committer. The invitation link is to the project/interview page 
with the token, which contains the pmc information. The committer then fills 
the form and submits the ICLA.

If the vote is for PMC/PPMC membership, nothing happens. If any board member 
(or incubator PMC member) objects, the link to the vote will display a page 
that allows the objector to post a comment and (Hold the nomination). 
Submitting this form will change the status of the request to Hold and send the 
entire history including the Hold comment to the private list.

Once the 72 hour waiting period is over, any PMC/PPMC member can use the same 
link and based on the status, invite the committer to submit an ICLA.

GET whimsy.apache.org/project/icla/invite the original form that starts the 
process

Links that appear in emails to private lists:

GET whimsy.apache.org/project/icla/discuss?token=3478943789 the discuss form
POST whimsy.apache.org/project/icla/discuss?token=3478943789 add discuss 
comments
GET whimsy.apache.org/project/icla/vote?token=3478943789 the vote form
POST whimsy.apache.org/project/icla/vote?token=3478943789 record the member vote

Link that is sent to the prospective committer
GET whimsy.apache.org/project/icla/interview?token=3478943789 the committer 
interview form

Craig L Russell
Secretary, Apache Software Foundation
c...@apache.org http://db.apache.org/jdo

Reply via email to