There is a billion and one wiki engines out there. Some are very simple, others have many advanced features. And almost every single one has it’s own idea on what a wiki syntax ought to be. There is really very little consistency between these engines. Yes, there are 3 major wiki “languages” which are fairly widespread out there:
All of these have strong proponents. For example, Google likes Textile which is used for their Google Code wiki engine. MediaWiki is naturally the syntax used on Wikipedia, so it’s popularity should not even be questioned. And there is some love for Markdown in the Ruby camp as evidenced by projects such as Instiki which I blogged about some time ago. But these are by no means the only lightweight markup languages used out there. There are dozens of them in active use – both in and outside of wiki engines.
Better yet, some wiki developers eschew established standards altogether and invent their own. I’m messing around with DokuWiki right now (which btw is astonishingly full featured for a “lightweight” flat file engine) and it basically uses some sort of Markdown like syntax which nevertheless seems to be quite unique.
In my mind this poses two problems. First one of course is picking a markup language you can live with. I personally can get used to anything – I mean, I hack in Perl and PHP for a living, I write a lot of stuff in LaTex and I actually like lisp. So switching between markup languages doesn’t bother me. But I will say that while they are all simple and easy to learn, they are not all equally intuitive.
For example, the I like the MediaWiki syntax for headings which seems more readable and easier on the eyes to me than the Textile or Markdown syntax:
==This is MediaWiki Heading== h1. This is a Textile Heading # This is a Markdown Heading This is also a Markdown Heading ========================
The MediaWiki creates a fairly unique visual clue, while the Textile syntax is sort of a throwback to HTML which your average wiki user may or may not know. Markdown is somewhere in between, the two but the two different methods of accomplishing the same thing may be confusing to novice users.
On the other hand WikiMedia has kinda ugly syntax for bold and italics:
WikiMedia '''bold''', ''italicized'' and '''''bold italicized''''' text. Textile *bold* and _italicized_ text. Markdown **bold** or __bold__, *italicized* or _italicized_ and ***bold italicized*** text
Here Textile is arguably the simplest one, with each style having it’s own unique character – and MediaWiki the worst one, requiring you to count the tiny quote marks. Ugh.
And of course Textile can do something the other two lightweight syntax language can’t – add custom attributes to certain elements. For example to produce an H1 heading with the id of “my_heading” all you need to do is to write:
h1(#my_heading). This is my heading
Which makes it great for people who know what they are doing. All are equally straightforward, but MediaWiki tend to be “clearer” and less scary at the first glance – or rather more plain-text centric. Textile on the other hand lends toward HTML like complexity in some places. So when I’m picking a wiki that is to be used by non-technical folks I usually tend to gravitate towards MediaWiki/Markdown like syntax – since they probably won’t be able to fully utilize all the attribute magic embedded in Textile.
Second problem is migrating from one wiki to another. Migrating data from one platform to another is always a pain so let’s not even talk about that. Let’s assume there is no data to migrate – you are just setting up a new wiki, and it is a different engine than the old Wiki or something like that. Unbeknown to your users and perhaps even to you the markup language in this new wiki may be subtly different from the one they are used to. This issue can be mitigated by picking a popular syntax and then just sticking to it. The little graphical formating buttons on top of the text box also help a little bit to ease users into the brand new wiki environment.
Which syntax do you like? Which is the one you would recommend for clueless users? And of course which wiki is your favorite? If you had to set up a wiki for your personal project, which one would you use? How about for non-technical staff that nevertheless wants to jump on the internal wiki bandwagon? Let me know in the comments.
[tags]wiki, markup, lightweight markup language, textile, markdown, wikimedia[/tags]