Use moderated tags instead of subprismos


Yes. For bigger subreddits, most users generally don’t browse all posts, they just go through top few (10, 20 or whatever) posts depending on time / interest.


So their experience would be the same if the pic story just wasn’t in the feed, as opposed to being down below?


Yes, but they can view it if they go down enough, it all depends on how much votes it got compared to other posts.

The main point is, how do you differ between #pic votes and #science votes, because there can be another post, with both #pic and #science tags, which got high votes in #science so I want to view it.

I don’t want to filter out any posts, I just want to sort them based on it’s popularity in #science.


It was discussed in the matrix room that maybe the vote-count could be normalized to the popularity of the tags for a given period.


But that’s exactly the point: to make tags moderated :slight_smile:

You cannot in the Fediverse - anyone on any instance can add content with tags to their liking!


Anyone can also block as they wish. A layer of moderation of tags can simply be implemented as a blocklist that filters tags for posts according to that blocklist. As I proposed before that system could be run through a web of trust which would allow the moderation to be running independently of instances. Thus allowing a decentralised solution that is not locked to specific rules for specific instances.


This can be implemented if votes are registered per tag as well. The popularity can then be weighted depending on the users set of tags.


“Web of trust” is a nice academic idea, but does not exist and there is a reason for that, really hard to achieve. Progress of Prismo should not depend on an idea that we do not know how to implement.

Did you really propose to block instances where anyone used a tag in a different meaning than you intended it to have?
(You might as well start a centralized service then :wink: )


Blocking instances might be a bit draconian, but blocking users? Absolutely. Are you aware of “steemit”? They function by tags there. A few months ago, when I tried it, the #science was full, and I mean full!, of anti-vaxers and flat earthers. It was insane.

So, ya, tags or subs, whatever it is, blocking and ignoring needs to happen or it will be a clusterfuck of idiocity…


that’s totally impossible and i’m not even able to imagine how it could look/work in the interface. So we can’t go this route.


There are plenty of WoT implementations out there. And they are rather simple. I don’t see the problem other than deciding how trust propagtes over distance, but something similar to how it’s used for spam filtering perhaps.

As for what to block I propose just blocking the adoption of the tag only. Why would you extend it to anything else?


Why is it impossible and what interface are you talking about? UI wise it’s irrelevant as it wouldn’t show up.

As for determining post popularity giving the end user a choice of how is a simple filtering option.


simplest example possible - there is a post with #tag1 and #tag2 on frontpage of prismo instance and you vote it up - to which tag should this vote be applied to? We can’t automatically apply it to both tags as it should be a fully concious decision. On the other hand, user could pick to which tags his vote is applied to in some sort of a dropdown/modal but that sucks on a lot of levels and does it mean one user can cast multiple votes on a story? That’s really a super hard thing to implement and to present properly in UI/UX terms, there are a lot of scenarios and issues we know and even more we have no idea about yet.


The post is voted on not the tags. And the relationship between the vote and the tags that both the post has and the voter subscribes to is saved. A simple relationship between vote and relevant tags needs to be saved additionally to the vote itself.


ok i misunderstood what you wrote few posts before, forget what i said :wink:


Tags are metadata on each post and not strictly the same as categories. Both tags and categories can be used to sort and organize data, but the community structure needs different semantics.

It seems that there are two main considerations here:

  • instance communities (a la reddit admins)
  • sub-instance communities (a la subreddit mods?)

The real point of contention is what an instance should be, and what kind of hierarchy it represents. In a system like reddit, the instance is simply a collection of data, while the sub-instance is an interest-based community. In a system like hackernews, the instance is somewhat interest-based already, and there aren’t really sub-instances aside from /ask, /show, and /jobs. So, how are these represented in ActivityPub? This will inform some of the design decisions about how to sort your data into subsets.

Fundamentally, you’d want to be very clear on whether you are establishing group-based forums, or if you are simply aggregating user-generated content. The “forum vs. aggregator” or “user vs. group” distinction is very important here because it’ll determine your organization of data.

Thus, the proposal for moderated tags works best in a global aggregation system, and perhaps not so well for a localized aggregator, or for forum groups in general. Asking for moderated tags is akin to asking for a more user-centric service, one based less on topicality. I’m not sure what Prismo can offer in that space that other software doesn’t already do better – would it just be an alternative frontend for an over-glorified search engine? Does each Prismo instance consist only of moderators that choose to accept/reject content within each tag? What is the point of a Prismo instance if it only hosts user-generated content rather than facilitating communities?


My proposal of a combination between WoT and relational tag voting makes both moderating and tag popularity sorting makes it var more like a distributed platform in which users can both partake in a bigger community while also have free choice of moderation and representation of popularity.

