-
Notifications
You must be signed in to change notification settings - Fork 452
BoincBasics
This document describes BOINC Basics, a software infrastructure (implemented using PHP and MySQL) for web-based "working communities". Boinc Basics provides mechanisms for user accounts, grouping of users, communication among users, and credit.
BOINC Basics provides a basis for three 'activities':
A project is an organization that does one or more of these activities, and runs the BOINC Basics software on a server. A project can add activities without requiring users to re-register.
Users (i.e. people in the working community) create accounts. Each account is identified by an email address and password, and can have the following user-supplied attributes:
- A profile in which the user can provide a picture and text describing themselves, and their interest in the project or activity.
- An avatar - a small image used to represent the user.
- A signature for message boards
- Demographic attributes: birth year, sex, nationality, education level.
- Preferences: e.g. how notifications are to be delivered.
An account has the following project-supplied attributes
- A numerical credit, representing the amount of contribution to the project, possibly involving computation, distributed thinking, recruitment of other users, etc. BOINC Basics keeps track of the account's total credit, and its recent average.
- Activity-specific attributes: how well the user has mastered a body of knowledge, their aptitude at various types of tasks, and so on.
Each user has a file upload/download area, accessible only to that user.
BOINC Basics supports archived group communication via message boards. Message boards consist of 'forums', each one having a particular topic. Each forum consists of a set of 'threads', and each thread consists of a set of 'posts'.
BOINC Basics message boards support various features (all of them are optional):
- Keyword search.
- BBcode for text formatting.
- Spam filtering using Akismet.
- User read history - keep track of last post read in each thread.
- Minimum credit total or average to post or to rate (per forum).
- Moderation (by project staff or designated users).
- User reporting of objectionable posts.
- User rating of posts.
- Subscription: a user can request email or RSS notification when there is a new post in a particular thread.
- Ordering options: forums can be sorted according to most recent post, most recent creation, most views, etc.; these options are stored per user.
- Sticky posts.
- "Ignore" lists - a user can specify a set of users whose posts will not be shown.
A project can provide a set of forums accessible to all users. In addition, each group can have its own forum (see below).
A user has a queue of private messages. Users can send private message to another user. A user's home page has a link to a page showing the private message queue, and allowing the user to read and delete private messages.
Each user has an RSS feed containing one or more of:
- Messages from the project.
- Notifications of new message-board posts.
- Private messages.
The user can control which of these sources are included. Users can include this RSS feed in whatever RSS reader they use. In addition, the BOINC client will periodically scan the RSS feeds of all attached projects, and display any new items in a popup dialog.
- Skype and Skypecast.
- IRC or other chat.
BOINC Basics allows users to form groups. Each group has:
- A name.
- A description.
- A reference to a team (a top-level group).
- Whether the permission of a "group admin" (see below) is required to join the group.
- An optional forum.
- A file upload/download area, accessible only to group members.
- When used with BOINC, workunits can be associated with a particular group; when a user's host contacts the scheduler, those queues are scanned first for work assignment.
In general (subject to restrictions) a user can belong to arbitrarily many groups. Each group membership has the following attributes:
- Whether the user is an administrator of the group.
Teams are a type of group with the property that teams are disjoint, i.e. each user can belong to at most one team. Each team has associated:
- Total and recent-average credit.
BOINC Basics provides an interface allowing users to find teams with which they identify (based on interests, nationality, etc.).
A team administrator can:
- Create and delete groups within the team.
- Control the membership of groups within the team.
- Assign administrator status to groups within the team.
- Only the team founder can control administrator status for the team itself.
There is a mechanism for BOINC-wide teams that are automatically created on all projects that use BOINC Basics.
- With the exception of BOINC-wide teams, everything is per-project. It might be nice to unify things so that, e.g., a user has a single profile that spans all the projects he belongs to.