Why does the Stack Exchange network of sites use Markdown instead of some other rich text editor like FCKEditor or TinyMCE?
WYSIWYG RTE editors are generally bad at structuring the underlying data, making it very difficult to analyze/restructure the contents.
Consider this, how often have you seen a Word-user mark a line of text, make it bold, increase font size, and change the font. The experienced user would of course set the style (or what it's called in word) to Heading 1, and modify that style instead.
Why would you do this? Well, try to have word generate a ToC for a document where you changed all the 'headings' manually. Or if you'd like to submit your article for print, where there are other rules (fonts etc). Word actually does make this easier (you can select all instances of a certain combination of attributes), but you'll never be sure you got all of them, or if you managed to snag more than just your headers.
This might be irrelevant for small question/answer entries, but if you'd like to index the entire database, all the answers of all the questions, you'll have quite a substantial data set.
The bottom line is, markup usually conveys structure. WYSIWYG RTE editors usually conveys optical style. The first can pretty easily be turned into the latter, the other way around however, is very difficult. Use structural markup where you can, sooner or later you'll be happy that you did.
For the individual small entries / user experience, I'd go for the other answers (browser problems, source code, etc).
There are many reasons for this:
- Take up resources
- Can be prone to cross browser issues
- It is quicker for users who are accustom to it to format the text
- Also, this site claims to be wiki like/based... so I guess this is just a similarity they are trying to reinforce.
6. ... and RTEs suck at entering source code. Since that would be not optimal for a page like SO I am really happy they don't try to apply one.
(I'm starting at '6' because I fully agree with Monksy's answer and just wanted to add another important point).
To expand somewhat on the user-friendliness and speed:
In any rich-text editior I know, to for example italicise a word, I would have to first write it, then mark it and then either click a button or use some keyboard shortcut for italics. Either way, this takes longer than just writing
*word*. Should I use the mouse it also requires more attention: I have to switch my method of input, I have to actually look at the screen, etc. Similar problems apply to many if not all other formatting options.
Another advantage of markdown is that I can easily write a post off-line.
Finally, given what formatting disasters are already caused by new users with markdown, I do not want to know what will happen if they are given a WYSIWYG editor.
I am a programmer, and I know HTML and CSS inside-out, so I am not shy of such things. In the early web days, I even invented a way of automatically marking up text to make it break, wrap, and indent as people usually expect. But I absolutely despise markup languages and wiki notation and this "Markdown" notation as a proliferation of lazy programmer bias.
All the reasons given by others here for not supporting WYSIWYG editing are merely excuses and rationalizations, in my opinion, for not doing the work to make it work. Yes, it requires some work to support WYSIWYG, but it has pretty much been done for you already by others.
People who are happy with Markdown will tend to be happier with Stack Overflow as it is, and will stick around longer. People who are not so inclined will tend to leave. This is similar to the Lisp community who are just fine with lots of insanely silly parentheses, and can't understand why they should consider changing.
Why not add the option of switching the editor to WYSIWYG mode? Have its feature set be limited to doing nothing more or less than what Markdown can already do, and then there should be no conversion problems.
Because WYSIWYG doesn't really work. See my blog for an example.
Because I use lots of different websites, and I have no interest in learning different editors for different sites. If the editor gets in the way of my sitting down and typing, which includes code snippets and links, I won't contribute. The toolbar on top of the box I'm typing into is about the most I'm willing to learn to start with.
Rich text editors might be suitable for average Joes, but it's annoying for programmers.
RTEs are wizards, you can't trust the code they generate.
Plain text makes it a lot easier to reorganize content, and move it somewhere else. RTEs are a big source of headaches when doing that; they just stand in the way.
Markdown is more semantic: you shouldn't care about what exactly some block looks like with regards to font, size, color, etc; markdown will take care of the representation for you.