| <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><em>Updated 5 September 2002.</em></p> |
| |
| <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> |
| |
| <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> |
| |
| |
| <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, |
| attribute value content, and entity values (such as found in |
| internal entity declarations).</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> Support for either pull or suspendable parsing </dt> |
| <dd> |
| <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> |
| |
| <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> |
| |
| <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> <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> |
| <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> |