[Tahoe-dev] API for tahoe

Brian Warner warner-tahoe at lothar.com
Sat Jul 14 01:12:53 UTC 2007

> Nobody (that I know of) is planning to implement a Tahoe client in  
> C.  The data formats in Tahoe are portable, simple formats (e.g. the  
> way files are padded and erasure coded, the way directories are  
> encrypted, etc.), but the inter-node protocol is extremely Python- 
> specific, since it is built on top of Foolscap.  Also, c.f. Penumbra,  
> Tahoe currently assumes a (more or less) fully connected (a.k.a.  
> "full mesh") network topology.

Just to follow up on Zooko's notes..

I designed Foolscap to make it straightforward to implement in other
languages. The only thing about the wire protocol that smacks of Python is
the distinction between lists and tuples, and that's easily to deal with at
the application layer (i.e. just accept either). The protocol is fairly well
documented at http://foolscap.lothar.com/trac/browser/doc/specifications .

The biggest problem is that nobody has done it yet. So far the only users of
Foolscap have been in environments where the disadvantages (memory overhead
and speed) of Python were far outweighed by the convenience, expressiveness,
and rapid-development advantages that Python offers. Despite a background in
high-speed routers, I haven't personally written much C code for years, and
can't say that I'm feeling a strong need to at this moment.

That said, it wouldn't be impossible.

Tahoe is equally portable above the foolscap layer: the data formats are
pretty straightforward (even more so if you can read the python source that
creates them), the main issue is having to write new code (in a lower-level
language, perhaps without the benefits of classes, exceptions, built-in
dictionaries, sets, or crypto libraries) to implement the same thing.


More information about the tahoe-dev mailing list