Threads Server Project

This is the wiki of the Threads Server Project.

Description of the project

This project aims to put in practice an abstraction that has been known for some time now, the one that brings together blogs, wikis, chat rooms, etc : they're all threads, they only differ on permissions and display format.

The server will be modular. Its core built around the abstract principle of threads will make it quite different from usual servers designed for a specific protocol. The different I/O protocols (HTTP, SMTP, XMPP, etc) and formats (HTML, etc) will all be implemented in modules.

Another goal is to support a wide variety of use cases, from a small static site to a big multilingual community, and thus be both lightweight and scalable. To achieve this goal an important feature is a caching system that keeps track of dependencies in order to know what needs to be regenerated after each change.

The concept of threads

A thread is a message, to which other messages can be attached. In other words, a thread is a recursive container of messages.

Each message has a type, defining what kind of data it stores. It can be as simple as a single free-form text field, or as "complex" as multiple fields of different types.

Each type of message has different permissions (e.g. read/create/modify) and different rendering.

Status

An implementation named Hats (Haskell Thread Server) is currently being written. If you have questions or want to help, join us in the XMPP chat room tsp@muc.changaco.net, using a Web interface such as muckl or Jappix if you don't have a native client.