Edgewall Software

Wiki Creole

Wiki Creole is an attempt to create a compatibility layer between Wikis, by trying to define a kind of common syntax:

Creole is a common wiki markup language to be used across different Wikis. It's not replacing existing markup but instead enabling wiki users to transfer content seamlessly across wikis, and for novice users to contribute more easily.

While our current Wiki engine doesn't yet allow to implement compatibility with WikiCreole by the way of a plugin, our Wiki Syntax happens to be close enough to the spec that only small tweaking would be needed to reach a good compatibility level.

As MoinMoin switched to a creole friendlier markup in 1.6 and BitBucket also supports fully the WikiCreole 1.0 spec, the Trac wiki syntax should also become more creole-friendly. DokuWiki and MediaWiki (two wikis popular among Trac users) compatibility would also increase in the process as they have a number of similarities with creole. Complete compatibility is probably out of reach, but there are a number of things we can adopt without breaking anything.

Creole syntax

Cheat Sheet for Wiki Creole 1.0


TODO add a compatibility column to list some engines that have a compatible syntax

additional inline formatting: alternate syntax for lists: alternate syntax for links: variant for headings: white space: alternative to macro: variant for pipe-based tables: blocks:
Wiki Markup Display Status
//italics// italics In #4356
**bold** bold In #4356
* Bullet list
* Second item
** Sub item
  • Bullet list
  • Second item

Sub item

** Sub item will conflict with bold; we therefore really need to parse the structural markup before the inline markup here (see vertical/horizontal parsing).

Likely in 0.13

# Numbered list
## Second item
## Sub item

# Numbered list ## Second item ## Sub item

No conflict but needs symmetry with the unordered lists.

Likely in 0.13

Link to [[wikipage]] Link to wikipage

Obvious conflict with the syntax of WikiMacros. Fix is obvious as well: anything not recognized as a macro will be linkified in the wiki: realm (by default), instead of generating an error.

See also HelpOnLinking#Linking.

In #4356

[[URL|linkname]] linkname In #4356
== Large heading
=== Medium heading
==== Small heading

Large heading

Medium heading

Small heading

In 0.12

Use empty row (sic)

No linebreak!

Use empty row (sic)

All versions
Force\\linebreak Force
In #4356
Horizontal line

Horizontal line

Note: for symmetry with [[br]] we could have an [[hr]] macro

{{Image.jpg|title}} {{Image.jpg|title}}

See also HelpOnLinking#Embedding

Likely in 0.13


|=|=table|=header| |a|table|row| |b|table|row|

Nearly the same example works with double pipes:


See #6630 for a plan to support single pipe syntax as well.

Likely in 0.13

== [[Nowiki]]:
//**don't** format//
== [[Nowiki]]:
//**don't** format//
All versions

Note also that the creole extension markup, <<...>> is used in MoinMoin as a replacement for the [[...]] macros (see MoinMoin:HelpOnMacros). This is a logical follow-up to their adoption of [[...]] as the primary link syntax. Though we don't necessarily need to remove that notation for macros (as noted above in the table), we could adopt the <<...>> syntax as an alternative. Then we need to unify this with the <...> links as well.

Bottom line: we would have [...] and <...> links, [[...]] and <<...>> macros or links if there's no corresponding macros.

The [...] form is the most "sensitive" one, as we need to support [123] revision links. Therefore it seems fine to make the realm: prefix mandatory (or other kinds of specialized prefixes, like ./, ../, / and #, =#). The <...> form also requires a realm. Conversely, [[...]] and <<...>> are more "robust" and shouldn't require a realm, though they should accept one if given.

See also:

Last modified 3 weeks ago Last modified on Mar 28, 2018, 10:28:40 PM
Note: See TracWiki for help on using the wiki.