Enter a topic name to show or a new topic name to create; then press Enter
a description of the capabilities of the LynxWiki application included in the first release

First LynxWiki Release

The LynxWiki Project has reached the first release (2012-03-07)

First Release

LynxWiki is a full-featured wiki with all the capabilities of much larger and more well-known applications. Most of those capabilities are available in this applications initial release, while those that are missing will be added by end-March 2013. But LynxWiki has even more to offer than those other applications in that it also has an embedded scripting language, IronPython, that allows wiki authors, not just application programmers, to create executable scripts that run when a page is rendered.

LynxWiki supports read/write authentication and authorization. Indeed this page is only writable by the local wiki administrator. Individuals who would like to see changes, or comment on the topic's content can do so on the topic's discussion page, which is not restricted.

The amazing thing about LynxWiki is that the application has been brought to this point with just 20 programmer-days of effort. There will be an addition 4 days of effort in providing documentation to support the initial release. LynxWiki has drawn a lot from a similar .Net-based wiki, FlexWiki. LynxWiki has a different code-base and architecture, but re-uses much of the wiki syntax.

LynxWiki is an MVC 4 application using Entity Framework 5, LINQ, XDocument and numerous other newer .Net 4.5 technologies. LynxWiki uses Lucene.Net for text searching. The current file store uses the Windows file directory structure. The wiki document is stored as an structured XML file, with the raw wiki text, an intermediate representation based on a Wiki Object Model (WOM), and numerous other properties. Wiki integrity is assured by storing a separate version file for each new version. Responsiveness is achieved by also storing a separate current version. The processing of user input to visible web page has 3 distinct phases:

  1. Wiki text - raw user input in the wiki editor;
  2. Wiki Object Model - a pack rat driven parser converts Wiki text to XML;
  3. Transformation from WOM to HTML in 2 steps:
    1. Resolve dynamic elements at request time to WOM;
    2. XSLT transform to HTML5 output for display.

The pack rat parser uses rules read from configuration files. These rules can be added to or revised to support different wiki syntax or additional wiki elements. The various wiki text input formats supported are detailed in the links found at FormattingRules.

LynxWiki supports uploading of files, including images and documents. Images can easily be displayed in a topic and hosted in the same web server as the wiki. Documents can also be attached to topics and could also be hosted on the wiki web server. Executables are excluded from upload, and uploads are limited to 4 MB at this time. These capabilities need to be tweaked in the next month so that the exact specification is managed through web.config settings.

The IronPython based scripting is based on a DSL that provides wiki related capability and access to the data store repositories. Security is enforced by excluding the 'import' key word and restricting that to web.config settings so that the server owner has control of IronPython plugin extensions. The current version has only enough capability to verify the architecture, but it is easy to expose repository functionality already programmed, making it available for scripting.

Feature List

Scripting Capability Demo

A demo of the IronPython scripting capability (still limited) at this time is at TestPage

Version: 4   Revised: 2013-04-13 19:12:53 Last Updated by: Rename Show Links to Topic