SLP: Architecture concept for Wikis
A Wiki is a tool that manages data. Here are the three major functions:
Storage
Goal: Encourage WikiEngine authors to carefully isolate Storage, Linking, and Presentation
Reasons for separate Storage mechanism:
Are there tools other than Wikis that conform to a StorageLinkingPresentation (SLP) architecture?
I would add 'Parsing'. You have related defining the syntax for WikiNames to Linking and defining the syntax for markup to Presentation. I would argue that both of these activities are more closely related to each other, and are simply Parsing. Linking is then taking advantage of link information discovered during a parse (eg ISBN links, remote wiki links, WikiNames) and presentation is taking structure discovered during a parse and applying presentation logic to it (as XSL does for XML, for example).
There is an underlying assumption in some of your bulletpoints that the storage format for the wiki is the same as the edit format. This does not need to be the case. In the same way that you can restructure text for presentation, you can destructure text for editing using TextFormattingRules. However, for some edit clients you may wish to provide them with structured information so that they can perform WYSIWYG edits.
In a Wiki which stores in plain text format, parsing happens on retrieval; in a wiki which stores in a structured format but edits in plain text, the parse would happen on submission. (This is more efficient as the parse only happens once!) Either way, there would be a parsing phase. -- BrianEwins
See: