PieBasicConcepts

Basic Concept

Many of the latest content management systems of the Wiki family bristle with sophisticated features, bells and whistles, that help to place this particular piece of software in the lead and ahead of its competitors. Some of these functions are even helpful, or at least can be considered nice to have.

Pie claims to be different. Pie has been developed and written from scratch with its primary directive being simplicity, speed and efficiency, while still being easy to comprehend (both, from a user's as well as from a developers perspective). Being easy to take in, Pie proves to be adaptable and extendable.

Interpreter vs. Compiler

Many of the latest derivatives of the Wiki clan (those that are almost able to cook coffee) lack performance in every-day use, even when run on fast web servers. The reason for this is not a lack of programming skills of its creators, of cource, but that fact that these implementations almost always interpret the sources of their pages at run-time. While this approach provides authors and users with an almost infinite amount of options of how to manipulate the output when and while being requested by a user, it certainly costs precious CPU-cycles at the very moment of request. Readers have to sit and wait.

This is where Pie tries to make a difference.

Pie does not try to cache pages it has once generated as do some of its more sophisticated cousins, but refrains from interpreting page sources at run-time at all. Instead, it compiles your page once you enter it, furthermore just conveying the precompiled output to the reader.

No doubt, this approach prevents Pie from being able to provide its users with all kinds of features that only could be offered if its pages were interpreted at run-time. It also lacks flexibility and adaptability in regard of automatically reformatting its output once alterations are made on a system-wide basis. But this is a toll Pie is gladly willing to take for the sake of efficiency.

To understand why run-time interpretation so terribly slows down the delivery of a page you have to keep in mind that it not only involves PHP-code (Pie is entirely written in PHP) to be interpreted and executed, but numerous regular expressions to take place. Due to their very nature, regular expressions take quite some time to be compiled and executed, and even fractions of microseconds easily add up to seconds and more while just a single document is being processed, regardless of the underlying code libraries' effectiveness and efficiency.

Given the WORM-scenario (write once, read many), a paraphrasis that describes the fact that pages are usually rarely changed and updated, but often read, Pie chooses to (pre-)compile its pages to be able to instantly send the result to the reader once a page is requested. Doing so, Pie tries to get rid of the run-time compilation dilemma once and for all. It's that simple.

For those who still demand a CMS to be able to provide dynamical, run-time generated output of some sort, Pie offers possibilities to tackle this task, too. Still, these features are more or less restricted to the inclusion of arbitrary PHP-code at the beginning and the end of a document. The actual page contents are static once they have been compiled.

Pie's primary design goal was to run fluently on its creator's sedate 75 MHz web server and still deliver output at a considerable rate. At least on that score, it has succeeded, performing smoothly in every-day heavy-duty use.

Simplicity

Pie claims to be easy to understand. This not only covers the web-based user interface where most Wiki derivatives really do not differ that much, but also its code base. Pie's code, being (to a certain extend) highly modular, should be easy to learn, understand and extend for most programmers - which leads straight to the next topic:

Extendability

Programmers should find themselves in the position of having little or no difficulty to extend Pie in whatever direction and for whatever purpose.

[ Seite drucken ] [ nach oben ]
Zuletzt bearbeitet am 2005-07-25 14:56 von .
Ausgegeben in 0.0136 sec