- test environment-var mechanism - design alpha/beta/prod mechanism for core and apps Should have flag in host record (maybe separate flags for core/app). Project should control which hosts are alpha/beta. Test. - include shared memory allocation with key data values (current running projects, est. time, etc) to allow easier development of third party addons (Eric) - test versioning mechanisms for core message, deprecation - test incompatible-core mechanism for apps - test reporting of app errors - test sticky files - test checksumming of executables - test on a multiprocessor - mechanism for returning app stderr output to server? store in blob? - define logging system on client - proxy support - put core client version in client state file - add country, postal code to user collect on login - implement scheme for distributing scheduling server addresses each project provides a URL for file with list of address, and email address of "problems" contact - server-side estimates of WU time requirements - DB entry for WU has int/FP/RAM/disk/net - server sends only feasible WUs - limit by RAM, disk - test - review and complete documentation - define a notion of "app preferences": arbitrary XML edited on server, passed to app client. This could be used to e.g. select a color scheme for graphics Could pass entire prefs? - core client / app trigger file interface core->app init: app preferences name of graphics shared-mem seg recommended graphics size recommended frame rate recommended checkpoint period dynamic: whether to do graphics exit app->core init: actual graphics size dynamic: % done I just checkpointed - implement graphics system Basic idea: core client passes shared-memory segment name to app, recommended size and frame rate. App creates pixmap + dirty flag in shared mem, renders to it, sets dirty flag. Core client (or screensaver) maps shared mem. When dirty, blit pixmap to screen - X11 version It's not clear whether X11 allows you to draw into memory. Does everything have to go through server? - Win32-based version - The API by which the app draws into shared-mem pixmap should be platform-independent. In the first pass we can use our own library based on Win32 primitives. In principle we should be able to use any library capable of offscreen drawing. OpenGL version? - CPU accounting in the presence of checkpoint/restart core client periodically gets CPU time, accumulates in state file - hi/lo water mark scheme - core client must estimate how much work it has left, based on %done (if available) and time estimates - preferences finish PHP web interface specific preferences: disk usage % of free space? all except X GB? X GB? minimum checkpoint interval max bytes upload/download per day implement in client hours/days to communicate/compute implement in client control over priorities? - scalable/efficient server architecture: alternatives use our own process framework, shared memory for result/WU lists use fast CGI w/ shared mem - add size to FILE_INFO server, client sides - implement checkpoint/restart for file transfers use features of HTTP 1.1 - measure bandwidth on each network xfer maintain exponential average, weighted by #bytes xferred - measure hardware parameters: CPU speed, #CPUs, memory, disk - define CPU benchmarks - do this for other platforms - Get info periodically rather than always at startup - NET_XFER_SET:: do_select: prevent one stream from starving others - GUI and screensaver around core client design default (core client) display screensaver options move around screen? system tray icon behavior - get idle-only behavior without screensaver - Network retry policies can't download file: when to give up? how to retry? exponential backoff can't upload file: when to give up/retry? can't connect to sched server error return from sched server - implement WU/result sequences - add the ability to store input data directly in WU, and output directly in result (blob). For projects with small data. - implement file upload/download requests - sched server should return total credit info (user, team?) could display in default core client display - edit user account - team system