Changes between Version 15 and Version 16 of DevProjects


Ignore:
Timestamp:
Nov 2, 2007, 2:27:34 PM (16 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DevProjects

    v15 v16  
    99The following development projects are available:
    1010
    11 == Applications ==
     11==  Web features ==
    1212
    13 Easy:
    14           * Create Makefiles and project files to build the sample applications using MinGW and DevC++.
    15 Medium:
    16           * Write example FORTRAN application and Makefiles/ project files
    17 Hard:
    18           * Write an example compound application (and suggest API revisions to make this easier).
    19           * Investigate the crlibm library for generating identical results across processors (or at least reducing the number of cases for HR).
    20           * Java support: core client checks for the existence of JVM, reports version to scheduler. Write Java wrapper (runs JVM, gives it jar files). Note: Sztaki has already done some part of this.
    21           * Same, .NET
    22           * Distributed Python: Borrow or invent a notation for master/slave execution in Python. Develop a system that implements this on BOINC, i.e., creates WUs and applications, and harvests the results.
     13(Requires advanced knowledge of PHP, HTML, and MySQL)
    2314
    24  == Core client ==
    25 Medium:
    26           * Add a preferences for total download and upload in a month (many Australian ISPs have monthly limits), or per X hours of processing time (see email from Kevin Reed).
    27           * Don't enforce RAM limits unless free RAM is low
    28           * GUI RPC to tell apps to checkpoint and quit.
    29 Hard:
    30           * Have the core client sense CPU temperature and throttle CPU if it goes too high. Open-source software for this (on Linux) is at http://www.lm-sensors.org/.
    31           * Windows: get proxy config info directly from the OS
    32           * After an applications exits or is killed (for whatever reason) make sure (after a few second delay) that its subprocesses are gone too. Don't restart the job until this happens. Unix: use process groups and killpg().
    33           * More generally: make a better state machine for shutting down apps: tell them to checkpoint, wait a little, tell them to quit, clean up straggler processes.
    34           * Same, but for suspend: if we tell a client to suspend and it's still using
    35             lots of CPU after a few seconds, abort it (or something).
    36           * Integrate !BitTorrent ([http://www.rasterbar.com/products/libtorrent/ libtorrent]?) with the core client.
    37           * Do potentially slow RPCs and other tasks (such as computing disk usage) in a separate thread.
    38           * Log result start/ends (for use by 3rd-party software like !BoincView).
    39           * Prevent disk space usage from exceeding user preferences, and enforce resource shares, with file deletion according to project policy.
    40           * Make messages of class MSG_USER_ERROR translatable.
    41           * Vista: if get 'about to shut down' msg from OS, stop apps immediately (don't tell them to checkpoint). Investigate.
    42           * XML stats: add lat/long to user record?
    43 ==  BOINC Manager ==
    44 Easy:
    45           * If using an AMS, put link to AMS (or user page) in sys tray popup, elsewhere
    46 Hard:
    47           * Properties pages for projects, jobs
    48           * Turn off alerts (Rom's working on this)
    49           * Have the Manager do RPCs in a separate thread.
    50 ==  Server/Back End ==
    51 Medium:
    52           * When using HR, if the scheduler has sent one result of a WU using a particular app version, it should use the same app version for other results from that WU.
    53 Hard:
    54           * Implement a mechanism so that server software detects incompatible database format
    55           * Scheduler: implement mechanisms so that server:
    56                 * Attempts to send results from the same WU to hosts with similar speed, so that a fast host doesn't have to wait weeks to get credit.
    57           * Implement a 'benchmark result' mechanism: every host runs a benchmark result per app version, and the CPU time determines credit/CPU for future results
    58 ==  Web features ==
    5915Easy:
    6016          * Convert PHP code to use [PhpDb the new database abstraction layer].
     
    7632          * Add 'referral' mechanism: new user creates account, enters email of 'referrer' (or goes to URL that has it embedded). Give referrer a fraction of credit (or a 1-time bonus). List referrals on user page (show only those still active). Add new referral table to DB.
    7733          * Make it easy for teams to offer a client download that features their skin, and pre-register the user on that team for any projects he attaches to.
     34== Applications ==
     35
     36Easy:
     37          * Create Makefiles and project files to build the sample applications using MinGW and DevC++.
     38Medium:
     39          * Write example FORTRAN application and Makefiles/ project files
     40Hard:
     41          * Write an example compound application (and suggest API revisions to make this easier).
     42          * Investigate the crlibm library for generating identical results across processors (or at least reducing the number of cases for HR).
     43          * Java support: core client checks for the existence of JVM, reports version to scheduler. Write Java wrapper (runs JVM, gives it jar files). Note: Sztaki has already done some part of this.
     44          * Same, .NET
     45          * Distributed Python: Borrow or invent a notation for master/slave execution in Python. Develop a system that implements this on BOINC, i.e., creates WUs and applications, and harvests the results.
     46
     47 == Core client ==
     48(Requires advanced C++ system programming experience)
     49Medium:
     50          * Add a preferences for total download and upload in a month (many Australian ISPs have monthly limits), or per X hours of processing time (see email from Kevin Reed).
     51          * Don't enforce RAM limits unless free RAM is low
     52          * GUI RPC to tell apps to checkpoint and quit.
     53Hard:
     54          * Have the core client sense CPU temperature and throttle CPU if it goes too high. Open-source software for this (on Linux) is at http://www.lm-sensors.org/.
     55          * Windows: get proxy config info directly from the OS
     56          * After an applications exits or is killed (for whatever reason) make sure (after a few second delay) that its subprocesses are gone too. Don't restart the job until this happens. Unix: use process groups and killpg().
     57          * More generally: make a better state machine for shutting down apps: tell them to checkpoint, wait a little, tell them to quit, clean up straggler processes.
     58          * Same, but for suspend: if we tell a client to suspend and it's still using
     59            lots of CPU after a few seconds, abort it (or something).
     60          * Integrate !BitTorrent ([http://www.rasterbar.com/products/libtorrent/ libtorrent]?) with the core client (Janus Kristensen is working on this).
     61          * Do potentially slow RPCs and other tasks (such as computing disk usage) in a separate thread.
     62          * Log result start/ends (for use by 3rd-party software like !BoincView).
     63          * Prevent disk space usage from exceeding user preferences, and enforce resource shares, with file deletion according to project policy.
     64          * Make messages of class MSG_USER_ERROR translatable.
     65          * Vista: if get 'about to shut down' msg from OS, stop apps immediately (don't tell them to checkpoint). Investigate.
     66          * XML stats: add lat/long to user record?
     67==  BOINC Manager ==
     68(Requires experience with !WxWidgets GUI toolkit)
     69Easy:
     70          * If using an AMS, put link to AMS (or user page) in sys tray popup, elsewhere
     71Hard:
     72          * Properties pages for projects, jobs
     73          * Turn off alerts (Rom's working on this)
     74          * Have the Manager do RPCs in a separate thread.
     75==  Server/Back End ==
     76
     77(Requires advanced C++/Unix system programming experience)
     78
     79Medium:
     80          * When using HR, if the scheduler has sent one result of a WU using a particular app version, it should use the same app version for other results from that WU.
     81Hard:
     82          * Implement a mechanism so that server software detects incompatible database format
     83          * Scheduler: implement mechanisms so that server:
     84                * Attempts to send results from the same WU to hosts with similar speed, so that a fast host doesn't have to wait weeks to get credit.
     85          * Implement a 'benchmark result' mechanism: every host runs a benchmark result per app version, and the CPU time determines credit/CPU for future results
     86
    7887Please check with [ProjectPeople area owner or David Anderson] before undertaking any of these.