:: design goals

In drafting an architecture for the memiki network, its designers considered the following criteria:

:: initial implementation

Our first pass at the servent daemon was accomplished in Linux, and is now complete and ready for download. For CVS access, see our SoureForge page.

Development language - For the sake of shortest possible development cycle, and for reasons of portability, we have made Perl the language of choice, Other languages considered included C++ and Java but due to a vibrant Perl user community, and Perl's interpretive nature, which fits well with our open-source philosophy, the selection was clear and simple.

Daemon structure - The memiki servent is structured as a state machine, using the POE engine. This choice of architecture and the brilliance of the POE mechanisms have allowed us to leverage a tremendous amount of others' work in the way of drop-in components.

Daemon interfaces - Communications with the memiki servent occur over two protocols: HTTP and IRC. Queries are issued in standard formats, and results come back in plain-text files containing url-encoded data.

Network architecture - To communicate queries and resolve their resulting sources, memiki uses the Internet Relay Chat networks. This medium is ideally suited to the question-answer paradigm and thus makes an excellent carrier for memiki.

To retrieve the results, memiki uses standard HTTP calls, made directly, or through an anonymizer, to the box containing the results.

Developing front-ends - At present, the only front-end available is web-based. Our choice of using web technologies for our first client owes to the web's flexibility as it means that any machine with a browser is capable of connecting to and utilising the memiki daemon.

Application skins - To make the interface more exciting, the web-based front-end makes use of cascading style-sheets (CSS), allowing graphics designers to create new skins.

:: system features