(work in progress)"); echo "

Currently BOINC provides only a web-based interface for creating and managing accounts. Participants must locate the web sites of BOINC projects, read them, decide which to join, and fill out a separate registration form at each site. This may deter some potential participants.

We wish to enable new ways for people to find and join BOINC projects. For example, one could have a sharing control panel that shows:

The user can join projects simply by checking boxes, clicking OK, and responding to account-verification emails.

The sharing control panel is an example of what we will call 'account management applications'.

This document describes a mechanism that allow account management applications to interact with BOINC projects.

RPCs for account management

We propose having BOINC projects provide an XML-RPC interface for account management. RPCs will use HTTP on port 80, so it will be easy to implement the client side in any language (C++, Visual Basic, etc.), and the mechanism will work through firewalls that allow outgoing web requests.

The proposed RPC functions are as follows:

Create tentative account

"; list_start(); list_item( "input", "email address
host name
client nonce ID (crypto-random)" ); list_item( "output", "tentative account ID" ); list_item( "action", "The server creates a 'tentative account' database record. The server sends email to the given address, of the form:
Someone (hopefully you) joined [project name] with this email address.
To confirm your participation in [project name] please visit the following URL:
    xxx

If you do not want to participate in [project name], just ignore this message.
        
When the user visits xxx, they see a release form and OK button. The OK button validates the tentative account, creating a new user record if needed. "); list_end(); echo "

Query account status

"; list_start(); list_item("input", "tentative account ID
client nonce ID " ); list_item("output", "bool validated
account key " ); list_item("action", "If the account has been validated, return true and the account key. The account management application can then do BOINC GUI RPC to the BOINC core client to attach to the project." ); list_end(); echo "

Possible additions: RPCs to get and set preferences. "; page_tail(); ?>