Linking to ticket #1657

[Imported from Trac: page ServerSelection, version 20]
amontero 2012-01-16 19:29:41 +00:00
parent 5ca8304268
commit 828599ba29

@ -14,6 +14,7 @@ Different users of Tahoe-LAFS have different desires for "Which servers should I
* This is called "rack awareness" in the Hadoop and Cassandra projects, where the unit of distribution would be the rack. * This is called "rack awareness" in the Hadoop and Cassandra projects, where the unit of distribution would be the rack.
* John Case wrote a letter to tahoe-dev asking for this feature and comparing it to the concept of "families" in the Tor project: <http://tahoe-lafs.org/pipermail/tahoe-dev/2011-April/006301.html> * John Case wrote a letter to tahoe-dev asking for this feature and comparing it to the concept of "families" in the Tor project: <http://tahoe-lafs.org/pipermail/tahoe-dev/2011-April/006301.html>
* Brian Parma wants to share storage with one other person, and have all of his files stored on their server and vice versa. (Since he already has local copies of his files, so there's no value to him in storing his files on his server.) * Brian Parma wants to share storage with one other person, and have all of his files stored on their server and vice versa. (Since he already has local copies of his files, so there's no value to him in storing his files on his server.)
* A. Montero wants a typical reciprocal friendnet backup grid, but nodes are connected only sporadically via direct links (LAN/USB). Nodes are unlikely to see each other via internet and bandwith is low. In order to exchange the shares of each individual participant local backups, nodes connect from time to time in a rendez-vous operation and the exchange happens. See ticket #1657 for a detailed description.
As I have emphasized a few times, we really should not try to write a super-clever algorithm into Tahoe which satisfies all of these people, plus all the other crazy people that will be using Tahoe-LAFS for other things in the future. Instead, we need some sort of configuration language or plugin system so that each crazy person can customize their own crazy server selection policy. I don't know the best way to implement this yet -- a domain specific language? Implement the above-mentioned list of seven policies into Tahoe-LAFS and have an option to choose which of the seven you want for this upload? My current favorite approach is: you give me a Python function. When the time comes to upload a file, I'll call that function and then use whichever servers it said to use. As I have emphasized a few times, we really should not try to write a super-clever algorithm into Tahoe which satisfies all of these people, plus all the other crazy people that will be using Tahoe-LAFS for other things in the future. Instead, we need some sort of configuration language or plugin system so that each crazy person can customize their own crazy server selection policy. I don't know the best way to implement this yet -- a domain specific language? Implement the above-mentioned list of seven policies into Tahoe-LAFS and have an option to choose which of the seven you want for this upload? My current favorite approach is: you give me a Python function. When the time comes to upload a file, I'll call that function and then use whichever servers it said to use.