how much of exit policies can we squeeze into microdescriptors?
Current server descriptors have full-fledged exit policies -- they can describe not just ports but also IP addresses and netmasks.
The new microdescriptor design (legacy/trac#1748 (moved)) uses the idea from proposal 141 of just summarizing the ports from the exit policy, to compress things better.
But the problem is that we lose some functionality here.
So the first step is: what functionality exactly do we lose? Exit enclaving? More precise control over what websites you'll reach? We should make a list so we know what we're trading off.
The second step is: how much information can we salvage and put back into the p lines? I imagine a lot of the problem is that when we're fetching microdescriptors one at a time, the current exit policies compress poorly. There are several idioms (like rejecting all internal networks, and rejecting our own IP address) that we could denote very compressedly. How bad is it if we do the exit summary for all the ones that we can, and include more precise policy lines only for the relays that set unusual lines?
Backward compatibility if we add new shorthand will be exciting. I'm not sure how much of a hassle it will be, say if we make a change down the road where everybody has six new reject netmask lines in their default exit policy. We could certainly complexify things by defining our shorthand in an exit-policy-option-list or something, so it's all extensible, but that may just be a big hassle. I don't want us to design the complexifieder version for Sep2010.