Drupal WYSIWYG solution with CKEditor and CKFinder
At LevelTen, many of us would prefer to banish WYSIWYG editors from our existence, as it's often hard to maintain clean page markup and doing everything in code ensures we have that control over what's being entered. In reality, we use a WYSIWYG for every one of our client websites, as it is a necessity for any content entry worker who is not familiar with HTML. We've tried the Drupal WYSIWYG module with TinyMCE integration, the FCKeditor module, and the IMCE file management module and each of those work fairly well, but the CKEditor module tied with CKFinder is a game changer for user interface and experience.
CKEditor is not Drupal specific, as it is an open course text editor, but the CKEditor module gives the Drupal admin lots of configuration power. Configuration profiles can be created based on user roles, the editor skin can be changed, a custom toolbar can be created (created in code but selected in the admin), and output/css can be configured as well. The best part about the CKEditor, in my opinion, is the slick look. If you have seen the TinyMCE or FCKEditor editors (they make me cry), you will realize the beauty of CKEditor.
The icing on top, is that the CKEditor integrates with CKFinder - an Ajax based file manager (replacement for IMCE). Again if you have seen the IMCE interface, the CKFinder interface is a breath of fresh air.
With the CKFinder, one can specify a directory under /files to store images uploaded using the interface. The image can be resized in the dialogue box and the results can be seen instantly in the preview window. One can also specify alt text, border, horizontal/vertical padding, alignment, image link, title, and class names. And they actually work! (I couldn't get TinyMCE styles to work)
Screencasts for both the CKEditor and CKFinder can be found at: http://drupal.ckeditor.com/tricks#screencasts
Be sure to read all of the documentation and README files, as there is some mighty up-front configuration that needs to be done. Once you configure, you're all set, and hopefully you'll shed a few less tears when using a WYISIWIG on your site.