Extensible, user-defined curation mechanism #2744
imw
started this conversation in
Bluesky Lexicons
Replies: 1 comment 2 replies
-
This is really cool! An interesting way of thinking and should work as an extension to the lexicons, especially as this is context mostly consumed by feed generators. Some quick notes:
|
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
In this proposal, we (myself and @MrChico) imagine an AT Protocol extension that allows for powerful, novel feed curation mechanisms. In particular, we propose a system that would transform the nature of online relationships from a simple broadcast dynamic to a much richer and more nuanced conversational dynamic. While Bluesky already supports creating custom feeds via feed generators, and even allows for the inclusion of post metadata via tags, there is presently no way for users to emit information regarding the intended reach of their posts.
Essentially, what is proposed here is a mechanism by which the 'speech' layer of the AT Protocol can effectively signal to the 'reach' layer. By optionally including such information at a protocol level, a vast array of new feed modulation techniques become possible - most notably, that the 'follow' relationship can transform from a binary to a scalar value.
Of course, what is presented here is just an idea, and our intent here is to start a conversation around the minimal set of additions to the protocol that would allow not just for 'moderation' but also for 'modulation', i.e. controlling the volume of one's own voice.
Description
We propose a curation mechanism based on assigning weights the people that you follow and to individual posts, which we call gain and level. A basic relevancy ranking of a post would then simply be the product of these two quanties:
gain
– Follower weightInstead of the binary relation of
following
ornon-following
, a user may assign again
value between 0 and 1 to other users. This indicates their interest in seeing that persons posts; how their posts should be valued in your feed.level
– Post weightAnytime a user wants to make a post, they assign a
level
to that piece of content, indicating to their followers how strongly they believe that their followers should see it. Later, when calculating post relevance, this value can readily be normalized between users for a given timeframe.Relevancy
Let's refine our relevancy calculation above to include level normalization over a time window
$$relevancy = gain \cdot \frac{level}{\sum_{t1}^{t2}{level}} $$
t_2 - t_1
and note a few things:First, it is important to notice that this score is not universal; when we speak of relevancy of content it is always with respect to a user, just as
gain
is a relation between users.Second, what we imagine here is an extensible curation mechanism, in other words, a set of tools and customs which lets users define their own relevancy ranking based on commonly accepted variables.
With the quantities of
level
andgain
in place, it is easy to imagine other relevancy ranking algorithms: those that favor quieter voices, or users' self-selected best posts, or even interpolate likes and reposts withgain
as indicators that a piece of content should be treated as relevant.Implementation
The following protocol sketches are intended to help elucidate how this proposal might be implemented. Of course, it is possible that other, and perhaps better, implementations can be thought of. Our hope is that this can be a starting point for conversation.
gain
Updates to the gain value applied to a particular actor are also emitted to the network, in keeping with the design philosophy of account portability.
Note that we can interpret ordinary follow events as having maximum gain of follower to followee.
level
:Level records would be emitted alongside posts or other objects in order to communicate the intended level for a particular piece of content:
Pseudo algorithm
In a bit more detail, here is a suggested algorithm for calculating the relevancy of content to a user
u
v
to whichu
has assigned non-zerogain
:2.1. Set
g
to the gain ofu
assigned tov
2.2. Sum the
level
of all posts from this time period totot_level
.2.3. For each post
p
, assign the relevancyg * level_p / tot_level
Next Steps
As relative novices to the Bluesky/ATProto ecosystem, we thought it prudent to seek early feedback/critique for this idea. We attempted a crude implementation, but got bogged down in the intricacies of bundling a novel addition to the lexicon. We thought the idea was worth sharing nonetheless, and would be happy to hear your thoughts and feedback!
Beta Was this translation helpful? Give feedback.
All reactions