[e-lang] Module naming and identification

zooko zooko at zooko.com
Tue Apr 14 11:22:07 EDT 2009


Just to be clear, there are both "strong names" (or "self- 
authenticating identifiers") that map to an immutable string of bytes  
and "strong names" that map to a dynamic string of bytes (just like a  
filename does on your local filesystem). Self-authenticating  
identifiers to immutable files are based on cryptographic hash  
functions.  Self-authenticating identifiers to mutable files are  
based on public key cryptography.

Microsoft has blazed a trail here, and I am glad they did, because  
now instead of arguing that it is feasible I can just point and say  
"Look: Microsoft already did it.":

http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx

To give credit where due, Freenet, the Self-certifying Filesystem,  
and others previously explored the design of a mutable file which is  
identified by its public key, but Microsoft is the first to 1. apply  
that design to the problem of code importing, and 2. actually  
implement it and deploy it on a massive scale.

By the way, my current primary hacker project, the Tahoe Least- 
Authority Filesystem also features semantics like this.  Mutable  
files are identified by their public key.  If I give you such an  
identifier, then you can later read the contents of the file and be  
sure, due to the digital signature on those contents, that those  
contents were acceptable to the holder of the corresponding private key.

http://allmydata.org

Only the immutable kind suffer from the "over-specification" problem  
that Lex Spoon described -- that specifying that you require a  
specific version of your dependency is too tight, and you really want  
to specify things like "Any version of foomodule greater than or  
equal to 1.0.2 and less than 2.0".  The mutable kind of self- 
authenticating identifier are just as flexible as filenames are.

Regards,

Zooko


More information about the e-lang mailing list