Since the SPIM discussion has sparkled again in the operators list, I would like to resurrect long-standing reputation problem in XMPP (see, for example, XEP-0275).
We probably can consider how this problem is being solved in distributed p2p systems. One of the popular approach to collect reputation in p2p systems is EigenTrust[1] model and its derivatives. While the method itself assumes file-sharing and the rating is based on satisfied/unsatisfied downloads, it can be adopted for rating based on subscriptions information of remote contacts, collected by servers *only* (i.e. a user cannot provide reputation for her contacts). It seems like everything supposed to work for EigenTrust will work in this case too. Another advantage of this method is that we don't need to require all servers to support it instantly: the reputation information will be aggregated amongst servers supporting the feature and it will even contain reputation about users from ancient/abandoned servers. Although the idea of EigenTrust is relatively simple and easy to implement locally, the main problem is how to disseminate this information across all XMPP servers. For example, EigenTrust is assumed to be built on top of existing structured overlay (DHT-like), GossipTrust[2] is built on top of unstructured overlay using its gossip routing (Kempe algorithm[3] is suggested). While for XMPP we have yet to build such overlay on top of s2s infrastructure. I can think about several possible solutions: 1) a centralized trusted reputation aggregator. The problem of such approach is obvious: single point of failure which looks awkward inside the distributed s2s system. 2) building a structured overlay (DHT) on top of s2s infrastructure. The major problem is, of course, maintaining churn: data migration and anti-entropy. Although, solutions exist to these problems (such as RelaxDHT[4]), they are not trivial. 3) building a hybrid overlay: a group of server operators maintain a top-level tier of aggregation servers which collect and share reputation information. The list of aggregators (which will be also a bootstraping list in the overlay) will be maintained in DNS by xmpp.org (e.g. reputation.xmpp.org). All other servers will be logically grouped in a second-level tier. They will only upload their locally collected reputation information to the aggregators and perform lookups from them. This is the most feasible solution in my opinion. We don't even need in fact to build it on top of s2s network, probably we can use existing database with needed characteristics (i.e. distributed partition tolerate database with eventually consistent counters) and deploy it on the aggregators. Sorry if the information here is cumbersome, this is just my brain dump. Alas, there is no simple solution for distributed reputation systems. Please ask questions if you want to clarify/critic something or have another/better ideas. [1] http://ilpubs.stanford.edu:8090/562/1/2002-56.pdf [2] https://pdfs.semanticscholar.org/a91c/c05025cf5c0b22cb8dc73f1a93d566054f35.pdf [3] https://arxiv.org/pdf/quant-ph/0210064.pdf [4] https://hal.inria.fr/file/index/docid/374095/filename/RR-6897.pdf _______________________________________________ Standards mailing list Info: https://mail.jabber.org/mailman/listinfo/standards Unsubscribe: standards-unsubscr...@xmpp.org _______________________________________________