This blog is highly personal, makes no attempt at being politically correct, will occasionaly offend your sensibility, and certainly does not represent the opinions of the people I work with or for.
For few hours it was called PascalFS, but then I decided to settle on ωFS, where ω (omega), is the greek letter which, in set theory, represents the first transfinite number (the ordinal of the set of natural numbers). I decided to drop all I was doing recently mathematic-wise to work full time on this file system until it's done.

The diagram is pretty much self explanatory. The parts in pink are the parts I need to implement. I settled on this diagram after having managed today to write a decent C code above the native MacFUSE C api, It took me a while to get it to talk, over a TCP/IP network connection, to a proto server written in PHP (proto server which is going to become the ωFS server), but it all works fine now. Alternatively I could have written all in Obj-C as the Obj-C FUSE Framework looks all right, but I will write C for the moment. The first implementation of the ωFS server will be in PHP, but there are chances that I re-implement it in Python one day (I write significantly faster in PHP than Python, so PHP will do for now). Iris is the file system v-nodes and i-nodes metadata, and the Protocols are APIs clients of the family of online free services I will hijack.

As I explained two weblog entries ago, a protocol is basically "an idea". Two examples of protocols among many are: storying data as (base64 encoded) entries of a account, or as Facebook hosted PNG images filled with data in its metadata chunks. An instance of a protocol (that I also call storage point) is an actual instance of its use. Adopting a new protocol requires writing code, whereas building a new instance of a protocol, only requires filling the user account registration web page of whatever free online service the protocol targets. The protocol "blogger" could have 20 "instances" if I register 20 weblog users.

I intend to implement a full fledged file system, even though it is unlikely that I support files' extended attributes. I realised today that it will be very fast, in the sense that all the metadata is local, so merely browsing it will be as fast as your local file system, the only moment latency will be felt is when we decide to read or write a file. Note that even though "local", Iris will be stored on the net as well, in case the computer get destroyed.

Files will be cut into datablocks and datablocks handled by one or several protocols. I do not know yet which replication algorithm(s) I will use, but the target is to never to lose any data, even if one or more storage points or, much worse, entire protocols all together, go offline.

[ add a comment ]