HACKING 2.8 KB

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