On Nov 02, 2011, at 12:00 PM, Chris Clark wrote:
If a header is going to contain data that is generated from non-trivial processing I think it would be good form to include the algorithm name in the header.
The idea behind the header is to enhance RFC 5064 so that the MLM can pre-calculate Archived-At for the destination archive, without any interaction from that archiver. It also enables users to do the same.
Message-ID-Hash is primarily a convenience value which provides the last component in Archived-At. Thus Archived-At is calculated as <base_url>/<mid_hash> where <base_url> is typically the List-Archive header value and <mid_hash> is Message-ID-Hash.
The choice of Base 32 was deliberate. It's seen as a trade-off between uniqueness and (potentially <wink>) human readable.
http://wiki.list.org/display/DEV/Stable+URLs
The reason you do not want variability in the algorithm is because you want to be able to calculate the Archived-At value given only the Message-ID and the archiver base url. Having to also exchange knowledge of the algorithm used would make this less usable IMO.
Let's say I know that messages to mailman-developers are archived at mail.python.org, gmane.org and www.mail-archive.com, and I somehow know that your original message has Message-ID: <4EB1933E.9080707@actian.com>, I don't need anything else to find your message:
>>> from hashlib import sha1
>>> from base64 import b32encode
>>> mid_hash = b32encode(sha1('<4EB1933E.9080707@actian.com>').digest())
>>> mid_hash
'ANDJGXNCTPGVTF5F2WROKOOKXGKZDBC6'
>>> for base in ('gmane.org', 'mail-archive.com', 'mail.python.org'):
... print 'http://{0}/{1}'.format(base, mid_hash)
...
http://gmane.org/ANDJGXNCTPGVTF5F2WROKOOKXGKZDBC6
http://mail-archive.com/ANDJGXNCTPGVTF5F2WROKOOKXGKZDBC6
http://mail.python.org/ANDJGXNCTPGVTF5F2WROKOOKXGKZDBC6
That's the compelling argument behind the *concept* of Message-ID-Hash, but as you can see, it's easy to calculate with just two pieces of information, one of which is static and the other which is fairly easy to convey.
Cheers, -Barry