<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>doc.mashweb.club – critique</title>
    <link>/categories/critique/</link>
    <description>Recent content in critique on doc.mashweb.club</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Thu, 05 Jan 2017 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="/categories/critique/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Zen-White-Paper: Critique of contemporary WYSIWYG web-page composers</title>
      <link>/zen-white-paper/wysiwyg/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/zen-white-paper/wysiwyg/</guid>
      <description>
        
        
        &lt;p&gt;WYSIWYG stands for “What You See Is What You Get.” All the well-known WYSIWYG web page composers, whether standalone or embedded, treat web-page composition like word processing—or like drawing—rather than like an organizational (structured, semantic, dynamic-design) problem. They work mainly on the superficial look of web pages. Typically they are designed merely to provide a gentle approach to HTML editing.&lt;/p&gt;
&lt;p&gt;Pages produced by such WYSIWYG page composers seldom help with the powerful possibilities of web applications.  Well-crafted web pages can adjust themselves according to the type of media they appear on (e.g., phone, desktop, or paper). They can be dynamic, using AJAX, which allows them to update parts of themselves quickly without reloading the whole page. They have reactive widgets. They have structures based upon semantic meaning.&lt;/p&gt;
&lt;p&gt;Contemporary WYSIWYG page composers often sport a button to switch to an HTML-source view, as if copping-out when their visual paradigms fail. Their interfaces are reminiscent of IDEs (integrated development environments) or RAD (rapid application development) tools provided by large, complicated, programmer-oriented frameworks. Indeed, IDEs sometimes include WYSIWYG web page composers.&lt;/p&gt;
&lt;p&gt;These page composers produce &amp;ldquo;dirty&amp;rdquo; HTML containing excess, unruly pieces of HTML, as explained by Nick Santos.&lt;a href=&#34;/zen-white-paper/notes/#fn:21&#34;&gt;&lt;sup&gt;21&lt;/sup&gt;&lt;/a&gt;
 The HTML they generate gets dirtier and dirtier as the user makes more and more changes to the web page.&lt;/p&gt;
&lt;p&gt;The thorny problem that web-page-embedded, JavaScript-based editors attempt to solve is that web browsers do not sufficiently support their tasks. The critical browser feature supporting web page editing is called &lt;code&gt;contentEditable&lt;/code&gt;. Piotrek Koszuliński, the lead developer of &lt;em&gt;CKEditor&lt;/em&gt;, wrote a detailed technical explanation of why &lt;code&gt;contentEditable&lt;/code&gt; is flawed yet indispensable.&lt;a href=&#34;/zen-white-paper/notes/#fn:22&#34;&gt;&lt;sup&gt;22&lt;/sup&gt;&lt;/a&gt;
 Some of his points are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It is difficult to force every browser to use &lt;code&gt;strong&lt;/code&gt; instead of &lt;code&gt;b&lt;/code&gt; for the &lt;em&gt;bold&lt;/em&gt; command.&lt;/li&gt;
&lt;li&gt;It is hard to coerce the Enter key to create new paragraphs instead of &lt;code&gt;b&lt;/code&gt;  or &lt;code&gt;div&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Cleaning up pasted code is messy and imperfect.&lt;/li&gt;
&lt;li&gt;From mid-2007, for at least the next eight years, the selection systems of the Blink and WebKit web browser engines remained broken.&lt;/li&gt;
&lt;li&gt;APIs and their implementations related to &lt;code&gt;contentEditable&lt;/code&gt; &amp;ldquo;are incomplete and/or inconsistent and buggy.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent&#34;&gt;Composition events&lt;/a&gt; are very complicated to handle without &lt;code&gt;contentEditable&lt;/code&gt; breaking many things: editing in an iPad, the keystrokes for jumping over words, shake-to-undo on the iPhone, spell checking, and screen readers. (Text entry of an accented letter, a complex Japanese character, and a letter with a diacritic all invoke composition events. Googling &amp;ldquo;Mozilla composition event&amp;rdquo; and &amp;ldquo;Wikipedia input method&amp;rdquo; provides all a non-technical or technical person needs to know to get a quick start with composition events.)&lt;/li&gt;
&lt;li&gt;Standardizing browser APIs to address all the above issues is a tough job.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The author does not know whether Blink and WebKit ever fixed those bugs. Still, Fatos Bediu&lt;a href=&#34;/zen-white-paper/notes/#fn:23&#34;&gt;&lt;sup&gt;23&lt;/sup&gt;&lt;/a&gt;
 and Mark Lancaster&lt;a href=&#34;/zen-white-paper/notes/#fn:24&#34;&gt;&lt;sup&gt;24&lt;/sup&gt;&lt;/a&gt;
 have recently written about how difficult it is to use &lt;code&gt;contentEditable&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Nick Santos explains how HTML is not well behaved in WYSIWYG editors. For example, he says, all the forms:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;strong&amp;gt;&amp;lt;em&amp;gt;Baggins&amp;lt;/em&amp;gt;&amp;lt;/strong&amp;gt;
&amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;Baggins&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;
&amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;Bagg&amp;lt;/strong&amp;gt;&amp;lt;strong&amp;gt;ins&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;
&amp;lt;em&amp;gt;&amp;lt;strong&amp;gt;Bagg&amp;lt;/strong&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;em&amp;gt;ins&amp;lt;/em&amp;gt;&amp;lt;/strong&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;should be treated the same by the WYSIWYG editor. A WYSIWYG editor should treat an edit to any of these forms the same, but, as he says, &amp;ldquo;For many &lt;code&gt;ContentEditable&lt;/code&gt; implementations on the web, some invisible character or empty span tag may slip into the HTML, so that two &lt;code&gt;ContentEditable&lt;/code&gt; elements behave totally differently (even though they look the same).&amp;rdquo;&lt;/p&gt;
&lt;p&gt;According to Dan Dascalescu,&lt;a href=&#34;/zen-white-paper/notes/#fn:25&#34;&gt;&lt;sup&gt;25&lt;/sup&gt;&lt;/a&gt;
 in a survey of about 60 in-browser WYSIWYG editors, only one editor could paste images directly from the clipboard. More recently, Jeferson Mari and others&lt;a href=&#34;/zen-white-paper/notes/#fn:26&#34;&gt;&lt;sup&gt;26&lt;/sup&gt;&lt;/a&gt;
 curated another list of WYSIWYG editors.&lt;/p&gt;
&lt;p&gt;Here are screenshots of a few of the many composers in this class (chosen a few years ago by the author), leaving aside the composers tied to heavyweight integrated development environments:&lt;/p&gt;
&lt;p&gt;
&lt;figure&gt;
    &lt;img src=&#34;/images/bluegriffon1_6_french.jpeg&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;BlueGriffon&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;figure&gt;
    &lt;img src=&#34;/images/ckeditor.jpeg&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;CKeditor&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;figure&gt;
    &lt;img src=&#34;/images/kompozer.png&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;KompoZer&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;figure&gt;
    &lt;img src=&#34;/images/maqetta.png&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;Maqetta&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;figure&gt;
    &lt;img src=&#34;/images/tinymce.jpeg&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;TinyMCE&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;aside&#34;&gt;Aside&lt;/h2&gt;
&lt;p&gt;Maqetta, although its development is inactive, provides an exciting and unique approach to WYSIWYG web-page composition, in that it&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;supports composition with OpenAjax widgets,&lt;/li&gt;
&lt;li&gt;&amp;ldquo;allows User Experience Designers (UXD) to perform drag/drop assembly of live UI mockups,&amp;rdquo;&lt;/li&gt;
&lt;li&gt;includes &amp;ldquo;deep support for CSS styling (the application includes a full CSS parser/modeler),&amp;rdquo;&lt;/li&gt;
&lt;li&gt;includes &amp;ldquo;a mechanism for organizing a UI prototype into a series of &amp;lsquo;application states&amp;rsquo; (aka &amp;lsquo;screens&amp;rsquo; or &amp;lsquo;panels&amp;rsquo;) which allows a UI designer to define interactivity without programming,&amp;rdquo; and&lt;/li&gt;
&lt;li&gt;has a code base with &amp;ldquo;a toolkit-independent architecture that allows for plugging in arbitrary widget libraries and CSS themes.&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;

      </description>
    </item>
    
    <item>
      <title>Zen-White-Paper: Critique of current WYSIWYM web-page composers</title>
      <link>/zen-white-paper/wysiwym/</link>
      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>
      
      <guid>/zen-white-paper/wysiwym/</guid>
      <description>
        
        
        &lt;p&gt;WYMeditor is the best-known WYSIWYM web page editor. &lt;em&gt;WYSIWYM&lt;/em&gt; stands for &lt;em&gt;What You See Is What You Mean&lt;/em&gt;. In a WYSIWYM editor, the user creates a document with &lt;em&gt;structured, meaningful content&lt;/em&gt;. The &lt;em&gt;presentation&lt;/em&gt; of the content is out of his hands. The separation of &lt;em&gt;content&lt;/em&gt; from its &lt;em&gt;look and feel&lt;/em&gt; makes it possible to view the document in many ways on many devices, which is a central principle of good web design.

&lt;figure&gt;
    &lt;img src=&#34;/images/WYMeditor.png&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;WYMeditor&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;The WYSIWYM principle undoubtedly is suitable for web design, but WYMeditor has serious drawbacks. It was tricky to set up in the author&amp;rsquo;s own experience. A web page cannot embed it. According to an old Wikipedia article on WYMeditor (now archived on Archive.org),&lt;a href=&#34;/zen-white-paper/notes/#fn:27&#34;&gt;&lt;sup&gt;27&lt;/sup&gt;&lt;/a&gt;
 &amp;ldquo;One downside of WYMeditor is that it cannot be used to include JavaScript in the content it edits. Changing this would require eliminating WYMeditor&amp;rsquo;s use of the &lt;code&gt;innerHtml&lt;/code&gt; property.&amp;rdquo; Thus, WYMeditor won&amp;rsquo;t work with reactive widgets.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The author might expand this section to cover a representative set of WYSIWYM composers.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
