Urlan-Meeting Design Document

1   Name Brainstorm

Urlan-Meeting
Urlan-Connector
Urlan-Forum
FilterForum
SmartForum
Forum-S
Chatum
Chat-o-matic
Shady Glade
Sunny Glade
GroupThink
PowWow

2   Overview

This is a distributed collaboration tool which is a combination of live chat and message forums.

3   Features

  • Notification on desktop (taskbar).
  • Persistent chat/threads which can be viewed offline.
  • Dynamically organized forums (Drag-n-drop from chat to threads).
  • Anyone can run a server.
  • Documented protocol allowing for many client implementations.

4   Programs

4.1   Server

Command line only tool.

4.2   Client

The client can start a new server.

A server administration tool is built into the client.

4.3   Web Log

This is a separate script which allows web browsing of the database (like an email list archive).

5   Development Timeline

  1. Database
  2. Login
  3. Chat
  4. Multiple Forums
  5. Topics
  6. Security issues (encryption, etc.)
  7. Document protocol
  8. Web log script

6   Classes

6.1   Association

name
about
admins
accounts
forums

6.2   Account

id
login
password
full-name
email

6.3   Forum

id
name
posts
topics

6.4   Topic

id
name
posts

6.5   Post

account
date
text

7   Database

The database is stored in the filesystem.

7.1   Files

db/
    association
    passwd
    forum-index
    forum.01/
        posts
        topic-index
        topic.01
        topic.02
        topic.03
    forum.02/
        ...

7.1.1   association

name: "Urlan"
about: {The Urlan Project.  Visit http://urlan.sf.net}
admin: [0 1]
accounts: [
        [0 jane "Jane Doe" "jane@somewhere.com"]
        [1 joe "Joe Rocker" none]
        [4 jim "Jim Wright" "jwright@place.org"]
]

7.1.2   passwd

Passwords are stored separately so that the association file can be freely shared.

0 asdfalsk
1 es3328
4 uj-RRql

7.1.3   forum-index

Records the forum id, name, and editors for each forum.

1 "Orca" all
2 "Thune" all
3 "Private" [0 1 4]

7.1.4   posts

This is the date, account id, and text for each post in the forum.

Dec-01-2006/01:30:00 0 "First post!"
Dec-01-2006/01:31:00 4 "Jim here"
Dec-01-2006/01:31:05 1 "This is Joe"
Dec-01-2006/01:31:05 0 "What about unicode?"

7.1.5   topic-index

Quick access list of topics.

1 "Chat"
2 "Time Storage"
3 "Unicode support"

7.1.6   topic.01

Topic files are simply an array of post ids.

[0 1 2 3]

7.2   Database Commands

  • mk-account <user> <name>
  • passwd <user> <pass>
  • email-addr <user> <addr>
  • mk-forum <name>
  • mk-topic <forum> <name>
  • rm-topic <forum> <topic>
  • post <account> <time> <forum> <topic> <text>
  • cp-post <forum> <post> <topic>
  • rm-post <forum> <post> <topic>

8   Protocol

Direction Message
S -> c challenge
c -> S login <user> <passwd>
S -> c welcome
S -> c barred
S -> c posted <account> <time> <forum> <topic> <text>
c -> S post <forum> <topic> <text>

8.1   Syncronization

Client gets a copy of the database (without passwords).