About

How the metric works, and where it comes from.

What Appleseed computes

Appleseed is a local group trust metric. It does not produce a global reputation score; it answers one participant's question — given who I trust directly, and who they trust in turn, who should I trust? Every participant is their own trust source, and each gets a different answer from the same graph.

How propagation works

A finite pool of energy is injected at the trust source and flows along the weighted edges. Each node keeps a 1 − d share of what reaches it as its trust rank and passes the remaining d on, split in proportion to its outgoing edge weights. The source itself pools nothing and forwards everything.

Because energy is split by relative outgoing weight, a node that vouches for one peer hands that peer everything it received, while a node that vouches for six splits the same amount six ways. Appleseed therefore rewards selectivity: participants who assign trust sparingly carry more weight per assignment than participants who assign it freely.

Back-propagating edges

Every newly reached node gains a virtual edge of weight 1 pointing back at the trust source. Without it, a node with a single low-weight outgoing edge would hand its entire share to that one successor, letting a barely-trusted peer outrank well-trusted ones. The back edge gives each node somewhere to shed energy, bounds the amount in circulation, and is what lets the iteration converge. It also means distance costs: the farther a node sits from the source, the more back edges have siphoned energy on the way.

The spreading factor

d controls how far trust reaches. Ziegler and Lausen recommend 0.85 and observe that low values for d favor trust proximity to the source of trust injection — turn it down and the ranking concentrates on immediate neighbours; turn it up and distant nodes stay in contention.

Energy conservation as a bug check

After convergence the produced ranks should sum back to the initial energy, since nothing is lost along the way. The shortfall shown on the main page is only the residue left when iteration stops at the convergence threshold. Cobleigh points out that this makes a cheap correctness test: if the ranks do not add up, there is a bug. This implementation is checked against it, and against the ranks published in the thesis for its Fig. 6.3 graph.

From ranks to a decision

A list of floating-point numbers is not yet an answer. Appleseed leaves the choice of cutoff to the application, which the thesis identifies as its biggest practical gap and the reason TrustNet exists. TrustNet's answer is a ranking strategy: cluster the scores into three groups with one-dimensional k-means, discard the lowest group, and merge the remaining two into the trusted set. That adapts the cutoff to the shape of each distribution instead of fixing a threshold in advance.

Distrust

Distrust here is one-step and subjective: a participant simply ignores the assignments issued by anyone they distrust. Distrust is not itself propagated. Marking someone distrusted therefore removes their opinions from the graph, not merely their score — which is why distrusting a node can also drop the peers only that node vouched for.

Credits

The metric is by Cai-Nicolas Ziegler and Georg Lausen, Propagation Models for Trust and Distrust in Social Networks (Information Systems Frontiers, 2005), developed from their 2004 paper introducing Appleseed.

This library is a Go port of TrustNet by Alexander Cobleigh (cblgh), from the 2020 Lund University master's thesis TrustNet: Trust-based Moderation — Using Distributed Chat Systems for Transitive Trust Propagation. TrustNet contributes the trust areas, the one-step distrust model, and the cluster-based ranking strategy layered on top of Appleseed.

Licence

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but without any warranty — without even the implied warranty of merchantability or fitness for a particular purpose. See the licence for details.

The Go port carries over the original's API shape and function names, so it is a derivative work and inherits TrustNet's AGPL-3.0-or-later terms. Section 13 of that licence requires that anyone interacting with this program over a network be offered its corresponding source, which is what the Source link in the header is for.

Copyright © 2026 Esteban Ordano. Original TrustNet implementation copyright © 2020 Alexander Cobleigh.