License: ======== iksemel is developed and released under GNU Lesser General Public License. A copy of the license can be found in the file COPYING. You should read it before sending patches to the iksemel, since it is implicitly assumed that your patches are also submitted under the LGPL license. Roadmap: ======== Main goal of the iksemel is removing complexity from programs using the library and the library itself. This is the reason why only a subset of XML is supported. Some things like UTF16, entity definitons, DTDs will be eventually implemented when we found ways to implement them without adding too much complexity to the iksemel code. Somewhat external standarts (XPath, XQuery, XSLT, vs) will probably not make it into the iksemel. * validation I think easiest way to add this feature is writing another parser based on the sax parser which parses a dtd (either from sax parser's markup callback which needs to be implemented or from an external source via iks_vsax_set_dtd() call) and checks the arguments of sax callbacks. Using it via dom or stream parsers can require some clever tricks. there are also xml schemas. they are easy to parse (it is xml anyway) but can be hard to apply. * utf16 There are two sides of this. Improving parser to accept utf16 can be relatively easy. But on the client side things can get confusing. What will be the default character set used by iks_new(), iks_insert_cdata() and similar functions? and how they will allow other charsets to be used. Supporting more than utf8 and utf16 is more difficult. Hopefully there is no immediate need for this. Jabber uses only utf8 and you can use iconv if you are using another charset in your application. Btw, there is also byte order issue which is silly. Inventor of BOM crap must be killed. * jabber roster Roster handling generally depends on the UI system used. But I think a generic roster handler which parses roster result, pushes, presence changes and allows application to access and display this data can be useful. Challenge here is making it UI independent and extensible by the application. File Layout: ============ doc/ * iksemel.texi Documentation in texinfo format. include/ * common.h Internal header for some common definitions. * iksemel.h Library API * finetune.h Default memory allocation sizes. src/ * ikstack.c Memory management functions. * utility.c Small string utility functions. * iks.c XML tree management. * sax.c SAX parser. * dom.c DOM parser. * stream.c Stream parser. * sha.c SHA1 hash functions. * jabber.c Jabber utilities. * filter.c Packet filter for Jabber. test/ (self test programs) tools/ (varius utility programs)