|A WikiGenerator is a code base that is set up to provide:
Each layer conforms to an API which describes the layer's base functions and interactions with the other layers; this allows the developer and other adopters to extend the codebase easily, or to completely replace portions of the codebase with functionally-equivalent code.
- database-layer code providing basic page storage and revision management
- presentation-layer code that can get input and format output (base version assumes HTML/CGI)
- session-layer code which provides a means of storong both publicly-accessible and user-private data
- subprocess-layer code which provides a means to do long background or external processes as subprocesses (start-and-wait/start-and-forget/start-and-check)
- logic-layer code which provides basic features (edit/rename/etc.)