Yes boys and girls, it’s that time of the month again when I rant about the evils of WYSIWYG. Let me tell you a little story. In the beginning there was text. That’s all we had really. We used white space, underscores and bunch of the table drawing ASCII characters for all our formating needs. And we were doing just fine. Plain text was limited though, and people wanted to do typesetting on their computers. You know, like take bunch of text and mark it up so that when printed it looks all nice - like a professionally bound book or a magazine. So we invented markup.
Markup can be done in many ways, but it always boils down to this: there are special formating commands or characters inserted into your text document which convey the formating/typesetting information to the printing software. Next logical step was of course to invent Print Preview functionality where you would try to simulate how a printed document would look on the computer screen to avoid killing many trees. The rest is history - a perfect example that pandering to the lowest common denominator under the guise of improving usability may lead you to an evolutionary dead end.
According to my rough estimates, 60% of people are fucking idiots, and the remaining 40% are fucking morons. Yes, that means you are in one of these groups and so am I. Pick one or the other - they are both equally bad. Our only redeeming quality is that every once in a while even a total idiot or a complete moron can come up with a good idea. Once this happens the rest of us idiots and morons conspires to fuck it up as quickly and throughly as possible. Fortunately good ideas can often fend for themselves, survive the assault of stupidity and persevere. Word processing unfortunately failed this test and got fucked up.
First issue with markup languages was that you need to learn them. As you can imagine, stupid people don’t like to learn so we invented special editors with funky toolbars so that they don’t have to remember the markup code for bold, but just press a button. This made the fancy typesetting applications accessible to even more stupid people, who immediately started complaining about how hard and counter intuitive they were. For example switching between editing view and print preview was cumbersome. The markup commands embedded in text were confusing, and etc… So we all boarded the simpleton train of idiocy we allowed the stupids to type in a print-preview like environment hiding the actual markup. This was how WYSIWIG was born. It was hailed (and still is) as a revolution in the way we processed electronic documents - a grand new invention, and a usability improvement like no other. But in reality it was an ugly kludge designed so that Ms. Dumberbuttons in accounting could type up her reports without stopping every keystroke to consult a cheat sheet taped to her desk (cause before we taped it she kept losing it every day). Funny thing is that all that work was for nothing, because at the end of the day Ms. Dumberbuttons still needed a cheat sheet to tell her that she needs to press the bolded B on the toolbar to make the text bold, and called the IT department every time she accidentally minimized her editor window (which was 4-5 times a day).
Some of the better WYSIWYG word processors such as Corell Word Perfect retained some vestigial mode which would actually show you all the markup commands and characters in your document. This was great because terminally stupid people like Ms. Dumberbuttons could just use her WYSIWYG interface without really learning how it worked, while the rest of us could still sort of know what the hell was actually going on in our documents.

