<!-- $Id$ -->
<html>
 <head>
  <title>Xerces 2 | Crimson</title>
  <link rel='stylesheet' type='text/css' href='css/site.css'>
 </head>
 <body>
  <span class='netscape'>
  <a name='TOP'></a>
  <h1>Evaluation of Crimson Code</h1>
  <a name='Overview'></a>
  <h2>Overview</h2>
  <p>
   The Crimson code donated to the <a href='http://xml.apache.org/'>XML
   Apache Project</a> by <a href='http://www.sun.com/'>Sun Microsystems</a>
   is a relatively clean and straightforward implementation of a
   conforming <a href='http://www.w3.org/XML/'>XML</a> parser. However,
   there are some serious drawbacks to its design that hamper its use
   in the Xerces2 effort. This page will highlight some of the problems
   that I see with the Crimson code. This doesn't mean, however, that
   there aren't good ideas in Crimson! I'll highlight some of the things
   that I like about Crimson as well.
  </p>
  <a name='TheGood'></a>
  <h2>The Good</h2>
  <p>
   <table border='0'>
    <tr>
     <th>Size:</th>
     <td>Crimson has a small code footprint.</td>
    </tr>
    <tr>
     <th>Simplicity:</th>
     <td>
      The code is very straightforward and easy to grok. I especially
      like the simple approach to reading the input streams. The advanced
      reader code in Xerces has been a continual source of bugs and
      developer confusion. See my <a href='xerces.html'>evaluation of
      Xerces</a> for more detail.
     </td>
    </tr>
   </table>
  </p>
  <a name='TheBad'></a>
  <h2>The Bad</h2>
  <p>
   <table border='0'>
    <tr>
     <th>Standards:</th>
     <td>
      Crimson is lacking implementation of important standards. Some
      examples are DOM Level 2 and XML Schema.
     </td>
    </tr>
    <tr>
     <th>Modularity:</th>
     <td>
      The design of Crimson is not modular enough to be of general
      use in a wide variety of applications. For example, the document
      and DTD scanning code is hard-coded into the parser. Also, a lot
      of the classes used by the parser rely on package visibility of
      members. (Yuck!)
     </td>
    </tr>
    <tr>
     <th>Validation:</th>
     <td>
      The validation engine is rather simplistic and not very fast.
      Plus, it doesn't seem to be able to handle the advanced
      validation requirements of XML Schema.
     </td>
    </tr>
    <tr>
     <th>Performance:</th>
     <td>
      The general performance of the Crimson code is good but there
      are some areas where it can (and should) be tuned for performance.
      First, validation is not as fast as it could be but there are
      comments in the code that suggest "compiling" the model into a
      DFA for faster validation. Also, the DOM implementation wastes a
      lot memory when traversing the document.
     </td>
    </tr>
   </table>
  </p>
  </span>
  <a name='BOTTOM'></a>
  <hr>
  <span class='netscape'>
   Author: Andy Clark <br>
   Last modified: $Date$
  </span>
 </body>
</html>