mirror of https://github.com/BOINC/boinc.git
338 lines
12 KiB
Plaintext
Executable File
338 lines
12 KiB
Plaintext
Executable File
-----------------------
|
|
BUGS (arranged from high to low priority)
|
|
-----------------------
|
|
- Client treats URL "maggie/ap/" different than URL "maggie/ap",
|
|
though this isn't really a bug it might be good to fix anyway
|
|
- global battery/user active prefs are always true in the client
|
|
- GUI client should display "Upload failed" and "Download failed"
|
|
in transfers tab when failure occurs
|
|
- GUI: Result status should say "downloading files", "uploading files", etc.
|
|
- message window should reposition to bottom when new message
|
|
- show_message should expect \n, discard it if GUI
|
|
- Win GUI: line between menus and tabs
|
|
- "show graphics" should not use right-click
|
|
- win GUI: reduce flicker?
|
|
- on major version change, should discard any pending WUs
|
|
- labels on disk graph are not clear
|
|
- document and add to global prefs?
|
|
start_saver
|
|
run_minimized
|
|
run_on_startup
|
|
hangup_if_dialed
|
|
- trim leading/trailing spaces from account ID (Win GUI)
|
|
- when i quit a project, I have to exit and restart the client, which is ugly.
|
|
- after quitting a project, the project name still showed up in gray
|
|
in the projects list - I could right click on it to "relogin"
|
|
(which did nothing) or "quit project"
|
|
which I thought I already did.
|
|
- consider warning message during windows (and perhaps other platforms)
|
|
install that checks to see if the BOINC directory already exists,
|
|
and if so, should the user overwrite it? or upgrade it?
|
|
- After running all night (on Win98) I shook the mouse to wake up
|
|
the blank screen, and all I saw was the top half of the screen
|
|
was solid gray, and the bottom half the
|
|
bottom half of the astropulse graphics.
|
|
They weren't moving. The computer was frozen.
|
|
I had to ctrl-alt-del to restart.
|
|
|
|
-----------------------
|
|
HIGH-PRIORITY (should do for beta test)
|
|
-----------------------
|
|
|
|
"Add project" behavior:
|
|
Goal: give user timely feedback if bad project URL or account ID;
|
|
don't leave bad project files sitting around
|
|
|
|
A project addition is "successful" when
|
|
1) the client fetches the master page,
|
|
2) the master page has at least one scheduler URL
|
|
3) the client contacts a scheduler and gets a user name back.
|
|
|
|
The cmdline and GUI clients need to inform the user if a project
|
|
add is not successful, since it probably means the master URL
|
|
or account ID were typed in wrong.
|
|
|
|
A project is "tentative" if the above hasn't happened yet.
|
|
This is flagged in the project file (<tentative/>) and in memory
|
|
|
|
A "failure event" is
|
|
- master fetch fails
|
|
- master page has no scheduler URLs
|
|
- scheduler RPC fails
|
|
- scheduler RPC returns no user name
|
|
A "success event" is
|
|
- scheduler RPC returns user name
|
|
|
|
cmdline client
|
|
first time (no projects initially) or -add_new_project flag:
|
|
new project is tentative (write flag to project file)
|
|
if failure event occurs for tentative project:
|
|
project_add_fail(PROJECT&)
|
|
print "check URL and account ID" message
|
|
delete project file
|
|
exit
|
|
If success event occurs for tentative project
|
|
project_add_succeed(PROJECT&)
|
|
clear tentative flag, rewrite account file
|
|
|
|
GUI client:
|
|
first-time dialog or "attach to project" command:
|
|
show a modal dialog
|
|
("verifying account" w/ "cancel" button)
|
|
project_add_fail(PROJECT&)
|
|
replace w/ modal error dialog w/ retry, cancel
|
|
project_add_succeed(PROJECT&)
|
|
|
|
Delete files if needed to honor disk usage constraint
|
|
should include per-result constraints (e.g. giant stderr files)
|
|
inform user if files deleted
|
|
|
|
- "Connect Now" command should apply to a particular project,
|
|
and should override the backoff on that project
|
|
|
|
implement server watchdogs
|
|
|
|
-----------------------
|
|
THINGS TO TEST (preferably with test scripts)
|
|
-----------------------
|
|
time-of-day limitation
|
|
Limit frequency of disk writes
|
|
make sure it actually works
|
|
- Test suspend/resume functionality on Windows/UNIX
|
|
- verify that if file xfer is interrupted, it resumes at right place
|
|
- result reissue
|
|
- WU failure: too many errors
|
|
- WU failure: too many good results
|
|
- credit is granted even if result arrives very late
|
|
- multiple preference sets
|
|
- shared memory and CPU time measurement, with and without the BOINC API
|
|
- timezone on all platforms
|
|
- preference propagation between projects
|
|
- ensure cpu time doesn't reset if app is killed rather than quitting
|
|
|
|
-----------------------
|
|
MEDIUM-PRIORITY (should do before public release)
|
|
-----------------------
|
|
|
|
add an RPC to verify an account ID (returns DB ID for user)
|
|
needed for multi-project stats sites
|
|
|
|
implement a "clear project" command (GUI and cmdline)
|
|
|
|
implement a "fetch prefs" command (regular RPC w/o work request)
|
|
|
|
all RPCs should return a "user-specific project URL"
|
|
to be used in GUI (might refer to user page)
|
|
|
|
when you create a team you should join that team
|
|
|
|
in GUI, project name should hyperlink to a project-specified URL
|
|
(typically user page for that project)
|
|
|
|
preference flag for confirm before accepting executable file
|
|
|
|
abort result if any file exceeds max_nbytes
|
|
|
|
per-WU limits
|
|
max disk
|
|
max CPU
|
|
max VM size
|
|
|
|
let user choose language files in installation process
|
|
|
|
write general language file manipulation functions
|
|
|
|
use https to secure login pages, do we care about authenticator
|
|
being transmitted without encryption from the client?
|
|
|
|
abort app if excess memory used
|
|
|
|
Windows 9x CPU time calculated incorrectly
|
|
|
|
write docs for project management
|
|
how to start/stop server complex
|
|
what needs to be backed up and how
|
|
|
|
account creation: show privacy/usage policies
|
|
|
|
finish SOCKS implementation, test
|
|
|
|
decide what to do with invalid result files in upload directory
|
|
|
|
make get_local_ip_addr() work in all cases
|
|
|
|
think about sh_fopen related functionality in BOINC client
|
|
|
|
Implement FIFO mechanism in scheduler for results that can't be sent
|
|
|
|
user profiles on web (borrow logic from SETI@home)
|
|
|
|
Devise system for porting applications
|
|
password-protected web-based interface for
|
|
uploading app versions and adding them to DB
|
|
XXX should do this manually since need to sign
|
|
|
|
Add 2-D waterfall display to Astropulse
|
|
|
|
Deadline mechanism for results
|
|
- use in result dispatching
|
|
- use in file uploading (decide what to upload next)
|
|
- use in deciding when to make scheduler RPC (done already?)
|
|
|
|
Testing framework
|
|
better mechanisms to model server/client/communication failure
|
|
better mechanisms to simulate large load
|
|
do client/server on separate hosts?
|
|
|
|
Global preferences
|
|
test propagation mechanism
|
|
set up multi-project, multi-host test;
|
|
change global prefs at one web site,
|
|
make sure they propagate to all hosts
|
|
|
|
Per-project preferences
|
|
test project-specific prefs
|
|
make example web edit pages
|
|
make app that uses them
|
|
set up a test with multiple projects
|
|
test "add project" feature, GUI and cmdline
|
|
test resource share mechanism
|
|
|
|
CPU benchmarking
|
|
review CPU benchmarks - do they do what we want?
|
|
what to do when tests show hardware problem?
|
|
How should we weight factors for credit?
|
|
run CPU tests unobtrusively, periodically
|
|
check that on/conn/active fracs are maintainted correctly
|
|
check that bandwidth is measured correctly
|
|
measure disk/mem size on all platforms
|
|
get timezone to work
|
|
|
|
CPU accounting in the presence of checkpoint/restart
|
|
test
|
|
|
|
Redundancy checking and validation
|
|
test the validation mechanism
|
|
make sure credit is granted correctly
|
|
make sure average, total credit maintained correctly for user, host
|
|
|
|
Windows screensaver functionality
|
|
idle-only behavior without screensaver - test
|
|
|
|
Data transfer
|
|
make sure restart of downloads works
|
|
make sure restart of uploads works
|
|
test download/upload with multiple data servers
|
|
make sure it tries servers in succession,
|
|
does exponential backoff if all fail
|
|
review and document prioritization of transfers
|
|
review protocol; make sure error returns are possible and handled correctly
|
|
|
|
Scheduler
|
|
Should dispatch results based on deadline?
|
|
test that scheduler estimates WU completion time correctly
|
|
test that scheduler sends right amount of work
|
|
test that client estimates remaining work correctly,
|
|
requests correct # of seconds
|
|
test that hi/low water mark system works
|
|
test that scheduler sends only feasible WUs
|
|
|
|
Scheduler RPC
|
|
formalize notion of "permanent failure" (e.g. can't download file)
|
|
report perm failures to scheduler, record in DB
|
|
make sure RPC backoff is done for any perm failure
|
|
(in general, should never make back-to-back RPCs to a project)
|
|
make sure that client eventually reloads master URL
|
|
|
|
Application graphics
|
|
finish design, implementation, doc, testing
|
|
size, frame rate, whether to generate
|
|
|
|
Work generation
|
|
generation of upload signature is very slow
|
|
|
|
prevent file_xfer->req1 from overflowing. This problems seems to be
|
|
happening when the file_upload_handler returnes a message to the
|
|
client that is large. This causes project->parsefile to get wrong
|
|
input and so on.
|
|
|
|
test HTTP redirect mechanism for all types of ops
|
|
|
|
Add batch features to ops web
|
|
|
|
-----------------------
|
|
LONG-TERM IDEAS AND PROJECTS
|
|
-----------------------
|
|
|
|
use https for login (don't sent account ID or password in clear)
|
|
|
|
CPU benchmarking
|
|
This should be done by a pseudo-application
|
|
rather than by the core client.
|
|
This would eliminate the GUI-starvation problem,
|
|
and would make it possible to have architecture-specific
|
|
benchmarking programs (e.g. for graphics coprocessor)
|
|
or project-specific programs.
|
|
|
|
investigate binary diff mechanism for updating persistent files
|
|
|
|
verify support for > 4 GB files everywhere
|
|
|
|
use FTP instead of HTTP for file xfer??
|
|
measure speed diff
|
|
|
|
Local scheduling
|
|
more intelligent decision about when/what to work on
|
|
- monitor VM situation, run small-footprint programs
|
|
even if user active
|
|
- monitor network usage, do net xfers if network idle
|
|
even if user active
|
|
|
|
The following would require client to accept connections:
|
|
- clients can act as proxy scheduling server
|
|
- exiting client can pass work to another client
|
|
- client can transfer files to other clients
|
|
|
|
User/host "reputation"
|
|
keep track of % results bad, %results claimed > 2x granted credit
|
|
both per-host and per-user.
|
|
Make these visible to project, to that user (only)
|
|
|
|
Storage validation
|
|
periodic rehash of persistent files;
|
|
compare results between hosts
|
|
|
|
Include account ID in URL for file xfers
|
|
This would let you verify network xfers by scanning web logs
|
|
(could use that to give credit for xfers)
|
|
|
|
WU/result sequence mechanism
|
|
design/implement/document
|
|
|
|
Multiple application files
|
|
document, test
|
|
|
|
Versioning
|
|
think through issues involved in:
|
|
compatibility of core client and scheduling server
|
|
compatibility of core client and data server
|
|
compatibility of core client and app version
|
|
compatibility of core client and client state file?
|
|
Need version numbers for protocols/interfaces?
|
|
What messages to show user? Project?
|
|
|
|
Persistent files
|
|
test
|
|
design/implement test reporting, retrieval mechanisms
|
|
(do this using WU/results with null application?)
|
|
|
|
NET_XFER_SET
|
|
review logic; prevent one stream for starving others
|
|
|
|
Kill app if there is a memory leak
|
|
|
|
Other user preferences:
|
|
memory restrictions
|
|
process priority/affinity
|
|
show disk usage as two pie charts (one for overall, one for per project)
|