2002-09-04 11:47:40 -04:00
|
|
|
<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>
|
|
|
|
|
2002-09-05 16:18:45 -04:00
|
|
|
<p><em>Updated 5 September 2002.</em></p>
|
2002-09-04 23:08:01 -04:00
|
|
|
|
2002-09-04 11:47:40 -04:00
|
|
|
<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>
|
|
|
|
|
2002-09-04 23:13:05 -04:00
|
|
|
<p>Discussion of this document should be directed to the <a href=
|
|
|
|
"http://mail.libexpat.org/mailman-21/listinfo/" >expat-discuss</a>
|
|
|
|
mailing list.</p>
|
|
|
|
|
2002-09-04 11:47:40 -04:00
|
|
|
|
|
|
|
<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
|
2002-09-04 13:06:06 -04:00
|
|
|
external entity boundaries in parsed character data content,
|
|
|
|
attribute value content, and entity values (such as found in
|
|
|
|
internal entity declarations).</p>
|
2002-09-04 11:47:40 -04:00
|
|
|
|
|
|
|
<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>
|
|
|
|
|
2002-09-04 13:25:37 -04:00
|
|
|
<dt> Support for either pull or suspendable parsing </dt>
|
|
|
|
<dd>
|
2002-09-04 13:26:58 -04:00
|
|
|
<p>The new API will need to support some way to interrupt processing
|
|
|
|
without having to parse all XML text passed to the parser so far.
|
|
|
|
This can be done by either using a pull-based model or a push-based
|
|
|
|
model (similar to the current API) with the added ability to suspend
|
|
|
|
parsing on request.</p>
|
2002-09-04 13:25:37 -04:00
|
|
|
|
|
|
|
<p>The specific API will depend on the model selected; either a
|
|
|
|
pull-based model or an suspension model can support each other with
|
|
|
|
little additional work, and the current push model can be built on
|
|
|
|
top of either.</p>
|
|
|
|
|
|
|
|
<p>The specific model and API will be discussed on the <a href=
|
|
|
|
"http://mail.libexpat.org/mailman-21/listinfo/" >expat-discuss</a>
|
|
|
|
mailing list.</p>
|
|
|
|
</dt>
|
|
|
|
|
2002-09-04 11:47:40 -04:00
|
|
|
<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>
|
|
|
|
|
2002-09-05 16:18:45 -04:00
|
|
|
<dt> <a href= "http://www.w3.org/TR/xml11/" >XML 1.1</a> (including <a
|
|
|
|
href="http://www.w3.org/TR/xml-names11/" >Namespaces in XML
|
|
|
|
1.1</a>), if it ever happens </dt>
|
2002-09-04 11:47:40 -04:00
|
|
|
<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>
|