BOINC modifications

From Pirates@Home

Jump to: navigation, search

Contents

One of the purposes of Pirates@Home is to try out modifications to the BOINC software. When a feature is found which we think should be a part of BOINC then we submit the modification to the developers for possible inclusion in the main BOINC code base. Features which may not be appropriate for inclusion in the main BOINC code base can still be documented, so that projects can implement them on their own if desired.

Current Modifications

Here is a list of current modifications to BOINC which are being tested here on Pirates@Home:

Jump to Last Post
If you have set the "jump to last unread" option in your forum preferences, but you have read all the postings in the thread, then you will jump to the last posting, instead of staying at the first.
Subscriber preview
When a notice is sent to subscribers the first 100 (or so) characters of the posting are included in the notification e-mail.
Application list order
On projects that have a number of different applications (such as Pirates@Home), this modification provides control over the order in which the applications are listed.
upgrade --server-only
There is a --web-only option for the BOINC upgrade script. This provides the converse.
Wiki Logo Link
The "logo" image in the upper left corner of every page in an attached wiki is a link to the main project page (or some other page), not just the main page for the wiki.
Pop-up user info
In the forums, the block of user info under the avatar is kept small by limiting it to social identification information (what country are you from, which team are you on?) and credit. But when the mouse hovers over that area then additional information is shown in a pop-up box (implemented using CSS).
BOINC/MediaWiki authentication
A simple MediaWiki authentication plug-in allows users to be automatically authenticated to a wiki based on authentication to the BOINC project. All login/logout is taken care of by the BOINC page rather than the wiki.
Forum rating points
Users have a limited number of rating points, which they can use to rate postings or profiles. The maximum number is configurable (5 seems to work well). Points are slowly added back over time (1 per 8 hours seems to work well, but this is also configurable).
Private forums
Some forums or categories are only readable by authenticated participants.
Hidden forums
Some forums, or categories, are not shown in the regular list of forums, or help desks. Implemented by making the orderID of the forum or category greater than 100.
Forum "attic"
Discussion rooms (forums) which are no longer used are put "in the attic" by making their orderID negative. They still exist, but they are not shown to users, and may be read but not added to or edited.
Help Desk - recent activity
the Help Desk area only shows recent questions and replies (where recent is configurable - we've tried 3-7 days) so that it remains "fresh". User can use a checkbox to turn on/off.
Mark thread as read
a forum thread can be marked as having been read simply by clicking on the "new content" icon, without having to visit the thread. This marks only one thread as read, not every thread on the site (which already exists in BOINC, but is not as useful.)
Cached page autorefresh
cached pages can optionally be set to automatically refresh after a given time, specified in proportion to the cache interval. For example, on Pirates@Home the status page is cached, and so it can only be updated after 10 minutes. The optional second parameter to the start_cache() function is 2.0, so the page will automatically refresh itself after 20 minutes.
TRIM_THIS_quote
when someone replies to a forum posting the previous article is enclosed in tags [TRIM_THIS_quote] rather than [quote], and by default anything within such quotes is removed from the posting. This forces the writer to edit the tags, and hopefully they will trim the quoted text at the same time.
Quote attribution
When replying to an earlier posting, the [quote] tag becomes [quote=name], which shows up in the posting as "Name wrote:...". This has always worked, but the reply script did not automatically insert the name of the person quoted. Now it does.
Signature block size
The size of the signature block is limited to a height of 100px to prevent huge signatures. In the past we tried limiting signatures to only one image, but this seems to be the better way to control large signatures. This is implemented in CSS, so should be documented as such in Trac.
wiki linking in forums
Allow wiki-style links (eg. [[whatever]]) in the forums, with links to both our own co-locate wiki or to wikipedia (or others?).
Starboard screensaver application
Screensaver framework which allows one to use one of the many GL 'hacks' from XScreenSaver.

Future Features

These are ideas for features or modifications which we might like to try in the future, or work which may be in progress but not yet ready to test.

Subscriptions to rooms
In addition to being able to subscribe to one thread in a forum (room), provide the ability to subscribe to an entire room. The subscribing user will receive a brief e-mail whenever a posting is made in the room, with a link to the new posting or thread. Use of this feature would be configurable -- it is probably not desirable or useful on large, active sites, but could be very useful when projects start up, or for small projects in general.
Referals
A member of the crew can give someone a link to the site with ?refered_by=#### with the refering crew member's userid. If the new person creates an account, and if that account later obtains X amount of credit, then the refering crew member gets a reward. The reward could be additional credits, or it could be project-specific (eg. dubloons).
Error codes
In listing Results which have non-zero error code, extract the symbolic error code and possibly a longer explanation from the file error_numbers.h, the same file used to put the error codes in the client code.
Screensaver frame rate
Modify the throttled rendering loop to record the frame rate and fraction of CPU used by the graphics thread. Modify the way throttling is done based on the graphics fraction.
Preview before post
You must preview your message once before posting, and ideally you preview it several times until you explicitly press the "post" button. We had this before, but then the underlying code changed so it needs to be done again.
RSS news source
Obtain RSS news from a file in html/cache if it exists, otherwise fall back to html/project as is current usage. (Do we check file modification times?) The array of news items is an associative array, rather than using numeric indices, but we keep the numeric indices (indeed add them if missing) for backward compatibility.
RSS news admin
the control panel page html/ops/news_admin.php presents the project administrator with a form which makes it very easy to add or edit RSS news.
Keyword classification
Postings can be classified by one (or someday more than one) keyword, which can then later be used to search for applicable postings. We had this before, but then the underlying code was changed in BOINC.
File attachments
Files of just about any type (image, log files, listings, text files) can be attached to a posting. Images are represented by a smaller icon version of the image.
New posting preview
In the list of discussion forums (forum_forum.php) show the title of the thread (or the leading part of the title if it's longer than some amount) of the thread with the newest post. We had this before, but then the underlying code was changed.
Role-based permissions
Permissions are granted to permission groups, and then users can be put into one or more of these groups. This makes granting permissions more flexible, as well as more easily extensible when we decide new permissions need to be added.
Room ownership and membership
Discussion rooms may be "owned" by one or more users, who can control various settings, including how private the room is. A room could be restricted to only allow those users listed as "members" to visit the room, or perhaps only members could post to the room. These more private rooms would not be listed in the main listing of discussion rooms.
Membership and Ownership
Objects such as forums, forum categories, or other elements of the site, have an "owner" who can control the object or access to the object, and "members", who are in a group who are given access or limited control of the object. Simplest example: a forum room could be "owned" by the team founder, and only "members" of the team could read or post to that forum.
Multiple affiliations
Users could be listed as members of more than one "team". On I2U2 we use the "team" to indicate the school the teacher or student is affiliated with. Some teachers may teach at more than one school, some students might take classes at or through more than one school (I did). This would be only for I2U2; it doesn't make much sense for BOINC. It might be best to just add a new DB field for this rather than pretending that the team mechanism works for school affiliation.

Accepted into BOINC

These features, either developed or tested on Pirates@Home, have been accepted into the main BOINC code base:

Database updates
Updates to a BOINC project update currently have to be run "by hand", and the process of determining which updates are new and which are not can be tedious. The process has been automated so that each update is recorded in a log file and any updates already in that log file are not applied.
Customized user identification
A project may create its own custom function project_forum_user_info($user) to display user information under their avatar in the forums. Example: show country and team.
blockquote CSS fix
Change the CSS so that the blockquote style used by the forums is only used in the forums, not by every blockquote tag on the site. FINALY!
User management page
This control panel page allows a project administrator to see details about a user, easily change their special_user bits, and easily suspend posting privleges or revoke a suspension. File: html/ops/manage_user.php. </strike> For an administrator, the red x-box is a link to this page, not the page to report abuse.
Personal tools