MediaWiki

WebDAV
There is a project to implement a WebDAV interface to MediaWiki. It is hosted in the Free Geek subversion repository: http://svn.freegeek.org/svn/mediawiki-webdav/

Drupal
There is a project to integrate Drupal with an existing MediaWiki installation: http://cvs.drupal.org/viewvc.py/drupal/contributions/modules/mediawiki/

Markup
After reading Aaron Swartz' essay on how to be more productive, I'm recording some notes on lightweigh markup languages.

I've used various wiki markup languages, with varying success. Because of the popularity of MediaWiki, MediaWiki markup is quite popular. There are some advantages to other lightweight markup languages like re structured text and markdown, contributed to by Aaron Swartz.

The structures all markups handle well are headings, ordered and unordered lists, emphasis / strong emphasis, block quotes. There are slight variations on list / heading etc. syntax between wikis, but it is generally possible to support multiple syntaxes at the same time, as does markdown. Using grammar based parsing for markup, it might be easy to dynamically combine various syntaxes.

Some markups invent new ways of expressing tables, which are usually not that readable. Since there are no real advantages to these markups over the HTML or LaTeX table markups, and because people may already be familiar with these markups, it's a mistake to invent new syntax for tables. Markdown is nice because it allows XML in the markup. This allows use of markdown when it's of advantage, and XHTML / MathML / SVG when there's no advantage.

In addition to embedding XML markup in lightweight markup, it is often desirable to embed non-XML markup in lightweight markup, for instance LaTeX, graphviz, dotty etc. markup. See the media2mult project. The challenge of embedding this markup is:


 * Delineating the markup. Possibly using XML CDATA section.
 * Identifying the mime type of the markup, so the correct processor can be used.
 * Adding attributes to the embedded block, such as CSS style describing how the block is styled in the resulting compound document.
 * If the embedded format can be converted to multiple alternative (think multipart/alternative) derivative formats (PDF, PNG, MathML), there needs to be a way for the user agent to choose the one's it best supports. This could be done by rendering the markup to include URLs to the embedded sections (multipart/related?) and using HTTP content negotiation.

The W3C has a working group for compound documents. This working group is more focussed on XML formats and beyond simply embedding the formats, harmonized DOM and event scripting interfaces.

In addition to embedding blocks of other format, it might eventually be possible to combine the grammars of the lightweight markup with the grammar of the embedded format, as was done with markdown and XML, so for instance you could inline LaTeX.

Another challenge is referencing external resources, such as images, multimedia, other wiki pages or URLs. Some attributes of these references include the target if clicked, the region of the reference (text or a thumbnail), a caption, CSS style for alignment. Square brackets are generally used for these references. Markdown has a nice feature of either specifying all these attributes of the reference (metadata) inline, or giving the reference an id and specifying the metadata at the end of the document. Metadata could also be applied using site wide ids (wiki names), or from the destination of the link (WebDAV properties).

Allowing the metadata to be moved out of the reference itself makes the text more readable. I like thinking of the metadata at the end of the document as XSLT. If the markup compliles to XML, the metadata can be compiled to XSLT and applied with a general XSLT processor.