Changes between Version 12 and Version 13 of SimpleAttach
- Timestamp:
- Oct 30, 2017, 9:31:36 PM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SimpleAttach
v12 v13 1 1 [[PageOutline]] 2 2 3 = Simplified registration/download process = 3 4 4 This document proposes changes to theprocess by which volunteers5 download BOINC and attach to projects .5 This document describes a new process by which volunteers 6 download BOINC and attach to projects or account managers. 6 7 7 == Current attach process == 8 The current download/attach process has two problems: 8 9 9 Suppose a first-time volunteer wants to participate in a BOINC project 10 that uses the standard PHP code for its front page. 11 The steps are: 10 * There are too many clicks. 11 * Much of the GUI is in the Manager. 12 12 13 1. Visit the project web site (say, via a link in a news story). 14 1. Click on "Download" on the project site, taking you to the BOINC download page. 15 1. Click on "Download BOINC" or "Download BOINC + VBox". 16 1. When the download is done, click on the installer. 17 1. Click on "defaults" in the installer. 18 1. The Manager runs and brings up the Attach wizard. Click on Add Project. 19 1. Find the project in the project list (hopefully you still remember its name). 20 Note: if the project is new and is not in the list, 21 you need to go back to its web site, find the URL, 22 and copy/paste it into the wizard. 23 New volunteers are unlikely to figure this out. 24 1. Click on New User. 25 1. Enter email address and password. 13 The new process eliminates clicks and shifts most of the GUI to the web, 14 which lets us use things like OpenAuth and Recaptcha, 15 and which provides a more unified experience. 26 16 27 For existing volunteers (i.e. already running BOINC on this computer) the steps are: 17 Note: this process only works for "vetted" projects and AMs, 18 i.e. those that appear on the BOINC web site. 19 Making it work for arbitrary projects would decrease security. 28 20 29 1. Visit project web site; figure out what to do next 30 (the standard front page doesn't say). 31 1. Open the BOINC Manager. 32 1. Open Attach wizard. 33 1. Click on Add Project. 34 1. Find project in list or enter URL. 35 1. Click on Existing User. 36 1. Enter password (email should be pre-populated from previous attach). 37 38 Problems with this design: 39 40 * In each case there are many steps, and we lose a fraction of volunteers at each step. 41 * For non-listed projects, users have to type or copy/paste a URL. Bad. 42 * If the project requires !VirtualBox, the user should be required to download BOINC+VBox. 43 * The scheme applies to non-Android computers. 44 For Android users the process is similar, 45 except that BOINC must be downloaded from the Google or Amazon app store. 46 The standard project front page says nothing about Android. 47 48 This document describes a new scheme that addresses these problems. 49 50 == Proposed attach process == 21 == New download/attach process == 51 22 52 23 === Front page === 53 24 54 The project front page has a "Join"button, linked to a "registration" page.25 The project or AM front page has a Join button, linked to a "registration" page. 55 26 56 27 === Registration page === 57 28 58 The registration page shows two forms side by side: 29 If the user is already logged in on this project, 30 the page redirects to the Download page. 31 Otherwise, the page has two forms: 59 32 * Create account (for users new to this project) 60 33 * Log in (for existing users) 61 Submission of either form goes to the Download page (below). 62 63 If the user is already logged in on this project, 64 the page redirects to Download page. 34 Submission of either form goes to the Download page. 65 35 66 36 === Download page === 67 37 68 This page tells the user what software they need to install, 69 and lets them either download it or confirm that it's already installed. 70 71 ==== Android case ==== 72 73 Show: 74 * '''[Download BOINC]''' (link to Google or Amazon app store) 75 * '''Open BOINC, select Add Project, and choose (project name)''' 76 77 Note: we can improve this, but it will take changes to the Android GUI. 78 79 ==== Non-Android case ==== 80 81 A project's config file can specify whether it needs VBox, 82 and whether it has a min client version. 83 The Download page says something like: 38 This page says something like: 84 39 85 40 * To participate in X, your computer must have BOINC (and VBox) installed. 86 * If these are already installed, [click here] 87 * [Download BOINC (and VBox)]. 41 * If these are already installed, [click here]. 42 This links to a page with instructions for adding project via the Manager. 43 * Buttons to download BOINC and BOINC+VBox. 44 These show the download size, platform name, and version, 45 like the download page on the BOINC web site. 88 46 89 The "click here" link goes to a page that: 47 === Manager === 90 48 91 * Sends some cookies (see below) 92 * Tells the user to open the Manager and choose Add Project. 93 94 The Download link does to a page that 95 * Sends some cookies (see below) 96 * Initiates a download 97 * Tells the user to double-click on the installer when download is done 49 When the manager is first run, 50 it is attached to the project or account manager, 51 to the user's account. 52 No user interaction with the Manager is needed. 98 53 99 54 === User experience === … … 101 56 In summary, the new-user process is: 102 57 103 1. Visit project web site, click on '''Join".58 1. Visit project or account manager web site, click on '''Join". 104 59 1. Enter email/passwd, click OK 105 60 1. Click Download 106 61 1. Click on installer, choose defaults 107 1. Manager runs, brings up confirmation/welcome dialog108 62 109 Note the following improvements:63 Improvements: 110 64 1. User doesn't leave the project web site (e.g. doesn't land on BOINC web site) 111 1. User doesn't see list of all projects65 1. User doesn't see the list of all projects. 112 66 113 67 === What projects must do === 114 68 69 Down the XML version list from 70 http://boinc.berkeley.edu/download_all.php?xml=1. 71 Save it as html/user/versions.xml. 72 Update this as new client versions are released. 73 74 In the home page: put a Join button linking to register.php 75 115 76 Add to config.xml: 116 * <project_desc>: a few-sentence description of the project.117 * <project_inst>: the host institution (optional).118 77 119 Add to config.xml if needed: 120 * <min_core_client_version> 121 * <need_vbox> 78 {{{ 79 <project_id>N</project_id> 80 }}} 81 The project's ID, as shown in 122 82 123 In the home page: 83 https://boinc.berkeley.edu/project_list.php 124 84 125 * put a button linking to register.php 85 and optionally: 86 {{{ 87 <min_core_client_version>70803</min_core_client_version> 88 <need_vbox/> 89 }}} 126 90 127 91 == Implementation == 128 92 129 Register page: use existing code for forms 93 When a user is shown the Download page, 94 the server code creates a "login token" - a string of 8 random hex chars. 95 It creates a record in the login_token table, 96 containing the token, the user ID, and the create time. 130 97 131 Download page: extract from config.xml: 132 * the master URL 133 * the project name 134 * the project description 135 * the project institution 136 * software requirements 98 The client installer is downloaded indirectly via 99 a script on the BOINC web server (concierge.php). 100 This is passed the project ID, the login token, and the installer filename. 101 It downloads the file, appending to the filename the project ID and login token. 137 102 138 These first 4 items are passed as URL args to a script on the BOINC web server (concierge.php). 139 Also passed: 140 * the user name 141 * the user authenticator 142 * whether a download is required 143 * whether VBox is needed 103 When the BOINC installer is launched, it writes the installer filename to 104 a file "installer_filename.txt" in the BOINC data directory. 144 105 145 === The concierge.php script === 146 147 The concierge.php script looks at the master URL to see if the project is in BOINC's list. 148 149 It sends the following cookies (from the boinc.berkeley.edu domain): 150 151 '''attach_known''':: 1 if the project is known to BOINC 152 '''attach_master_url''':: the master URL 153 '''attach_project_name''':: the project name 154 '''attach_project_desc''':: the project description 155 '''attach_project_inst''':: the project institution 156 '''attach_user_name''':: the user name 157 '''attach_auth''':: the user authenticator 158 159 These cookies are sent with a 24-hour expiration time. 160 161 If the "download" arg is set, 162 the script looks at the user agent string to find the computer's platform, 163 and gets the URL of the current BOINC installer for that platform. 164 (If VBox is needed, it uses the BOINC+Vbox installer). 165 It then redirects to the URL of the installer file. 166 On current browsers this doesn't change the web page 167 (which is still the project's main page); 168 it starts a download of the BOINC installer, 169 which is displayed in the status bar or elsewhere. 170 171 If there is no installer for the computer's platform, 172 it goes to the BOINC "Download all" page. 173 174 === Cookieless Installs === 175 176 For unsupported browsers or projects with custom installers, the required information will be passed as 177 part of the filename of the package downloaded from the server. 178 179 When the BOINC installer is launched, it'll detect the required information and add/update project_init.xml which 180 in turn will be consumed via the client software on startup. 181 182 Package name parameters are as follows: 183 184 '''amu''':: the master URL 185 '''an''':: the project name 186 '''aa''':: the user authenticator 187 '''asc''':: the setup cookie 188 189 Usage Rules: 190 191 * Each parameter is broken up into name/value pairs 192 * Each name/value pair is separated by an underscore 193 * Each value is base64 encoded 194 195 Example package name (Windows): 196 {{{ 197 boinc_setup_amu_aHR0cDovL3NldGlhdGhvbWUuYmVya2VsZXkuZWR1Lw==_aa_ODU0NjVfZWEwYWJkNjc4NDc2MjllMWFlOWVkM2I4YWRmZmZmZmY=.exe 198 }}} 199 200 Example package name (Mac): 201 {{{ 202 boinc_setup_amu_aHR0cDovL3NldGlhdGhvbWUuYmVya2VsZXkuZWR1Lw==_aa_ODU0NjVfZWEwYWJkNjc4NDc2MjllMWFlOWVkM2I4YWRmZmZmZmY=.zip 203 }}} 204 205 Note: Using the setup cookie is more desirable than storing the authenticator as part of the 206 executable name. Setup cookies are created by the project server and expire after a given 207 period of time. During the manager's attach process, it'll use the lookup account RPC to 208 convert the setup cookie into the user's weak authenticator. 209 210 === Manager === 211 212 When the manager starts up, or the Add Project command is given, 213 it looks for the '''attach_master_url''' cookie from 214 the boinc.berkeley.edu domain. 215 If this is present, it puts up the Attach Wizard, 216 at a confirmation page that shows 217 * the project name, description, and institution 218 * the user name 219 * whether the project is known to BOINC 220 221 == Anonymous registration == 222 223 The join process can be further simplified if we eliminate the 224 email address and password associated with accounts. 225 This might be selected by the project (using a config flag) 226 or by the volunteer (by an "anonymous" checkbox in the Register page). 227 228 In each case, the Register page would create an account 229 with random strings for email address and password. 230 231 We may want to add the following features: 232 * Let volunteers with anonymous accounts log in to the project web site 233 via links in the Manager. 234 * Let anonymous accounts be made non-anonymous (i.e. given an 235 email address, name, and password). 106 When the client startup it, it looks for this file. 107 If found, does a "lookup account token" RPC to the project, 108 obtaining the user name and a weak authenticator. 109 It attaches to the project using this authenticator. 236 110 237 111 == Unsupported platforms == 238 112 239 One issue not addressed by this proposal: 240 what if the computer is of a type for which the project has no apps? 113 What if the computer is of a type for which the project has no apps? 241 114 The user should learn this immediately. 242 115 E.g. viewed from an Android device, … … 245 118 '''This project is not able to use Android devices. 246 119 Please visit this site from a Windows, Mac, or Linux computer.''' 120 121 ==== Android case ==== 122 123 This doesn't work for Android. 124 Instead, show: 125 * '''[Download BOINC]''' (link to Google or Amazon app store) 126 * '''Open BOINC, select Add Project, and choose (project name)'''