<html>
<head>
<title>ACS Messaging & BBoard Design Document</title>
</head>

<body bgcolor=white>

<h2>ACS Message & BBoard Design Document</h2>
by Anukul Kapoor

<hr>

<h3>I.  Essentials</h3>

<ul>
<li>User directory: <a href="/bboard/">/bboard/</a>
<li><a href="requirements">Requirements document</a>
<li>Data model: <a href="/doc/sql/display-sql?url=bboard-create.sql&package_key=bboard">bboard-create.sql</a><br>
<a href="/doc/sql/display-sql?url=acs-messaging-create.sql&package_key=acs-messaging">acs-messaging-create.sql</a>
<li><a href="acs-messaging-and-bboard-dm.gif">Data-model diagram</a>
</ul>


<h3>II.  Introduction</h3>

<p><code>bboard</code> is an ACS application package built to provide
scalable discussion forums to a community of users. As in older
versions, <code>bboard</code> provides:
<ul>
<li>posting, browsing, and reading of messages in discussion forums
<li>tools for moderators to maintain editorial standards
<li>categorization and retrieval for knowledge management
</ul>

The initial 4.0 implementation adds the following new features:

<ul>
<li>fully templated presentation layer for easy customization
<li>improved access control on bboard operations to support a wide
variety of publisher policies 
<li>support for multiple distinct configurations of the bboard package
(e.g. different forums and options at http://foo.com/bboard/ and
http://foo.com/pittsburgh/bboard/)
</ul>
</p>

<p>The ACS 4.0 version of <code>bboard</code> is a re-engineering of
the data model and presentation layer without certain capabilities
present in the ACS 3.4 bboard.  In future releases we intend to
achieve the same level of maturity as the older <code>bboard</code>
while building on the flexibility of the new design.</p>

In particular this implementation (9/2000) does not include the
following features found in prior versions:

<ul>
<li> support for expiring messages
<li> facilities for spamming dynamic classes of bboard users
<li> bboard messages with rich media attachments
<li> email alert functionality
<li> full text messages searching
</ul>

<p><code>bboard</code> is <em>not</em> intended to be the ultimate
customizable web based discussion system.  It is intended to be a
practical and useful system that supports forums much like the
photo.net Q&A forum.  Publishers with special needs are encouraged to
implement their solution as a module, much like bboard, built atop the
framework <code>acs-messaging</code> provides.

<p><code>acs-messaging</code> is a general purpose component that
provides threaded messaging services to higher level applications such
as <code>bboard</code>.  The motivation is to provide a base level
data model and reusable presentation code that enables the rapid
customization of messaging applications.  acs-messaging is intended to
simplify modules like <code>general comments</code> and
<code>webmail</code>, as well as specialized messaging applications
such as <a href="http://www.scorecard.org/">scorecard</a>'s geospatial
bboard.  Such a framework keeps custom organizational metadata,
pageflow and navigation, and publishing and moderation policy separate
from the basic tools needed for discussion.</p>

<h3>III.  Historical Considerations</h3> 

Over the course of ACS development, <code>bboard</code> has grown to
encompass a wide variety of functionality.  Much of this functionality
was developed first for <code>bboard</code> and only later adapted
into more general mechanisms (e.g. alerts, security, group scoping,
etc.,).  However <code>bboard</code> wasn't refactored to take
advantage of the more general facilities, and its complexity
challenged those in need of custom features.  Furthermore there was a
lot of ad hoc mechanism in both the data model and page flow to
support different presentation styles, navigation schemes, and access
control models.  Although this <code>bboard</code> proved to be
useful, scalable, and reliable, the ability to maintain and extend
this code suffered.</p>

The ACS 4.0 release of bboard mimics the basic functionality of older
<code>bboard</code> versions but built atop new ACS 4.0 general
mechanisms (objects, persmissions, templating, acs-messaging,
etc.,). </p>.

<h3>IV.  Competitive Analysis</h3>

An analysis of the bboard feature space should be added here.

<ul>
<li> USENET a la gnus
<li> slashdot
<li> Userland
<li> ????
</ul>

<h3>V.  Design Tradeoffs</h3> 

<p>How does one reconcile all the possible discussion forums mentioned
above into a single module?  One does not!  <code>bboard</code> is
precisely one way to implement a discussion forum and should not be
all things.  In time, there should be a toolkit of components (user
interface, data model, and procedural) for developers to assemble
their custom.</p>

<p>Although many of the entities in the data model are implemented as
subtyples of ACS object, we avoid using information from the ACS
object table for anything but auditing purposes.  For example, we
could store a message's author in the ACS object creation_user field,
however to keep query performance in line we rather use the author field
in acs_messages.</p>

<h3>VI.  API</h3> 

<p>As of the initial ACS 4.0 release, <code>acs-messaging</code> and
<code>bboard</code> do not provide well defined programming
interfaces.  </p>

<p>Although convenience functions will be provided for basic
transactions on the <code>acs-messaging</code> and <code>bboard</code>
entities, it remains to be seen what sort of abstraction layer is most
appropriate.</p>

<h3>VII.  Data Model Discussion</h3>

<p><code>acs-messaging</code> defines the view
<code>acs_messages_all</code> for the storage and access of threaded
text messages and assorted information relevant to their display,
access, and creation.  Under the covers <code>acs-messaging</code> use the
content repository for underlying storage.</p>

<p><code>bboard</code> uses <code>acs-messaging</code> messages, and
organizes them into forums and categories.  For the purposed of the
ACS permissions system, forums contain messages, and so any
permissions on a forum will default to being inherited for individual
messages.</p>

<p>A forum may be designated as moderated, in which case explicit
approvals or denials are stored in the
<code>bboard_message_moderation</code>.  Messages without entries in
the moderation table are considered unseen, and will be displayed or
hidden in moderated forums based on policy.</p>

<p>Each forum may have some number of categories, tags denoting further
specialization within a forum.  Messages of a forum may be tagged as being
in any of the categories pertaining to that forum.</p>

<h4>Permissions</h4>

Permissions in ACS 4.0 involve 3 interrelated hierarchies: users &
groups, objects, and privileges.  The user and group hiearchy is
generally explained elsewhere.

The short explanation:<p>

The long explanation:<br>

BBoard defines the following permissions:
<ul>

<li> nested under the create permission:
<li>   bboard_create_forum
<li>   bboard_create_category
<li>   bboard_create_message
<li>
<li> nested under the write permission:
<li>   bboard_write_forum
<li>   bboard_write_category
<li>   bboard_write_message
<li>
<li> nested under the read permission:
<li>   bboard_read_forum
<li>   bboard_read_category
<li>   bboard_read_message
<li>
<li> nested under the delete permission:
<li>   bboard_delete_forum
<li>   bboard_delete_category
<li>   bboard_delete_message
<li>
<li> nested under the moderate permission:
<li>   bboard_moderate_forum
</ul>

<h3>VIII.  User Interface</h3>

<h3>IX.  Configuration/Parameters</h3>

<h3>X.  Acceptance Tests</h3>

<h3>XI.  Future Improvements/Areas of Likely Change</h3>

<p>Much of the functionality of the ACS content repository will
eventually provide tangible benefits to <code>bboard</code> and any
<code>acs-messaging</code> application.  Foremost among these features
will be full text searching and rich media attachments.</p>

<p>When ACS provides a general mechanism for an installation to send and
receive email, <code>bboard</code> can provide email alerts and
email based reply and post.</p>

<h3>XII.  Authors</h3>

<a href="mailto:akk@arsdigita.com">Anukul Kapoor</a>

<h3>XIII.  Revision History</h3>

<table cellpadding=2 cellspacing=2 width=90% bgcolor=#efefef>
<tr bgcolor=#e0e0e0>
    <th width=10%>Document Revision #</th>
    <th width=50%>Action Taken, Notes</th>
    <th>When?</th>
    <th>By Whom?</th>
</tr>

<tr>
   <td>0.1</td>
   <td>Creation</td>
   <td>09/01/2000</td>
   <td>Anukul Kapoor</td>
</tr>
<tr>
   <td>0.2</td>
   <td>Revision</td>
   <td>09/19/2000</td>
   <td>Anukul Kapoor</td>
</tr>


</table>

<!-- notes for writing

different organizations of discussion messaging (general comments, webmail, different bboard implementations) -> acs messaging with bboard layer above

inconsistent 'new' messages behavior -> read-thread-user-map

inconsistent alert and email behavior -> centralized alerts and email processing

fully templated for flexible presentation
and simple interface for 

acs-messaging aims to provide:
 centralized storage, searching of message threads
 generalized integration with email messaging
-->

<p>

<hr>

<a href="mailto:akk@arsdigita.com">akk@arsdigita.com</a>

</body>
</html>