The following is a requirements document for the Bulletin Board
(Bboard) module written by Philip
Greenspun. The Bboard module enables community members to communicate
by posting questions and answers online. This document is for ACS 3.x
version of the module.
This module combines benefits of the two most popular traditional internet
applications: newsgroups and mailing lists. Newsgroups are
good for public discussions but have a disadvantage of having to check
them on a regular basis in order to see whether somebody answered your
question. Mailing lists have the advantage that participants
in the discussion get alerted immediatelly but the audience is limited
to the people who have subscribed to the list.
As it is a database-backed web application, with the Bboard module every new
posting goes online immediatelly (even faster than on USENET where
there is always a delay) and all participants in the discussion get
instant email alerts. Furthermore all the messages are stored forever
and full-text intdexed.
The version of the Bboard module described here works only as a part of
ACS 3.x. As it is one of the first ACS modules it doesn't use many kernel
services - actually just user-groups for determining who is allowed to
use and administer a particular forum.
Perry Photographer wants to learn about using filters in
black and white photography. She posts a question in the photo.net
Forum. Her posting immediatelly triggers a keyword email alert to Fany
Filterer who is an expert on filter issues. Fany visits the photo.net
website and posts an answer. Her answer triggers a thread email alert
to Perry. At the same time, as her answer contains the word "tripod" it
triggers the email alert to Tom Tripodlover...
Nick Novice has the same question about filters
Perry posted some months ago. As he is not aware
that the question was already answered he clicks on the Post
a New Message link. There he is asked to use the search function
to see if his question has been asked and answered before. He enters
"filter black white" and finds Perry's thread. As he is happy with the
answer he doesn't post the same question again.
Marc Moderator visits the admin interface and notices that Joe Loser
has posted the question "Should I buy the cheap Nikon 70-210 zoom,
the cheaper Nikon 80-200 zoom, or the Sigma or Tokina equivalent?".
As it is against the forum policy to ask such questions Marc deletes
the posting and uses the system built-in feature to send email to Joe
explaining why his posting was deleted.
10 Bboard Messages
10.10 Bboard messages have a unique identifier.
10.20 Every message has zero or one parent messages. If a message
has no parent messages it is the beginning of a thread.
10.30 Every message belongs to one forum.
10.40 A message may have a category associated with it.
10.50 We keep the IP address of the client who posted the message.
10.60 Only registered users may post messages and we store the
user_id of the poster.
10.70 Every message has a short one line description.
10.80 Every message has an arbitrary long body.
10.90 For each message we store whether it is in HTML or plain text.
10.100 We keep the posting time of each message.
10.110 A message may have an expiry date.
10.120 A message may have a numeric interest level.
10.130 A message may have a custom, forum-dependent sort key.
10.140 A message may be marked as urgent by the user.
20 Bboard Forums
20.10 Bboard forums (also called topics) have a unique identifier.
20.20 Forums have unique names.
20.30 A forum's read policy can be one of the following:
- Anybody can read it, even unregistered users
- Only registered users can read it
- Only users who belong to a particular group can read it
20.40 A forum's posting policy can be one of the following:
- All registered users can post
- Only registered users who belong to a particular group can post
20.50 A forum can be set up so that only administrators can initiate threads.
20.60 A forum can have a URL associated with it to provide backlink possibility.
20.70 It is possible to provide backlink title (usually the title of the linked page).
20.80 One user must be designated as primary maintainer
20.90 The subject line displayed in a list of postings is customizable
so that the forum maintainer may decide which of the following information to display:
- poster's name
- poster's email address
20.100 It is possible to turn on and off whether the system sends the
maintainer email when a new posting is added
20.110 The message displayed to the user before he posts something is
customizable for each forum.
20.120 A forum may have a moderation policy which can be used for presenting
the list of forums in a more organized way
20.130 A forum may have a policy statement which is displayed to the user when
he clicks on the About link.
20.140 It is possible to specify whether the forum should by default be presented
in a threaded or Q&A (question and answer) interface.
20.150 For the Q&A interface it is possible to specify whether messages should
be sorted in ascending or descending order when default sort (by date) is used. For custom
sort key order see 20.260 below.
20.160 It is possible to turn on and off categorization for a particular forum.
20.170 It is possible to turn on and off categorization for a particular forum.
20.180 It is possible to specify the number of days a message is considered new
in the forum.
20.190 It is possible to specify whether users are asked to categorize their
20.200 It is possible to specify whether user is allowed to define a new category
to categorize his posting.
20.210 It is possible to specify whether the interest level system should be used in
20.220 It is possible to specify whether to show all new messages on the front page
or just categories.
20.230 It is possible to specify whether the custom sort key (see 10.130 above) should
20.240 It is possible to give a name to the sort key from 20.230 for display purposes.
20.250 It is possible to specify the Oracle data type for the custom sort key.
20.260 It is possible to specify whether the custom sort key should be used in ascending or descending order.
20.270 It is possible to specify whether the user is asked to solicit the sort key himself.
20.280 It is possible to specify whether the user should enter the custom sort key in a "pretty" format.
For example, if the custom sort key is a date it may make sense to solicit it as "Fall 1997" instead of 97-09-29.
20.290 It is possible to specify an explanation to be displayed to the user when asked to enter the
sort key in a "pretty" format.
20.310 It is possible to specify a fragment of Tcl code that
evaluates to 0 if the user-entered sort key is bad, 1 if OK.
20.320 It is possible to specify whether the forum is category-centric, which means that every message
must be categorized.
20.330 It is possible to specify whether the forum should accept attachments to messages (file uploads).
20.340 It is possible to specify whether attachments are images (to be displayed inline), files (to
be offered for download) or both.
20.350 It is possible to activate/deactivate the forum.
20.360 If the forum is group-private it is possible to specify the group it belongs.
30 Bboard categories
30.10 It is possible to associate a simple list of categories with each forum.
40 Bboard bozo patterns
40.10 It is possible to prevent usage of specific words or
phrases by specifying regexp patterns. Each forum has its own list of patterns.
40.20 It is possible to specify whether the one line description (10.70), the body (10.80) or both
should be tried against the patterns to determine whether to reject the message. This can be different for
40.30 When a posting matches the forbidden pattern the user is presented with an explanation why
his message has been rejected. This explanation can be different for each bozo pattern.
40.40 We store information on when the bozo pattern was created.
40.50 We store information who created the pattern.
40.60 It is possible to enter a comment describing the purpose of each pattern.
50 Bboard forum email alerts
50.10 Each user can set an arbitrary number of email alerts on each forum
50.20 Each email alert can be either instant, daily, Monday/Thursday, weekly, etc.
50.30 For each alert user can specify a list of keywords. The allert will fire only
if at least one keywords matches.
50.40 Each alert can be turned on and off by user.
60 Storing the information about the last forum alerts
Whenever we send a weekly, daily or monthly forum alert we update the following information:
60.10 The time we sent the last weekly alert
60.20 The number of emails sent with the last weekly alert
60.30 The time we sent the last daily alert
60.40 The number of emails sent with the last daily alert
60.50 The time we sent the last monthly alert
60.60 The number of emails sent with the last monthly alert
We don't keep the full history information, just the last time.
70 Bboard thread email alerts
70.10 Each user can set one alert on each thread. The alert is
set automatically if the user has contributed in the thread. The alert
fires whenever a new message is posted in the thread.
80 Bboard uploaded files
It is possible to upload a file with each bboard message
(if the forum is set up to accept uploaded files - see 20.330 above)
80.10 Every uploaded file has a unique ID.
80.20 Every uploaded file is associated with one bboard message.
80.30 We store information about whether the file is a photo or other kind of a file.
80.40 We store information about original three-letter extension the file had on the client machine
(e.g. jpg, gif, png).
80.50 We store the file size.
80.60 We store the full name the file had on the client machine.
80.70 We store the name the file has on the server.
80.80 For images, we store the caption to display when we show it inline.
80.90 For images, we store the filename of the thumbnail image on the server.
80.100 For images, we store the original height and width.