Changes between Version 18 and Version 19 of DevProjects


Ignore:
Timestamp:
Nov 3, 2007, 8:35:10 PM (16 years ago)
Author:
Lee Carre
Comment:

separated “web” into back-end and front-end (back-end isn't the only part of a good web interface), populated front-end section with items

Legend:

Unmodified
Added
Removed
Modified
  • DevProjects

    v18 v19  
    11= Development projects =
    2 
    3 We need volunteers to help with software testing and development. If you have one or more of the relevant technical skills (C++ system programming, PHP/MySQL web development, wxWidgets programming, autoconf/automake expertise, etc.) you may be able to help us maintain and enhance BOINC.
     2We need volunteers to help with software testing and development. If you have one or more of the relevant technical skills (C++ system programming, PHP/MySQL Web development, wxWidgets programming, autoconf/automake expertise, etc.) you may be able to help us maintain and enhance BOINC.
    43
    54The 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.
    65
    76To get started, read about the [SoftwareDevelopment BOINC software development process].
    8 Find a small bug fix or enhancement to do
    9 (look at the [/trac/query BOINC bug database], the [/email_lists.php email lists], or [/dev/ message boards] for ideas).
     7Find a small bug fix or enhancement to do (look at the [/trac/query BOINC bug database], the [/email_lists.php email lists], or [/dev/ message boards] for ideas).
    108Look at the source code and think about how you would implement it.
    119Then communicate with the [ProjectPeople area owner], sketching what you want to do and how. Work with the the area owner to carry out and check in the work.
     
    1311The following development projects are available:
    1412
    15 ==  Web features ==
     13== Web Interface ==
    1614
    17 (Requires advanced knowledge of PHP, HTML, and MySQL)
     15=== Back-end ===
     16
     17Requires advanced knowledge of PHP and MySQL.
    1818
    1919Easy:
     
    2222          * Change the ops/ web pages to require login by a user with admin privileges.
    2323          * Change default Q&A page to refer BOINC-specific questions to BOINC web site
     24          * As much as possible; separate back-end and front-end code, to enable front-end specialists to edit front-end code without having to know about, or deal with back-end code.
    2425
    2526Medium:
     
    2728          * Add a mechanism where joining a team or group requires approval of an admin.
    2829          * Groups (sub-teams).  New DB table with name, description, team ID, flags, forum ID. Group membership table.
    29 Hard:
     30Difficult/Complex:
    3031          * Propagate profiles between projects. When create or edit profile, if attached to other projects, show 'propagate changes' page, with checkboxes for other projects (must have same password on other projects). Add web RPCs for updating profile (args: user ID, profile, password hash). Implement this so that page doesn't block waiting for replies from RPCs.  NOTE: this may not be a good idea - spammers could exploit it.
    3132          * Same for forum preferences
    3233          * Add new profile features:
    33                 * 'Buddy lists'
     34                * ‘Buddy lists’
    3435                * list of recent posts and threads this person created, on this and other projects
    3536                * other features from social networking sites?
    36           * 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.
     37          * 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.
    3738          * 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.
     39
     40=== Front-end ===
     41
     42Requires front-end specialists with detailed knowledge and experience of markup and styling.
     43
     44Medium:
     45 *Typography corrections/improvements
     46 *
     47
     48Difficult/Complex:
     49 *Information Architecture — eg creating a appropriate, stable URL structure, allowing for future expansion and change (eg use of HTTP default documents rather than current practice).
     50  *Any changes to URL structure require (permanent) redirects from all previous locations to all new locations.
     51 *Valid Markup & style declarations
     52  *Should aim for HTML v4.01 Strict (XHTML served with the correct MIME-type/content-type doesn't have sufficient support, modern HTML authoring techniques are perfectly capable, adequate, suitable, and appropriate).
     53  *If Strict isn't reasonably attainable (very few reasons why apart from time constraints to correct poor design/implementation), then aim for Transitional as an intermediate step, so that the code will at least be valid.
     54 *Semantic Markup — marking-up things based on what they are, not the default appearence of certain elements (eg using <blockquote>…“quoted” text</blockquote> for indentation is inappropriate. Block-quotes should be marked as <blockquote><p>…</p></blockquote> and nothing else. In this example, if indentation is required then CSS should be used to apply styling to an appropriate element (a regular paragraph (<p>Paragraph text</p>) would probably be suitable unless the element isn't actually a paragraph.
     55 *Accessibility
     56  * Replacing table-based layouts with CSS positioning
     57  * More semantic mark-up
     58  * using appropriate units in style declarations to enable resizing of text based on user's preferences in browser.
     59  * Unobtrusive, accessible ECMAScript (JavaScript) use, implemented via DOM Scripting methods. [http://www.456bereastreet.com/archive/200612/you_cannot_rely_on_javascript_being_available_period/ Scripting is not always available (for many reasons, most outside the user's control) and can not be relied upon], and the back-end needs to be able to provide same functionality (albeit less elegent/sophisticated) when scripting isn't available for whatever reason. A simple example would be back-end form input validation when scripting isn't available to protect against garbage/bogus form data and provide feedback to user.
     60 *Usability
     61 *Proper navigation model
     62  *Navigation bar/panel on common pages (rather than always having to (or only being able to) go back to “Home” and then navigate to desired section from there).
     63  *Interface designer to establish the appropriate navigation options for each page.
     64 *HTTP efficiency
     65  *Content-Encoding
     66  *Providing correct Last-Modified and ETag headers to enable conditional GET requests.
     67    *Back-end support to enable “HTTP 304 Not Modified” reponses to be sent when content hasn't changed based on conditional GET request(s).
     68  *More ‘agressive’ caching for content who's frequency of change is predictable (such as images).
     69
     70
    3871== Applications ==
    39 
    4072Easy:
    4173          * Create Makefiles and project files to build the sample applications using MinGW and DevC++.
    4274Medium:
    4375          * Write example FORTRAN application and Makefiles/ project files
    44 Hard:
     76Difficult/Complex:
    4577          * Write an example compound application (and suggest API revisions to make this easier).
    4678          * Investigate the crlibm library for generating identical results across processors (or at least reducing the number of cases for HR).
     
    4981          * 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.
    5082
    51  == Core client ==
     83== Core client ==
    5284(Requires advanced C++ system programming experience)
    5385Medium:
     
    5688          * GUI RPC to tell apps to checkpoint and quit.
    5789Hard:
    58           * 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/.
     90          * 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.
    5991          * Windows: get proxy config info directly from the OS
    6092          * 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().