Who and What
- Daniel Veillard, Red Hat (formerly W3C)
- Libxml the GNOME XML Library
- Libxslt the GNOME XSLT Library
Report : functionalities
- Completion of the XSLT library, EXSLT
- Implementation of XML Catalog
- XInclude
- Canonicalization C14N
- Thread support (Sun)
- Huge API: 870 functions
Report : The big picture
Report: portability and bindings
- Formal definition of the API in XML
- Python bindings, Pascal/Delphi users base, C# bindings
- Embedded systems, reuse of the trio library
- Official, maintained ports to Windows and Solaris
- Ports to MVS, VMS, MacOS, RiscOS,
Report: adoption
- GNOME: Documentation and internals
- KDE: Documentation
- Solaris 9: libxml2 is part of the "normal" API
- DocBook community: XSLT processing to generate HTML or FO
- XFree86
- Large Windows/Embedded systems user base
- Switch to the MIT Licence
Report: performances
- XML parser faster than expat, MSXML4 or Apache/IBM Xerces
- 1.2GHz Duron: SAX 16MB/s, DOM 6MB/s
- XSLT processor seems faster than MSXML4
- DOM through gdome2 is twice faster than Xerces DOM
Performances as reported by IX Magazin
April 2002
version |
libxslt1.0.2 |
Xalan C++ 1.2 |
Xalan-J 2.2 |
Saxon 6.4.3 |
fib(25) |
8.4 |
6..7 |
142 |
27.2 |
fib(26) |
13.4 |
10.9 |
- |
43 |
dbonerow |
1.1 |
4.5 |
6.5 |
- |
decoy(100) |
0.05 |
0.19 |
2.8 |
1.7 |
decoy(1000) |
0.4 |
3.2 |
5.9 |
2.95 |
stringsort |
0.2 |
0.6 |
3.6 |
2.1 |
Report: compliance
- Large internal testsuites for both XML and XSLT
- Compliance with the W3C/NIST XML testsuite
- Awareness of the standardization work
- Beginning of an API testsuite based on Python
Roadmap: short term
- Validation: XML Schemas, RelaxNG, SAX validation
- Inverted SAX save
- Official bindings for C#
- Evolution of XML and XML Namespace : 1.1
- Documentation and propaganda
Roadmap: long term
- libxml3 : ABI change, tree representation
- Dynamic tree and Database accessors
- Extensibility framework for node
- Discard deprecated calls
Lesson learnt: Open Source projects
The key is the code and the process to maintain it
- Other people MUST read and understand your code
- principles: KISS, comments, documentation
- Always develop in the clear, public CVS, public lists
- Take patches !!! Essential to grow the mindshare
- Preserve your users: API/ABI stability
- Do whatever is needed to grow the mindshare
- Optimization is the last step, it is shared
Lesson learnt: implementing XML specifications
Implementing standard specifications have good points:
- Relatively stable
- XML is well suited to a variety of problems
- The associated mindshare means the code is useful
Associated drawback:
- Implementing draft standards means you will have to fix/rewrite it
- Sometime the complexity is just insane (Schemas)
- APIs are not part of the standard (especially in C)
- Multiple specifications may conflict
Questions and Answers