Changes between Version 70 and Version 71 of DevProjects
- Timestamp:
- Oct 11, 2011, 11:23:01 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
DevProjects
v70 v71 1 1 [[PageOutline]] 2 2 3 = Help wanted - programming = 3 4 BOINC needs volunteers to help with software development. 5 BOINC consists of several areas, each with some required technical skills: 4 BOINC needs volunteers to help with software development. BOINC consists of several areas, each with some required technical skills: 6 5 7 6 || '''Area''' || '''Skills needed''' || … … 12 11 || Unix build system || autoconf, automake || 13 12 14 The University of California holds the copyright on all BOINC source code. 15 By submitting contributions to the BOINC code, you irrevocably assign all right, title, and interest, 16 including copyright and all copyright rights, in such contributions to The Regents of the University of California, 17 who may then use the code for any purpose that it desires. 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. 18 14 19 15 == Finding tasks == 20 21 16 There are several ways to get tasks to work on: 22 17 … … 25 20 * Scan the [//dev/ BOINC message boards] for ideas. 26 21 27 == Coordinating your work == 28 22 == Coordinating and submitting your work == 29 23 Once you pick out a task: 30 24 31 25 * Look at the source code and think about how you would implement the task. 32 * Read about the BOINC [ SoftwareDevelopment software] and [DevProcess development process].33 * Communicate with the [ ProjectPeople area owner] or [ProjectPeople David Anderson], and reach agreement on exactly what you're going to do and how.Don't start coding until you do this.26 * 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. 34 28 35 36 == Submitting your work == 37 38 * Submit your work (as diffs or files) to the area owner, so that they can evaluate it and possibly check it in. 39 * If you are working on a large task and want to stay current with the trunk, ask us to create an SVN workspace for you. 40 * Once you've contributed a certain amount of work, we'll give you SVN write access. 29 Submit your work (as diffs or files) to the area owner, so that they can evaluate it and possibly check it in. 41 30 42 31 == Proposed features == 43 44 The following development projects are available 45 '''(Note: please do not add items to these lists. 46 Suggest new items in the boinc_dev email list.)''' 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.)'''''''' 47 33 48 34 === Web features === 35 Easy: 49 36 50 Easy:51 37 * Add a Reset button to prefs (both general and project) 52 * Change whole-page caching to data caching to eliminate problem with wrong translations. #598 53 * Change update_profile_pages.php (and others) to use single join queries instead of lots of secondary select queries. #599 54 * Convert all PHP code to use [PhpDb the new database abstraction layer]. #600 38 * Use a WYSIWYG bbcode editor such as http://wysiwygbbcode.codeplex.com/releases/view/49836 39 * 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. 55 40 * Combine user page and profile. #601 56 41 * Change default Q&A page to refer BOINC-specific questions to BOINC web site. #603 … … 59 44 60 45 Medium: 46 61 47 * Add a mechanism where joining a team or group requires approval of an admin. #605 62 * Groups (sub-teams). New DB table with name, description, team ID, flags, forum ID. Group membership table. #60663 48 64 49 Difficult and/or complex: 50 65 51 * Repackage the BOINC web code (PHP) as a Drupal module. Being worked on by Einstein@home. 66 * Unify preferences (i.e., have the same prefs available on the web as in the Manager, and if possible make the interface look the same). #607 67 * Preferences: add a simplified interface where there are discrete choices (this applies to both web and GUI): 68 * Standard 69 * Max work 70 * Min interference 71 * Green 72 * Preferences: Currently there are time of day/week controls for gross features - whether to compute, whether to communicate. 73 Extend this so that all relevant preferences can be controlled by time of day/week, and whether computer is in use. 74 52 * [PrefsRemodel Remodel the preferences system] 75 53 * Propagate profiles between projects. #608 76 54 * Same for forum preferences. 77 55 * Add new profile features: #609 78 * list of recent posts and threads this person created, on this and other projects.79 * other features from social networking sites?80 * 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.56 * list of recent posts and threads this person created, on this and other projects. 57 * other features from social networking sites? 58 * 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. 81 59 * 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 82 83 60 84 61 === Applications === 85 62 Easy: 63 86 64 * Create Makefiles and project files to build the sample applications using MinGW and Dev-C++. 65 87 66 Medium: 67 88 68 * Write example FORTRAN application and Makefiles/ project files. 69 89 70 Difficult and/or complex: 71 90 72 * Write an example compound application (and suggest API revisions to make this easier). 91 73 * Investigate the crlibm library for generating identical results across processors (or at least reducing the number of cases for HR). … … 94 76 95 77 === Client === 78 Medium: 96 79 97 Medium: 98 * Keep track of the statistics of how long it takes to upload files, 99 and to report results. 100 Use that info to improve compute deadlines 101 (e.g., subtract the 2 sigma point for both). 80 * 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). 102 81 * Add an "expiration delay" for files: delete them only after they haven't been used for X time. 103 82 * Core client monitors total CPU usage, limits its own CPU usage so that total is < 100%. … … 107 86 108 87 Hard: 88 109 89 * 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. 110 90 * Windows: get proxy config info directly from the OS. … … 115 95 * Log result start/ends (for use by 3rd-party software like !BoincView). 116 96 * Prevent disk space usage from exceeding user preferences, and enforce resource shares, with file deletion according to project policy. 117 * Vista: if get 'about to shut down' msg from OS, stop apps immediately (don't tell them to checkpoint). Investigate. 97 * Vista: if get 'about to shut down' msg from OS, stop apps immediately (don't tell them to checkpoint). Investigate. 118 98 119 99 === Installer === 120 100 * 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. 121 101 122 === BOINC Manager === 102 === BOINC Manager === 103 Easy: 123 104 124 Easy:125 105 * Show credit numbers (especially totals) with thousands-groups separators (e.g., commas) 126 106 * If using an AMS, put link to AMS (or user page) in sys tray popup, elsewhere. 127 107 128 108 Hard: 109 129 110 * Reimplement the BOINC Manager so that it is: 130 * Configurable via an XML file131 * Skinnable via CSS132 * nicer-looking than the WxWidgets version111 * Configurable via an XML file 112 * Skinnable via CSS 113 * nicer-looking than the WxWidgets version 133 114 134 115 === Server and Back End === 116 Easy: 135 117 136 Easy:137 118 * Add a mechanism to recover from situations where the scheduler fails to send its reply message. 138 * Add a reply_pending field to host table. Set at start of scheduler, clear after reply message sent. 139 * If get a request from host with reply_pending==1, scan for lost results 140 This would replace the <resend_lost_results> mechanism. 141 NOTE: this is not a good design; successful send doesn't imply successful receipt. 119 * Add a reply_pending field to host table. Set at start of scheduler, clear after reply message sent. 120 * 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. 142 121 * XML stats: add lat/long to user record? 143 122 144 123 Medium: 145 * Enforce file immutability. I.e., have create_work() check if any file is already in the download hierarchy, 146 and if so make sure that it is the same. Use MD5s for efficiency. 147 * When using HR, if the scheduler has sent one result of a WU using a particular app version, 148 it should use the same app version for other results from that WU. 149 Otherwise, when new app versions are released, results may incorrectly be marked as invalid. 150 NOTE: not really needed; create a new app instead. 124 125 * 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. 126 * 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. 151 127 152 128 Hard: 153 * Add support for MPI-type applications: try to schedule all the jobs in a batch more or less simultaneously. 154 129 130 * 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. 155 131 * Implement a mechanism so that server software detects incompatible database format. (related to #715) 156 * 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). 157 ?? how to select an app version based on contents of app_info? 158 This could be used, e.g., to do app-specific benchmarking, 159 to gather info on the host hardware or software configuration, 160 or to periodically check the numerical hardware. 132 * 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.