Classifieds Module Design

by Curtis Galloway

I. Essentials

II. Introduction

The classifieds module provides a mechanism for posting user-contributed content that may be categorized, and which is unrelated to static content. In the most common case, it can be used for advertisements in the form of newspaper classified ads. Items can also be offered in an auction format, where users bid successively higher prices until the auction closes.

However, the classifieds module could also be adapted for the following applications:

The classified ad system has been in use at photo.net since 1996 and has processed over 100,000 ads.

Also worthy of treatment in this section are the following issues: Note that it is entirely possible that a discussion of what a system is not intended to do might differ from a discussion of future improvements from which the system might benefit.

See Chapter 3: Scalable Systems for Online Communities from Philip and Alex's Guide to Web Publishing, and Chapter 13 of How to be a Web Whore Just Like Me by Philip Greenspun for more detail.

III. Historical Considerations

When designing a software solution to meet the constraints of a fixed set of design requirements, it is almost always the case that many possible mutually exclusive solutions are given consideration. Although eventually only one solution is implemented, a discussion of those alternative solutions canvassed during the software design process, with special attention paid to the reasons for which these alternative solutions were rejected, should ultimately prove quite helpful to future developers and will help ensure that no time is wasted on the analysis of problems already solved.

IV. Competitive Analysis

Although currently only a few system documentation pages contain a discussion of the features of software which competes with the ACS system at issue (e.g., chat, portals), this should be an essential feature of the documentation for any system for which there exists competing software.

Note that such a discussion need not be coextensive with a discussion of a system's potential future improvements.

V. Design Tradeoffs

No single design solution can optimize every desirable system attribute. For example, an increase in the security of a system will entail a decrease in the simplicity of the system interface, and an increase in a the flexibility of a system typically entails a decrease in the simplicity of the structure of that system. As a result, a developer must decide to put a higher value on some attributes over others. This section should include a discussion of the tradeoffs involved with the design chosen and the reasons for this choice. Some areas of importance to keep in mind are:

VI. Data Model Discussion

The data model discussion should do more than merely display the SQL code for creating the relevant tables and sequences; this information should already be readily accessible via a link in the "essentials" section of the documentation. The discussion should constitute a high-level treatment of the primary entitites and main transactions relevant to the data model.

VII. Legal Transactions

This section should include a discussion satisfying each each of the following points:

VIII. API

This section should include a discussion of the particulars of the database API used to provide an abstraction barrier between the system code and the underlying core software, typically so as to help minimize unnecessary repetition in the system code. Although this information may be covered in more general detail in other sections of this document, this section is the appropriate place to discuss the details of each of the procs employed in the development of this system, including each of: Historically, the relevant procs have been encapsulated in a TCL file, however the current engineering effort encourages developers to avoid this practice. Also noteworthy is that although the ACS currently utilizes the AOLserver Tcl API, the current drive towards Java is likely to effect a change in the content of these sections in future instantiations.

IX. User Interface

This section should offer a discussion of any user interface considerations relevant to each of the three classes of intended system users:

In order that developer documentation be uniform across different system documents, these users should herein be designated as "the developer", "the administrator", "the sub-admin", and "the user", respectively.

Note that as our templating system becomes more robustly entrenched within the ACS, the details within this section are likely to shift from UI specifics to template interface specifics. Areas of interest to users:

Areas of interest to developers:

X. Configuration/Parameters

Via the ad.ini file, you can enforce a lot of publishing decisions, e.g., "don't allow anyone to mention eBay" or "how many bids does an ad have to get in order to be considered a hot auction?"

[ns/server/yourservername/acs/gc]
SystemName=Classifieds
; SystemOwner=  (defaults to global system owner)
PartialUrlStub=/gc/
ProvideLocalSearchP=1
ProvideEmailAlerts=1
; send a reminder to people to edit or delete their ads?
NagAdOwners=1
HowManyRecentAdsToDisplay=5
HotAuctionThreshold=2
; some stuff to deal with annoying photo.net abusers
; don't let people put the word "reduced" in subject line
DisallowReducedInSubject=1
DisallowExclamationPointInSubject=1
DisallowAllUppercase=1
DisalloweBay=1
IncludeBannerIdeasP=1
IndexPageDecorationTop=
IndexPageDecorationSide=
DomainTopDecorationTop=
HotAuctionsDecoration=
PlaceAdDecoration=
PlaceAd2Decoration=
EditAd2Decoration=
AddAlertDecoration=

XI. Acceptance Tests

You should test setting up a domain, posting/editing and ad, alerts, hot auctions and searching.
Suggested Method:

XII. Future Improvements/Areas of Likely Change

If the system lacks features which would be advantageous in the long-run, this should be noted here. Also noteworthy herein are ease-of-use considerations (e.g., UI and/or templating issues) not necessarily involving a system feature.

Note that a careful treatment of the earlier section entitled "competitive analysis" greatly facilitates the carrying out of the present section.

XIII. Authors

Although a system's data model file often contains this information, this does not hold true in general. Furthermore, data model files have often undergone substantial revision, making it difficult to track down the system creator from this information. Complicating matters, system documentation occasionally is authored by people not directly involved in the system creation process. Regardless of whether or not system ownership can be determined by appeal to these files, new system users should not be subjected to such a search simply in order to have access to some basic information about the history of system, such as system origin. Thus a mail link to the following should be included in each developer document:


curtisg@arsdigita.com

Advertisements