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.