One can assign PeerPrivilege by combining a TrustMetric with FunctionalAccess. Very simply, for each person and each privilege, you can assign how much you trust that person to have that privilege. For instance, I deeply trust Alice Angel to administrate the site given her past experience and her involvement with the community. On the other hand--if you wanted to implement negative trust--I may deeply mistrust Bob Biased to write articles (as he has serious SoapBoxing problem), but I will trust him to post to his diary.
Not only those with privilege should be allowed to delegate it. Instead, rely on WeightedFranchise. Have one overall TrustMetric to distribute weights, and separate metrics to apply those weights in particular situations.
Compare AccessLevels.
Technical stuff.
From the set of members M in the society, we choose a root set R that are the site administrators. The root set can be chosen in any way, either by being GodKings or by election or by RandomPeerPrivilege (which would be weird and fun); it doesn't matter here.
We construct a TrustMetric (well, a value flow network) rooted at R, eventually assigning each member x a trust rating t(x) in [0.0,1.0]. For all r in R, t(r) = 1.0, naturally. The trust value is meant simply to indicate how important the member is in the society. Thus, t(x) represents the weight of x's WeightedFranchise.
In the society, there is a set P of privileges. Each member in the community who chooses can say, "I (don't) trust member x to do p" for some member x and some privilege p. If the sum of the weights W(x,p) of those who trust a user exceed a threshold for p, h(p), then x gains (loses) the privilege of p.
Optionally, one could take the maximum of the weights. However, this would mean that h(p) <= 1.0, meaning that for any t(x) >= h(p), x would automatically acquire p. You could prevent people from giving themselves the privilege, but you still have the "problem" of allowing that one person alone can disseminate privilege. Also, can you take away privileges from someone you trust more than necessary to have the privilege?
Really you can use any defuzzification function f on the set of weights W(x,p) you want (sum, maximum, something else?) provided you can find a useful Boolean heuristic, h(f(W(x,p))) to say x can do p given the weights W(x,p).
Also, since trust is a DynamicValue, one should expire the weights after a certain term limit. Say I rated you >30 days ago, my rating can be forgotten as being out of date. This keeps the system adaptive. Note that, on the other hand, it's really easy to give people privileges in crises just by giving them your trust.
Contributors: SunirShah
This idea is still incomplete. For instance, good functions h and f need to be found. If f is the sum of w in W, it's trivial to attack the system. At least it's a start. -- SunirShah