the right way to do WYSIWYG
Guess what happened to Word Perfect though? It was superseded by a much dumber and kludge-worthy application from Microsoft which removed never included the above feature from their product. Why? Who knows. Perhaps having such a tool would make it easier for their open source competition to reverse-engineer the proprietary, binary file format. Or perhaps they did not deem it worthy of inclusion, seeing how only like 7 people in the world admitted to using it. Either way, the de-facto standard for word processing these days is a funny little application that creates text files, applies quite an intense amount of markup to them, then hides all that markup making you guess what is going to happen next time you press the backspace key. Will you delete some important markup tag or not?
WYSIWYG is it’s own worse enemy because what you see is really not what you get. The invisible markup is what makes all the difference. You can’t really use MS Word to the full extent of it’s functionality without understanding how page breaks, section breaks and column breaks work.You need to understand that your document is full of meta-information that describes font faces, sizes, spacing and etc. You need to understand the crucial difference between inserting a paragraph break (Enter) or a line break (Shift+Enter) and how it impacts formating, and layout. Word seems deceptively easy to use, but it is a truly a difficult application to master because all the important things are hidden or obscured. Not to mention the fact that Word’s Print Layout mode is not really WYSIWYG - to really see how your document will look like you still need to use Print Preview feature.
When users hear WYSIWYG they expect the application to work like a modal typewriter. When they press enter they expect to see the cursor skip to the next line. They don’t expect that behind the scenes word will insert a paragraph break into their document, then write out some invisible markup that indicates the start of a new paragraph and then check what formating this paragraph is supposed to inherit based on current document layout and write it out as well. So there is a huge discrepancy between what people expect WYSIWYG to do and what it really does.
I’m not the only person who sees it. Terminally Incoherent regular Ian Clifton noticed this too:
In general, users want to get the work done as soon as possible, which means doing whatever they already know or whatever makes the most sense to them. They rarely look through menu choices to try to figure out how to do something such as how to format a paragraph. They don’t pay any attention to anything that they don’t need to pay attention to (e.g., the ruler). They commonly feel as though they are “fighting” the computer to get it to do what they want. The thought that there are alternative programs almost never occurs.
Overall, I’d say the biggest difference between an “average” user and someone who is truly technically literate is that the former never considers how his/her actions will be interpreted by the computer (assuming the computer should think in the same way as s/he does); the latter acts based on how the computer will interpret the action. Essentially, it’s the difference between talking to someone and talking at someone.
That is precisely the point. Average MS Word user is FIGHTING the application to get their work done. They have to wrestle this monster and beat it into submission. It is an uphill battle between a user who just wants to type shit up, and an evil, malevolent computer which throws obstacles in his way. The only way to properly use the application is to understand the way it handles the markup and try to anticipate what it will do based on that knowledge.
In effect, every user of a WYSIWYG processor has to acquire intuitive knowledge of their editors internal markup language and it’s quirks without actually ever seeing it displayed on the screen. The ease of use is an illusion that fades away as soon as you need to create a document that is more complex than a one page memo or a thank you letter.
I blame the WYSIWYG paradigm for this. Going from text processing to typesetting to word processing was an idiotic thing to do and we are paying for it every day. Well, you are paying for it. I’m happily typesetting most of my work in LaTex so I don’t have to deal with word processor bullshit. But I digress, people are paying for it every day. I’m not saying everyone should switch to LaTex. LaTex is for smart people who are not afraid to learn a new markup language in order to increase their productivity and generally improve their quality of life. For example Ms. Dumberbuttons from Accounting would probably never learn it, because she is allergic to knowledge (and also dumb as a brick). You my friend may never learn it because you are a lazy bum, and you don’t give a fuck. Everyone has their own reasons and deficiencies so I’m not going to push the issue. All I’m saying is, put a button on your Word Processing application which will expose the markup to me the same way Corell Word Perfect did. Make it nice, self explanatory and user friendly. Have tool-tips explaining each of the tags when user hovers over them. I’m looking at you OpenOffice.org? Why is that not part of your Word Processing application? Because MS Word doesn’t have it? Well, if MS Word jumped off a bridge would you do it too?
Fuck, never mind - it was a rhetorical question. The only reason you probably don’t have a Ribbon interface yet is because it would require rewriting the whole UI from scratch and no one wants to do that. Yet… So yeah, I know full well you would jump off that bridge. But you don’t have to. Blindly aping everything that Microsoft does is not always a good thing. If we had a markup exposing feature in MS Office alternatives our lives would be much easier.
Instead of sitting and scratching their heads, users could just switch to the markup view and go - “Ah! That’s where my problem is. I’m missing a column break here!. And by users I mean power-users. You know, guys like you who don’t want to learn LaTex even though I keep telling you it will make you better, more awesome and will totally increase the size of your… Resume. What? What did you thing I was going to say? Ms. Dumberbuttons will still be two-finger typing her reports and calling the helpdesk every day to walk her through the ardors process of saving the document in the right folder on the network share. That can’t be helped.
Do we really want to dumb down our software to the point where even Ms. Dumberbuttons can use them? Isn’t there a point where we should just say, fuck this! If you can’t figure out how to my application perhaps you are just too dumb to use it? Do we really need to scrape every single bit of functionality and power out of an application before it is deemed “idiot proof” enough to be released?
Do you know why crybabies out there constantly whine that Linux is not ready for the desktop? That’s because most people involved with open source project have some intuitive grasp of what I said above. They know that you have to draw a line at some point and refuse to dumb the application down any further. Pandering to Ms. Dumberbuttons needs is very time consuming, difficult process. Especially since months of research and development staff result in only mildly smaller amount of confusion on her part and no visible increase in productivity. The smart thing to do is to cut your losses and hope that Ms. Dumberbuttons boss will come to his senses and move her into a position which does not require computer skills.
What we are doing right now is counter productive. By investing so much into WYSIWYG we created an interface which is actually deceptively difficult to master and use properly. I really don’t see why Ms. Dumberbuttons couldn’t have a cheat sheet with markup commands on her desk instead of a cheat sheet which tells her which buttons and menu items to click on. Perhaps it would not be so bad. Perhaps it would actually be easier for her to learn bunch of textual formating directives than to navigate the menus and tool bars and dealing with the quirks caused by invisible characters in her text. But alas, that won’t happen. We are stuck with WYSIWYG. Hell, there is a WYSIWYG editor in my Wordpress for Christ’s sake. For what? For the 4 or 5 HTML tags actually allowed? It is like a joke. Fortunately there is a way for me to switch back into regular HTML editor and use that. And this is all I’m really asking for. You can have a WYSIWYG editor, but give me a way to actually use the markup language that it uses internally. This way both power users and idiot users will be happy.