Design notes
This section contains notes on some of the design choices, and helps explain some of the less simple parts of the source code.
There are several things in Gradient that could quite easily be characterized as ugly hacks, and several places where standards are bent, twisted, or ignored. In addition to that, some of the code may at first glance seem willfully obtuse when it is actually unintentionally obtuse.
To try and explain this, and some of other stranger stuff, I wrote up some of my notes on the off-chance that someone would find them interesting. Ladies and Gentlemen, the main show:
- Limitations on XML transported via XMPP
Describes the limitations imposed on XML transported via XMPP, and possible solutions that would allow an Gradient client to qualify as a conforming viewer, in accordance with the SVG specification.
- Transporting document fragments
Explains why I pay selective attention to the SVG specifications rules on fragmenting SVG documents.
- The semantics of Gradient and XMPP URLs
Describes a slight discrepancy in the way Gradient and XMPP use URL constructs, and the workaround chosen to solve the issue.
- Scaling with the current Gradient model
Describes a scaling problem that Gradient currently has, and possible architecture modifications to mitigate the issue.
- Preloaded document packet queuing
Explains why we queue packets for unloaded documents.
- Changes made to ProviderManager
Describes Changes to IQ-related ProviderManager behaviour.
- Document loading via XMPP
Explains one of the modifications made to the Batik code, specifically to allow loading of documents via XMPP.
© 2006. Some rights reserved. Author: Ian Sollars.