Notebook @ Functorial Instiki content structure

By David A. Tanzer

Preamble

Instiki is a no-fluff multiweb wiki designed for mathematical content sharing, with support for Markdown, Itex, SVG and TikZ.

Structure of Instiki

An Instiki wiki is an installation that consists of a collection of webs.

Each web is a set of pages, organized into a namespace. Informally, think of a web as a collection of pages that work together for a specific project, purpose or context.

All the pages in a web share the following structure:

• Home page

• Category schema for pages

• Color and styling of pages

• Menu bar functions

• Home link
• All pages
• Recently revised
• Search bar
• Password, which if specified is required to view or modify pages

• Publication web. A published web is a public, read-only view of a password protected web.

Illustration

Suppose that we have webs $A$ and $B$, with respective pages $a_0,a_1,a_2,a_3$ and $b_0,b_1,b_2,b_3$, where $a_0$ is the home page for $A$ and $b_0$ is the home page for $B$.

Suppose these pages are categorized as follows:

• $a_1, a_2: w$
• $a_3: x$
• $b_1, b_2: y$
• $b_3: z$

Note: multiple categorizations may be applied to one page.

Home button: for pages $a_1,a_2,a_3$, the home button points to $a_0$, and for similarly for $b_1,b_2,b_3,b_0$.

All pages: for pages in $A$, all pages presents a listing with hyperlinks for all pages in $A$. In addition, category links are shown for $w$ and $x$. Clicking on these filters down the list presented. Similarly for $B$, with categories $y$ and $z$.

Recently revised: for pages in $A$, this shows the list of revisions to $A$, with the most recent changes on top. This is a very useful way to quickly find pages that you are actively working on.

Search bar: for pages in $A$, the search bar only returns pages in $A$, and similarly for $B$.

Page creation: new pages created in the context of $A$ will always get added to web $A$.

Note: the page creation mechanism is somewhat indirect, and doesn’t appear as an explicit option on the menu. For details see this note.

Observations

As the above example shows, in the default state of the wiki, $A$ and $B$ are each “connected” sets of pages, which are totally disconnected from each other. Once a link leads to you the home page for $A$, all operations that you will then perform will keep you to pages in $A$ - you would have no idea of the existence of the pages in $B$.

Category tags are written ad hoc. However, because the category links in All-Pages show only the categories used in that web, this implies that the categories used in a web can be meaningfully considered to be part of the “virtual schema” for the web.

For an example of a web with lots of categorized pages, here is the all pages listing for the Azimuth wiki.

Linking mechanisms

Although each webs is a separate page space, the pages can still be connected using an interweb syntax:

• [[webname:pagename]] produces a page link.

• [[!include webname:pagename]] includes one page within another.

If webname is omitted, it defaults to the current web.

Interweb inclusions create new possibilities, particularly when the included page comes from a read-only web:

• For public-access webs, a companion read-only web can be created to hold administrator controlled pages. A prime example of this is the home page. The home page can be created maintained in the administrator’s web, and the home page of the public web can just contain the line [[!include adminweb:HomePage]].

• For multi-author situations where authors want to maintain control of articles, written in their voice, a password-protected web can be created for each author. Then in the public wiki, pages can be included from various author webs, individually and as needed.

Note: for locking down the home page, there still remains a loophole, which is that an unfriendly agent could still change the homepage to something other than the interweb inclusion statement. This can be remedied by totally locking down the home page, after the interweb include has been saved to it. A page can be totally locked down using .htaccess to block access to the URL used to save it.

One add a navigation panel to pages, which shows up at the top-right. This can contain links to key pages in the web, as well as links to the home pages of other webs.