Changes between Version 72 and Version 73 of DevProjects


Ignore:
Timestamp:
Oct 20, 2011, 12:06:13 PM (13 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DevProjects

    v72 v73  
    22
    33= Help wanted - programming =
    4 BOINC needs volunteers to help with software development. BOINC consists of several areas, each with some required technical skills:
     4BOINC needs volunteers to help with software development.
     5BOINC consists of several areas, each with some required technical skills:
    56
    67|| '''Area''' || '''Skills needed''' ||
     
    1112|| Unix build system || autoconf, automake ||
    1213
    13 The University of California holds the copyright on all BOINC source code. By submitting contributions to the BOINC code, you irrevocably assign all right, title, and interest, including copyright and all copyright rights, in such contributions to The Regents of the University of California, who may then use the code for any purpose that it desires.
     14The University of California holds the copyright on all BOINC source code.
     15By submitting contributions to the BOINC code,
     16you irrevocably assign all right, title, and interest, including copyright and all copyright rights,
     17in such contributions to The Regents of the University of California,
     18who may then use the code for any purpose that it desires.
    1419
    1520== Finding tasks ==
     
    2530 * Look at the source code and think about how you would implement the task.
    2631 * Read about the BOINC [wiki:SoftwareDevelopment software] and [wiki:DevProcess development process].
    27  * Communicate with the [wiki:ProjectPeople area owner] or [wiki:ProjectPeople David Anderson], and reach agreement on exactly what you're going to do and how. Don't start coding until you do this.
     32 * Communicate with the [wiki:ProjectPeople area owner] or [wiki:ProjectPeople David Anderson],
     33   and reach agreement on exactly what you're going to do and how.
     34   Don't start coding until you do this.
    2835
    2936Submit your work (as diffs or files) to the area owner, so that they can evaluate it and possibly check it in.
    3037
    3138== Proposed features ==
    32 The following development projects are available '''(Note: please do not add items to these lists. Suggest new items in the boinc_dev email list.)'''''''
     39The following development projects are available '''(Note: please do not add items to these lists.
     40Suggest new items in the boinc_dev email list.)'''''''
    3341
    3442=== Web features ===
     
    3644
    3745 * Use a WYSIWYG bbcode editor such as http://wysiwygbbcode.codeplex.com/releases/view/49836
    38  * Document the classes and IDs used by the PHP code; document the "standard" stylesheets, main.css and white.css. Finish black.css, and maybe make another style.
     46 * Document the classes and IDs used by the PHP code; document the "standard" stylesheets, main.css and white.css.
     47   Finish black.css, and maybe make another style.
    3948 * Combine user page and profile. #601
    4049 * Change default Q&A page to refer BOINC-specific questions to BOINC web site. #603
     
    5564   * list of recent posts and threads this person created, on this and other projects.
    5665   * other features from social networking sites?
    57    * 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.
    58  * 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. #610
     66   * Add ‘referral’ mechanism: new user creates account, enters email of ‘referrer’ (or goes to URL that has it embedded).
     67     Give referrer a fraction of credit (or a 1-time bonus).
     68         List referrals on user page (show only those still active).
     69         Add new referral table to DB.
     70 * Make it easy for teams to offer a client download that features their skin,
     71   and pre-register the user on that team for any projects he attaches to. #610
    5972
    6073=== Applications ===
     
    7083
    7184 * Write an example compound application (and suggest API revisions to make this easier).
    72  * Investigate the crlibm library for generating identical results across processors (or at least reducing the number of cases for HR).
    73  * 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.
     85 * Investigate the crlibm library for generating identical results across processors
     86  (or at least reducing the number of cases for HR).
     87 * Java support: core client checks for the existence of JVM, reports version to scheduler.
     88   Write Java wrapper (runs JVM, gives it jar files). Note: Sztaki has already done some part of this.
    7489 * Same, .NET
    7590
     
    7792Medium:
    7893
    79  * Keep track of the statistics of how long it takes to upload files, and to report results. Use that info to improve compute deadlines (e.g., subtract the 2 sigma point for both).
     94 * Keep track of the statistics of how long it takes to upload files, and to report results.
     95   Use that info to improve compute deadlines (e.g., subtract the 2 sigma point for both).
    8096 * Add an "expiration delay" for files: delete them only after they haven't been used for X time.
    8197 * Core client monitors total CPU usage, limits its own CPU usage so that total is < 100%.
    82  * Monitor working-set size of non-BOINC apps; don't allow total to exceed physical RAM.  This could eliminate the need for memory-usage preferences. Note: this might be tricky because parts of a process's working set is shared with other processes.  Some study is needed to figure out the best approach.
     98 * Monitor working-set size of non-BOINC apps; don't allow total to exceed physical RAM.
     99   This could eliminate the need for memory-usage preferences.
     100   Note: this might be tricky because parts of a process's working set is shared with other processes.
     101   Some study is needed to figure out the best approach.
    83102 * GUI RPC to tell apps to checkpoint and quit.
    84103 * Keep track of upload/download sizes, show weekly/monthly transfer totals.
     
    86105Hard:
    87106
    88  * Have the core client sense CPU temperature and throttle CPU if it goes too high. [http://www.lm-sensors.org/ Open-source software for collecting sensor data (on Linux)] is available.
     107 * Use multiple disks.
     108   This would increase available space,
     109   and (if slot dirs spread across disks) would allow I/O-intensive apps
     110   to run more efficiently.
     111   Would have to remove assumption that project dir is ../../projects/X relative to slot.
     112 * Have the core client sense CPU temperature and throttle CPU if it goes too high.
     113   [http://www.lm-sensors.org/ Open-source software for collecting sensor data (on Linux)] is available.
    89114 * Windows: get proxy config info directly from the OS.
    90  * 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().
    91  * 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.
    92  * Same, but for suspend: if we tell a client to suspend and it's still using lots of CPU after a few seconds, abort it (or something).
    93  * Integrate !BitTorrent ([http://www.rasterbar.com/products/libtorrent/ libtorrent]?) with the core client (Janus Kristensen is working on this).
     115 * After an applications exits or is killed (for whatever reason) make sure
     116   (after a few second delay) that its subprocesses are gone too.
     117   Don't restart the job until this happens.
     118   Unix: use process groups and killpg().
     119 * More generally: make a better state machine for shutting down apps:
     120   tell them to checkpoint, wait a little, tell them to quit, clean up straggler processes.
     121 * Same, but for suspend: if we tell a client to suspend and it's still
     122   using lots of CPU after a few seconds, abort it (or something).
     123 * Integrate !BitTorrent ([http://www.rasterbar.com/products/libtorrent/ libtorrent]?)
     124   with the core client (Janus Kristensen is working on this).
    94125 * Log result start/ends (for use by 3rd-party software like !BoincView).
    95  * Prevent disk space usage from exceeding user preferences, and enforce resource shares, with file deletion according to project policy.
    96  * Vista: if get 'about to shut down' msg from OS, stop apps immediately (don't tell them to checkpoint). Investigate.
     126 * Prevent disk space usage from exceeding user preferences,
     127   and enforce resource shares, with file deletion according to project policy.
     128 * Vista: if get 'about to shut down' msg from OS,
     129   stop apps immediately (don't tell them to checkpoint). Investigate.
    97130
    98131=== Installer ===
    99  * Check if host is configured to go into Standby mode after X idle minutes.  If so, ask user if they want to let BOINC run for X minutes, then go into standby right after that.
     132 * Check if host is configured to go into Standby mode after X idle minutes.
     133   If so, ask user if they want to let BOINC run for X minutes, then go into standby right after that.
    100134
    101135=== BOINC Manager ===
     
    117151 * Add a mechanism to recover from situations where the scheduler fails to send its reply message.
    118152   * Add a reply_pending field to host table.  Set at start of scheduler, clear after reply message sent.
    119    * If get a request from host with reply_pending==1, scan for lost results This would replace the <resend_lost_results> mechanism. NOTE: this is not a good design; successful send doesn't imply successful receipt.
     153   * If get a request from host with reply_pending==1, scan for lost results.
     154     This would replace the <resend_lost_results> mechanism.
     155         NOTE: this is not a good design; successful send doesn't imply successful receipt.
    120156 * XML stats: add lat/long to user record?
    121157
    122158Medium:
    123159
    124  * Enforce file immutability.  I.e., have create_work() check if any file is already in the download hierarchy, and if so make sure that it is the same.  Use MD5s for efficiency.
    125  * 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. Otherwise, when new app versions are released, results may incorrectly be marked as invalid. NOTE: not really needed; create a new app instead.
     160 * Enforce file immutability.
     161   I.e., have create_work() check if any file is already in the download hierarchy,
     162   and if so make sure that it is the same.
     163   Use MD5s for efficiency.
     164 * When using HR, if the scheduler has sent one result of a WU using a particular app version,
     165   it should use the same app version for other results from that WU.
     166   Otherwise, when new app versions are released, results may incorrectly be marked as invalid.
     167   NOTE: not really needed; create a new app instead.
    126168
    127169Hard:
    128170
    129  * Add support for MPI-type applications: try to schedule all the jobs in a batch more or less simultaneously. NOTE: being done by Volpex project from U. of Houston.
     171 * Add support for MPI-type applications: try to schedule all the jobs in a batch more or less simultaneously.
     172   NOTE: being done by Volpex project from U. of Houston.
    130173 * Implement a mechanism so that server software detects incompatible database format. (related to #715)
    131  * Add project_specific_info field to host table (text).  This stores, for each app, the ID of last reference WU completed, and the info returned by that WU (as part of its stderr output, in a <app_info> tag). ?? how to select an app version based on contents of app_info? This could be used, e.g., to do app-specific benchmarking, to gather info on the host hardware or software configuration, or to periodically check the numerical hardware.
     174 * Add project_specific_info field to host table (text).
     175   This stores, for each app, the ID of last reference WU completed,
     176   and the info returned by that WU (as part of its stderr output, in a <app_info> tag).
     177   ?? how to select an app version based on contents of app_info?
     178   This could be used, e.g., to do app-specific benchmarking,
     179   to gather info on the host hardware or software configuration,
     180   or to periodically check the numerical hardware.