--- /dev/null
+<html>
+ <head>
+ <title>Expat Development Roadmap</title>
+ <link rel="STYLESHEET" href="../style.css" type="text/css" />
+ </head>
+ <body marginwidth="0" marginheight="0">
+ <table cellspacing="0" cellpadding="0" width="100%">
+ <tr>
+ <td class="corner"><a href="../"><img src="../expat.png"
+ border="0"/></a></td>
+ <td class="banner"><h2>Expat Development Roadmap</h2></td>
+ </tr>
+ <tr>
+ <td class="navbar">
+ </td>
+ <td class="content">
+
+<h2>PROPOSAL</h2>
+
+<p>This is a proposed roadmap for the further development of Expat. The
+primary purpose for making this proposal is to determine whether our
+ideas for continued development are aligned with the needs of the
+community. We welcome comment both from Expat users, would-be users,
+and members of the XML community who have decided against using Expat
+for technical reasons directly related to Expat.</p>
+
+
+<h3>Goals</h3>
+
+<p>We do <strong>not</strong> plan to alter the goals of the Expat
+project. We intend to continue to develop Expat to have the following
+qualities:</p>
+
+<ul>
+<li> Fast </li>
+
+<li> Conformant to XML 1.0 and Namespaces </li>
+
+<li> Easy to use from C </li>
+
+<li> Easy to wrap / bind for non-C languages </li>
+
+<li> Sufficient to build DOM and SAX on top of
+ (any final specification for XML) </li>
+
+<li> Modest memory footprint </li>
+
+<li> Portable </li>
+</ul>
+
+
+<h3>Non-Goals</h3>
+
+<ul>
+<li> Parsing anything that isn't XML </li>
+
+<li> DOM (any level) </li>
+
+<li> SAX (any version) </li>
+
+<li> Data bindings </li>
+
+<li> Watching the kids </li>
+</ul>
+
+
+<h3>Historical Background</h3>
+
+<p>James Clark initially developed Expat, releasing three stable
+versions, identified as versions 1.0, 1.1, and 1.2. Clark Cooper
+created a forked version of Expat based on Expat 1.1, for use in the
+XML::Parser extension module for Perl.</p>
+
+<p>As James Clark's interests shifted, and his development moved to
+the Java environment, the authors of 3rd party language bindings found
+it increasingly difficult to integrate Expat with their languages, and
+other developers found it difficult to get fixes accepted into Expat
+and released. A small group of extension authors were gathered by
+Paul Prescod in the hope that Expat could be formed into a more
+readily usable library for both direct use in C-language applications
+and indirect use from other languages. This group was led by Clark
+Cooper and Fred Drake, and received sanction to take over maintenance
+of Expat from James Clark. The project is hosted on SourceForge.
+This group made their first release as Expat 1.95.0 in September
+2000.</p>
+
+<p>Since that time, incremental releases of Expat have been made on a
+sporadic schedule, improving functionality and portability with each
+release.</p>
+
+
+<h3>Expat Development Roadmap</h3>
+
+<p>Now that our goals and non-goals have been spelled out, let's take
+a look at how we should get there from where we are now. This will be
+broken down into two stages: near future activities and far future
+activities. In spite of the somewhat temporal labeling of these
+categories, please realize that no actual scheduling has been done,
+nor is that considered relevant at this time. Actual time to meet
+these goals is dependent on the availability of resources to work on
+Expat. Parallel development may also happen, depending on the
+specific interests of contributers.</p>
+
+<h4>Near Future Activity</h4>
+
+<p>The target of the current line of development will be to release Expat
+2.0. The intent is that once Expat 2.0 is released, most of the
+development activity for this line will be maintenance, and will be
+driven by user-provided problem reports. These are the goals for
+goals we have specific to the release of Expat 2.0:</p>
+
+<ul>
+<li> Stabilize the current API with some minor revisions to make error
+ reporting more explicit to allow better reporting and diagnosis. </li>
+
+<li> Introduce a new feature-test macro, XML_MINIMAL, parallel to
+ XML_DTD, XML_UNICODE, and XML_UNICODE_WCHAR_T. Defining the new
+ feature when compiling Expat will cause functions that are not
+ relevant to the rest of the feature macros. (For example, if
+ XML_DTD is not set but XML_MINIMAL is, the functions that set
+ handlers for DTD-related events won't be included at all.) This
+ is intended to make it easier to use Expat in small-memory
+ devices. </li>
+
+<li> API revisions will be made to improve the runtime discoverability of
+ Expat capabilities. </li>
+
+<li> Improve portability and performance. </li>
+
+<li> Substantially improve regression tests. </li>
+
+<li> Improve documentation. </li>
+
+<li> Full support for 64-bit platforms. (There are some known decoding
+ problems currently.) </li>
+</ul>
+
+<p>When we're confident that the minor API changes are "right", we'll
+finallize the API and release Expat 2.0. Should additional functions
+be required as evolutionary improvements, the minor version number
+will be incremented, but all existing functions will be maintained for
+backward compatibility. Releases that are strictly bug fixes will
+have the same minor version number and will gain a "micro" version
+number (sometimes called a "patch level").</p>
+
+
+<h4>Far Future Activity</h4>
+
+<p>Once Expat 2.0 has been released, it will be maintained on a CVS
+branch. The head of CVS will be used to develop Expat 3.0. The
+changes in Expat 3.0 will be more substantial and will include
+important API changes. At this time, we're looking at the following
+changes:</p>
+
+<dl>
+<dt> More powerful event API </dt>
+<dd>
+ <p>The new API will be sufficiently detailed that a complete and
+ detailed DOM structure can be built, including both internal and
+ external entity boundaries in parsed character data content and
+ attribute value content.</p>
+
+ <p>This API will of necessity be somewhat more complex than the
+ current API, but we expect the current API can be implemented on top
+ of the new API. For users for whom the Expat 2.0 API is
+ sufficiently powerful, this API will remain available.</p>
+</dd>
+
+<dt> New encoding support </dt>
+<dd>
+ <p>A new library may be added to the Expat package that provides a
+ flexible architecture for defining new encodings, and provides a
+ large range of common encodings. (It should be possible to develop
+ this so that it supports both Expat 2.0 and Expat 3.0.)</p>
+
+ <p>Another approach which will be considered will be to support
+ Expat's requirements for decoders using one of the existing open
+ source encoding support libraries that meets Expat's requirements
+ for portability. Possible technical approaches would include
+ implementing an adapter, and developing such an external library to
+ include direct support for the kind of interface support Expat
+ needs.</p>
+</dd>
+
+<dt> XML 1.1, if it ever happens </dt>
+<dd>
+ <p>Well, we're hoping, but it's not time to code for this yet.</p>
+</dd>
+</dl>
+
+<p>Additional goals may be added during the development of Expat 3.0;
+it's just too early to tell.</p>
+
+
+ </td>
+ </tr>
+ <tr>
+ <td class="corner">
+ <a href="http://sourceforge.net/">
+ <img src="http://cvs.sourceforge.net/sourceforge_whitebg.gif"
+ width="136" height="79" border="0" alt="SourceForge
+ Logo" />
+ </a>
+ </td>
+ </tr>
+ </table>
+ </body>
+</html>