Another way to reduce the size of a newsfeed in cases where more than one element often contains the same data would be to introduce the concept of element aliasing or defaults. For example, if the guid is almost always (or always, or even just often) the same as the link, then the feed could specify that in items which do not contain a guid (or link--either way), the value of the link (or guid) should be used wherever the guid (or link) is needed. Then, in all items where the value is the same, only one of the two elements would need to be included in the feed.

This could reduce the size of a feed dramatically if it were to contain two representations of the content--one with the full content, and one with a truncated version of it (which I THINK I've heard of being done, or at least discussed). In cases where the full content is short enough that it would appear in its entirety in the truncated element, only one of the two would need to be specified.

Along with specifying default values for elements, it would be useful to be able to specify element attributes as either the source or the target of aliasing.

The syntax for specifying defaults could be something like the following (though not quite, since it doesn't show how to deal with hierarchical element structures--I'll have to think about that more):

<defaults>
<default source="guid" target="link" />
<default source="item" sourceattribute="rdf:about" target="link" />
...
</defaults>

The first example would tell the client to take the link value from the guid element in cases where no link was specified. The second would take the link from the "rdf:about" attribute of the item element. Come to think of it, RDF-based feeds would be prime candidates for this type of shrinkage, since they tend to have a lot of redundant information.