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 |
---|
Details
TODO add a compatibility column to list some engines that have a compatible syntax
Wiki Markup | Display | Status | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
//italics// | italics | In #4356 | |||||||||
**bold** | bold | In #4356 | |||||||||
* Bullet list * Second item ** Sub item |
Sub item |
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 See also HelpOnLinking#Linking. In #4356 | |||||||||
[[URL|linkname]]
| linkname | In #4356 | |||||||||
== Large heading === Medium heading ==== Small heading | Large headingMedium headingSmall heading | In 0.12 | |||||||||
No linebreak! Use empty row (sic) | No linebreak! Use empty row (sic) | All versions | |||||||||
Force\\linebreak
| Force linebreak | In #4356 | |||||||||
---- Horizontal line | Horizontal line |
Note: for symmetry with | |||||||||
{{Image.jpg|title}}
| {{Image.jpg|title}} | See also HelpOnLinking#Embedding Likely in 0.13 | |||||||||
|=|=table|=header| |a|table|row| |b|table|row| | |=|=table|=header| |a|table|row| |b|table|row| | Nearly the same example works with double pipes: ||=||=table||=header|| ||a||table||row|| ||b||table||row||
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:
- ticket #4356 (will be in 0.12)
- Creole 1.0
- WIF
- TracWiki page on WikiCreole (read-only unfortunately)
- TracDev/Proposals/AdvancedWikiFormatting
- Trac plugin which renders WikiCreole as HTML - "full" WikiCreole compatibility on one side, but on the other side, doesn't support any of the TracLinks or the other Trac specific syntax