Javelin

Context

Different people like to communicate in different ways. Some people love USENET, others much prefer a web interface, yet others are a fan of more 'event-based' systems like mailinglists.

Goal

Javelin is (a design for) a discussion system that allows users to take part in one discussion though the interface that *they* prefer. It should be possible to add new interfaces relatively easily. Right now we're targeting 3 interfaces:
  • an interface that looks like a mailinglist
  • an interface that looks like an NNTP (as used on USENET) server
  • an interface that looks like a web forum.
Sugar might be:
  • output-only RSS interface
  • non-web-based client/server interface

sf.net project page

Overview

The message data is stored in a central database, that can be directly read by the interfaces. A set of tools/libs, called the 'Core', should be used to manipulate the database. This 'Core' makes sure that, for example, when a message is posted to the web forum, it is also sent out to the mailinglists.

Terminology

For the time being, one installation of Javelin maps exactly onto one mailinglist in use. In the future, this might be extended, to allow for multiple lists (e.g, developer and user) on one Javelin-installation. Those lists would map onto seperate newsgroups or onto seperate web forum 'categories'.

About Groups: there is always a 'general' group. Messages coming in over the mailinglist go into that group by default. Later, moderators should be able to move threads to other groups (but not other lists).

The Database

In the database, a message is stored in 'rich text'. The core has API calls to convert rich text to plain text. Currently, there is no difference between 'rich text' and 'plain text', this is a feature for later.

The current database layout design is here (in CVS).

Overview

Status

See that Status page

Links/references:

Regarding the whole system

For the nntp plugin

For the mail plugin:

Comparisions

Javelin might sound a lot like GMane. I find it hard to say why, but I never really liked the feel of GMane. It might be because it clearly favours NNTP whereas I think the interfaces should be equally important. Maybe it is because GMane thinks Big. Javelin is aimed to simply having one installation per project, where a 'project' could be pretty big. GMane is aimed at serving hunderds of big projects on one installation. Both have their pro's and con's, we can happily live together.