I have limited time so I simply did this crude and not so well thought through not-really-a-specification™ as an explanation. Feel free to do with it as you wish.

  • Web of trust
    • Moderators
      • Moderators are users of any instance.
    • Marks
      • Moderators mark bad usage of tags in the user interface.
    • Trust
      • Moderators describe direct connections to other moderators in terms of trust.
    • Distance
      • The distance in the web of trust between two moderators are the shortest distance in direct connections.
    • Trust values
      • There are a number of ways to define trust values over distance, how this is done can be discussed. It represent the trust over distance between nodes. Which method might even be configured by each moderator. A simple 0-1 or 0-100% will do for this application imho.
    • Web of trust database
      • For each moderator the instance that the moderator is a used of maintains a web of trust database.
      • Marks
        • Marks are saved as a relationship between post and moderator in the web of trust database.
      • List of connected moderators
        • The web of trust database maintains a list of other connected moderators that are sufficiently close.
        • The closest distance and the highest value of trust through that distance is kept for each moderator in the list of connected moderators.
      • Connected Marks
        • Each web of trust database maintains a list of marks that exists among connected moderators
        • A value for each connected mark is calculated by addind the total trust value of all the connected moderators in the sufficiently close web of trust.
        • If a connected mark has a high enough value it counts as if it where a mark by the moderator in terms of blocking.
    • Users
      • For each user the tag of a post is checked in the relevant web of trust database for marks. If it has a mark it’s then that tag will not apply to the post for that user.
      • A user may chose to handle it’s moderating and web of trust themselves. Or they may pick moderators which they entrust to do the work for them.
      • Moderators the user chose to entrust are simply one distance away and trusted 100% from a technical viewpoint.
      • From a user experience perspective there might be a difference in interfaces between just trusting moderators and being one oneself. This is up to the different implementations and irrelevant to the technical specification. Implementations may also chose to add one level of distance in such cases.
  • Tag voting
    • Each vote is registered per post
    • For each vote each tag that the voting users subscribes to gets a relationship between post vote and tag attached to it.
    • When sorting by popularity the user may chose to sort by popularity only of the sub one views, of all subs that one also subscribes to or to the post itself. Combined with the blocking of moderators in ones WoT this will allow for a better usercontrolled view of popularity.


Here is a copy of one of my posts on Matrix.

I think you are putting most of the stress on technical difficulties of moderated tags while I believe most of the difficulties can and will be overcome by humans running the system, not a tight moderation system.

Have a look at mastodon. It is a mess, and still people manage to make most mastodon instances a very nice place to hang around.

How I see things: we should use a generic topic system that is not bound to any instance (tags make an obvious candidate for this) and rely on existing federation (either user-based or instance-based like peertube) to offer a tag-oriented prism on the fediverse, while not reinventing anything else. So step 1, implementing basic and standard AP federation with usual moderation tools (which is already a difficult task).

In such a world, tags would mostly be the equivalent of subreddits (while inherently different). Different instances would act as different moderation prisms or different user bases and overall ideological identity, while not supplenting tags as the main topic system.

Once this runs fine, we should definitely offer more prismo-specific moderation tools, a.k.a. tag moderation. I believe this would start with mute and block at the tag level, and mute or block for a user-tag combination: refusing to talk about a topic on a given instance and “banning” a user from a topic respectively. This is step 2 and builds naturally on top of existing more standard moderation infrastructure.

Finally we could develop some evolved concepts like cross posting to complement boosting, score normalization, etc. I am convinced these are the most complex issues but are not necessary for an MVP.


Also, I thought about a normalized scoring system to not overscore posts that have multiple tags.

The basic idea has nothing really fancy: when displaying posts for a given tag, let every vote for a displayed post count as 1/sum(votes for every tag in the post), or simply sum(votes for every tag in the post) if you are prepared to deal with large integers and sort ascending instead. All of this is per vote, so it is compatible with any sorting (1h, 1d, hot, etc.)

This will basically compensate for votes obtained by people visiting other tags. I had the initial intuition this was way too simple and would not account for complex effects with very popular tags, or some tags that are mostly informative and that people will not use for voting. Then I ran some test numbers and it started to make sense.

First issue is the total number of votes for a tag is obviously biased because we cannot know if a vote was obtained through one tag or another. My assumption on this is it is irrelevant and the bias for the displayed tag will be more or less linear to the bias for other tags, and things will compensate. I might be wrong and this needs testing.

Then the big elephant to address is the assumption in the formula that people will vote homogenously for a given post when browsing any of the post tags. And this might be wrong. Next question is: when is this wrong? a. for informative tags, where people will not vote at all, but since they will not vote for anything, the effect is null. b. when people browsing one of the tags are not as interested in the post as more qualified viewers browsing the “main” tag.

This brings the question: isn’t this exactly what would help us? Mistagging a post, either by targeting larger audience than necessary, or trying to abuse the vote system, or just spamming, will result in lower scores. Also, mass tagging a post will result in lower scores.

In general, I believe this will encourage people to use mostly informative tags (which do not generate votes and thus do not influence scoring much) and tags related to their primary audience. Again, this is just theories and needs proper testing.

Finally, what will happen federation-wide I am not sure. I postulate the effect will propagate and things will be fine, but at the same time depending on the discoverability, every instance will have different total vote counts and some weird side effects might arise.

At the end of the day, this needs testing, or it is only clever talk. Good news is it is far less complex that I would have imagined so hopefully a basic version can be pushed to a flagship instance for feedback and federation support will let us see how it behaves across instances. It does not have to be mandatory at first, even better: the scoring algorithm could be configurable per-instance.


If you settled on the tags, look on for inspiration. It has an interesting way of sorting content.