why the universe may be infinite and limited at the same time

PPP is a recursive acronym for Pike PSYC PPP or Prosperous PSYC PPP or Ponylike PSYC PPP etc. This acronym is meant to reflect the contrast between reality and perception in software development.

PPP also stands for Paranormal Perception Protocol - a messaging protocol unlike PSYC.

PPP also stands for PPP is not a PSYC Server.

why the movement of red blood cells is mistaken for life

PPP is written in Pike which is a driver driven programming language and a modern derivative of LPC. The motivation to start working on PPP was to get familiar with Pike but very soon we realized PPP could in some applications be the perfect replacement for psyced overcoming its conceptional weaknesses and the limitations inherited from LPC. The current version of PPP is basically a Server for a flexible text based messaging protocol with a simple TELNET interface and XMPP support on the way. In principle reusable parts of the source code are intended to be flexible enough for any application (remember, almost everything is a broken dildo!)

There are several purely theoretical concepts of flexible text based messaging protocols that have not yet been implemented which we try to apply and find out how well they perform in practice. psyced and PPP do not interoperate right now. Some changes in both psyced and PPP were planned for the near future to make them talk to each other, however that turned out to be mostly wishful thinking. Multicast signaling is totally different in PPP (flexible bottom-up subscription instead of implicit context slaves) and even the protocol syntax does not intend to be PSYC compliant. Interoperability is always an option but I don't see reason for that right now.

fortunately this world is not that simple

PPP is not a PSYC server but rather a framework for chat applications. A Server class is included and would be a good thing to start from. Adding functionality happens inside objects representing PSYC entities (rooms, persons, clients etc.) using the Handler Framework. It allows one to write special PSYC applications in a plug-in like way. There is no HOWTO available yet, but looking at those Handlers currently available should give you a good idea of whats possible: PSYC.Handler. Object storage is done asynchronously. There are different types implemented right now: [1]. If you need something else than flat file storage, go ahead and implement the Storage Interface for the database you like.

If you decide to use PPP as a PSYC server tomorrow, you will probably be disappointed by the lack of features and the fact that PPP is not a PSYC server. A lot of work will have to be put into it and we hope the modularized design will encourage people to do it. You don't have to understand how the engine functions to change a tire!

An almost complete documentation of the library that PPP is can be found either inside the source code or at [2].

PPP comes with a BSD-like license. It is available to everyone via GIT at

git clone

but the current version uses its own incompatible dialect of PSYC.

For a fork of PPP which speaks the old PSYC syntax compatible to psyced, check out pikepsyc.


this pseudo uml scheme shows the way a message travels inside the server (local delivery only)