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
- Database
- Login
- Chat
- Multiple Forums
- Topics
- Security issues (encryption, etc.)
- Document protocol
- 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.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).
