(work in progress)"); echo "

Currently the user interface for creating and managing BOINC accounts is as follows. Participants must:

We wish to enable simpler systems by which people can 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.

Alternatively, similar functionality could be provided by a web site.

These are examples of what we will call 'account management applications'.

This document describes a mechanism that allows 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(); ?>