[mnet-devel] simplifying ZNFF

Zooko zooko at zooko.com
Wed Mar 5 23:30:42 GMT 2003


Folks:

I worked long and hard to develop a Zooko's New File Format which would allow us 
to upgrade everything about it -- the FEC, the bundled metadata, even the 
encryption and even the authentication -- while always having the ability to 
publish a file, resulting in a single, short, mnet URI, which could be 
downloaded and authenticated by both "current" and "current - 1" versions of the 
client.

This would allow smooth upgrading while both old and new versions use the same 
mnet URI for the same file.

The design was fiendishly complex and cryptographically questionable.

Then I decided that it just wasn't worth it.  If it ever comes that we have to 
change our encryption algorithm, we can either (a) just start publishing file 
under the new system such that old client are unable to download them, or 
(b) publish the file twice, once under the new and once under the old, and then 
send both URIs so that a client of either era can download them.

So then I wrote a Zooko's New File Format which didn't allow smooth-upgrade 
across encryption algorithm changes, but did across authentication algorithm, 
FEC, or other "file format" changes.  This was relatively simple, but still 
noticeably more complex than a "simple" file format would be.

So earlier today when writing [1] I realized that this isn't really worth it 
either.

So this afternoon I invented the very latest variant of Zooko's New File Format, 
which doesn't allow "one mnetId points to two different versions of the file, 
decodable by two different versions of the software" for *any* changes, not even 
introducing a new erasure code algorithm.

I'm quite pleased with its simplicity and features, but I'm sending this in case 
anyone wants to object that they really want a more complex format that allows 
this kind of smooth-upgrading over certain changes such as switching erasure 
codes.  To re-iterate, the kind of "smooth-upgrading" that I mean is that you 
can have a single mnetId which identifies a single file, but which can be used 
to download and reconstruct that file in either of two different ways (the old 
and the new).

--Z

[1] http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/mnet/mnet_new/doc/new_filesystem.html?rev=HEAD&content-type=text/html



-------------------------------------------------------
This SF.net email is sponsored by: Etnus, makers of TotalView, The debugger 
for complex code. Debugging C/C++ programs can leave you feeling lost and 
disoriented. TotalView can help you find your way. Available on major UNIX 
and Linux platforms. Try it free. www.etnus.com
_______________________________________________
mnet-devel mailing list
mnet-devel at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mnet-devel




More information about the Mnet-devel mailing list