log in

Thoughts on WYSIWYG

Luke Breuer
2007-12-29 20:45 UTC

What You See is What You Get

The best Windows-world example of WYSIWYG is Microsoft Word. To bold some text, you select the text and click on a toolbar icon or simply use the key sequence [Ctrl]-[B]. If there is no WYSIWYG, you are reduced to typing something like <b>the text</b>.

some history
  • very low learning curve
  • very fast
  • no separate rendering step required
  • lacks semantic meaning (while this can be done, it is hard and typically not done by default)
  • when one is on a boundary between two different styles of text, it can be confusing to know which style will be assigned to the text character typed
  • performing style-based update operations in batches can be hard to impossible
Bad implementations
Someone who goes by the alias tef said the following (12/29/07):
Well, an idea is judged on it's implementations. If since 1980 or so we've never managed to implement it correctly, it can't be such a great idea.

This a bit hard for me to swallow, as I just think almost all WYSIWYG implementations to-date stand to be improved a lot. It seems like the population is quite divided into a plaintext-markup camp and a WYSIWYG-camp, and the lack of cross-pollination has prevented good ideas from being transferred from one to the other.
The word refactor is well known among programmers: there are ways to restructure code so that behavior does not change, but under the covers, the situation is much improved. This can be for performance, for future maintainability, or be in preparation for modification. It seems to me that the same is needed for word processing. Just as programmers do not always know what a program's structure will look like, people don't always know what a document's structure will look like.
Personal needs
I need a [WYSIWYG] editor that supports a limited set of rich formatting:
  • bold, italics, underline, strikethrough
  • highlighting, text color
  • a few different heading sizes
  • bulleted and numbered, nested lists, ideally with the option of having one nested within the other
  • support for preformatted text, like code