TODO_OLD 5.84 KB
Newer Older
David Anderson's avatar
David Anderson committed
1
HIGH-PRIORITY (must be done to support SETI@home)
David Anderson's avatar
David Anderson committed
2

David Anderson's avatar
David Anderson committed
3
- proxy support
David Anderson's avatar
David Anderson committed
4 5 6
    HTTP, Socks
    Look at other open source code

Eric Heien's avatar
Eric Heien committed
7
- team system
David Anderson's avatar
David Anderson committed
8
    in PHP
David Anderson's avatar
David Anderson committed
9
    In progress - Barry
David Anderson's avatar
David Anderson committed
10

Eric Heien's avatar
Eric Heien committed
11
- credit display
David Anderson's avatar
David Anderson committed
12
    in PHP
David Anderson's avatar
David Anderson committed
13
    In progress - Barry
David Anderson's avatar
David Anderson committed
14

15
- CPU accounting in the presence of checkpoint/restart (Michael)
David Anderson's avatar
David Anderson committed
16
    core client periodically gets CPU time, accumulates in state file
David Anderson's avatar
David Anderson committed
17
    In progress - Michael
David Anderson's avatar
David Anderson committed
18

David Anderson's avatar
David Anderson committed
19
- test versioning mechanisms for core
David Anderson's avatar
David Anderson committed
20 21
    Idea: need to notify user if core becomes out of date.
    Send messages if either
David Anderson's avatar
David Anderson committed
22 23
    1) some WU couldn't be sent because core is too old
    2) no WUs could be sent because core is too old
David Anderson's avatar
David Anderson committed
24

David Anderson's avatar
David Anderson committed
25 26 27
- Think about issues in update core client
    What if state file is incompatible?
    What if app versions are incompatible?
David Anderson's avatar
David Anderson committed
28 29 30

- test reporting of app errors

31
- complete client side and test hi/lo water mark scheme (Michael)
Michael Gary's avatar
Michael Gary committed
32
    - initialize rsc_fpops and rsc_iops in client WORKUNIT 
Michael Gary's avatar
Michael Gary committed
33
    - check server sends correct number of work units
Michael Gary's avatar
Michael Gary committed
34
    - check client requests correct number of seconds of work
David Anderson's avatar
David Anderson committed
35
    In progress - Michael
David Anderson's avatar
David Anderson committed
36

David Anderson's avatar
David Anderson committed
37 38 39 40
- measure hardware parameters: CPU speed, #CPUs, memory, disk
    - define CPU benchmarks
    - do this for other platforms
    - Get info periodically rather than always at startup
David Anderson's avatar
David Anderson committed
41 42

- implement graphics system
43 44
    Basic idea: core client passes prefs to app,
        recommended size and frame rate, etc.
David Anderson's avatar
David Anderson committed
45 46
    - X11 version
    - Win32-based version
47
    - Mac OS X version
David Anderson's avatar
David Anderson committed
48

David Anderson's avatar
David Anderson committed
49 50 51 52 53
- GUI and screensaver around core client
    design default (core client) display
    screensaver options
        move around screen?
    system tray icon behavior
David Anderson's avatar
David Anderson committed
54

David Anderson's avatar
David Anderson committed
55
- get idle-only behavior without screensaver
David Anderson's avatar
David Anderson committed
56 57
    Windows
    UNIX
David Anderson's avatar
David Anderson committed
58 59 60 61 62

- sched server should return total credit info (user, team?)
    could display in default core client display

- edit user account
63 64

- more robust XML parsing functions
David Anderson's avatar
David Anderson committed
65 66 67
--------------------------
MEDIUM-PRIORITY (must be done for CM)

68
- review and complete documentation (see end of TODO list)
David Anderson's avatar
David Anderson committed
69 70 71 72 73 74 75 76

- test sticky files

- test multiple-file applications
    change add.C to support multi-file applications

- implement WU/result sequences

Eric Heien's avatar
Eric Heien committed
77 78
- decide on action when speed_tests detect a calculation inconsistency

79 80 81 82 83 84 85
- write functions to determine amount of disk space currently used by BOINC

- implement user specified disk space limits, including actions to perform
  when space limit is hit

- Implement functionality to write client_state file (and other files?) no more than every X seconds

David Anderson's avatar
David Anderson committed
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
--------------------------
LOW-PRIORITY

- implement and test the batch mechanism

- test environment-var mechanism

- test alpha/beta/prod for apps

- test on a multiprocessor

- define logging system on client

- 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

- implement file upload/download requests
David Anderson's avatar
David Anderson committed
107 108 109 110
    This can be done in the current WU/result paradigm;
    WU has a special "null" application
    use sticky input files to download;
    use upload-when-done output files to upload
David Anderson's avatar
David Anderson committed
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

- 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?
    
David Anderson's avatar
David Anderson committed
126 127 128 129
- 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?
David Anderson's avatar
David Anderson committed
130 131 132 133 134 135 136

- NET_XFER_SET:: do_select: prevent one stream from starving others

- add the ability to store input data directly in WU,
    and output directly in result (blob).
    For projects with small data.

Michael Gary's avatar
Michael Gary committed
137 138 139
- add a handler for SIGTERM that calls exit_tasks and makes sure state files
    are written. 

David Anderson's avatar
David Anderson committed
140
--------------------------
141
DONE (may need test)  Please document these!
David Anderson's avatar
David Anderson committed
142

Eric Heien's avatar
Eric Heien committed
143 144 145 146 147 148
- implement checkpoint/restart for file transfers
    use features of HTTP 1.1
    Return an error to server if transfer fails
    (store in DB in server)
    - completed by Eric (needs to be tested)

Eric Heien's avatar
Eric Heien committed
149 150 151 152 153 154 155 156 157 158 159
- File retry policies
    can't download file: when to give up? how to retry?
        exponential backoff
    can't upload file: when to give up/retry?
    To be tested - Eric

- scheduler RPC retry
    can't connect to sched server
    error return from sched server
    To be tested - David

160 161 162 163 164 165 166 167 168 169 170 171 172
- Code-signing
    To be tested - David

- Upload authentication (David)
    Each result contains a "certificate", signed with project key, giving
        - list of: file name, max size
        - min, max times to xfer
    modify put program to decrypt certificate, enforce name/size/time limits
    To be tested - David

- make scheduling server use fast CGI
    To be tested - Michael

173 174
- Test HTTP redirect mechanism for all types of operations (POST, GET, HEAD, etc)

David Anderson's avatar
David Anderson committed
175
- mechanism for returning app stderr output to server? store in blob?
David Anderson's avatar
David Anderson committed
176

David Anderson's avatar
David Anderson committed
177 178
- add size to FILE_INFO
    server, client sides
David Anderson's avatar
David Anderson committed
179

David Anderson's avatar
David Anderson committed
180 181
- measure bandwidth on each network xfer
    maintain exponential average, weighted by #bytes xferred
Michael Gary's avatar
Michael Gary committed
182

183 184 185 186
- make scheduling server work with fast cgi

- high and low water marks implemented

187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
- Think about making the set of scheduling servers dynamic
    one approach: allow "redirect" reply from server
        (requires old address to still work)
    second approach: "master URL"
        returns a file with list of scheduler address
        and email address of "problems" contact

- core client / app trigger file interface
    core->app
        init:
            app preferences
            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