# Concreate project ideas around the [[Fediverse]]
## Moderation
- NLP summarization / obfuscation / tagging for ease
- tools and resources to help against social engineering
- Interview moderators [[NOTES - BOOK - Deploy Empathy - Michele Hansen]], [[BOOK - Continuous Discovery Habits - Teresa Torres]]:
- [John :vbike:: "I decided to take some time to reflect on some of…" - SFBA.social](https://sfba.social/@cd24/109606387312018631)
## User education and onboarding
### Make an interactive tool that visualizes how different messages get federated across the fediverse
- based on personal policies
- instance software
- distributed system fallacies
- addressers
- moderation
- local timeline / federated timeline
### Make a tool that can be used to explain incompatibilities between clients / instances
It's hard to understand for a user why their profile will look different on a site (because some fields are for example not handled). There could be a service that can reconcile say, a client version and an instance version and explain exactly what and why things don't work. This would need to be carefully edited by a central authority, and devs/protocol people need to write up their changes in a way that educates users. This can of course be a public service (should!).
### Building tools for users to be able to participate in more complicated discussions
The tools used by developers (mailing lists, IRC, socialhub, forums, github, github issues) are hard for users to understand and participate in. There could be more user friendly frontend to for example:
- poll
- collect ideas
- announce meetings and changes
This is mostly editorial and content work, not technical work, I think.
## Social features
### Quote Tweet
- Quote tweet with "intent" flag? Why do I quote tweet? Of course bad actors will maybe misuse, but this could be useful to clarify intent for people using it in bad faith.
### Emoji voting
I find myself really missing responding by emoji. Most of my daily platforms (slack, zulip, discord) have that and it allows for a lot of "civil", unobtrusive, heartfelt discourse. So often I want to use or ![:blobhaj_hug_full:](https://media.hachyderm.io/custom_emojis/images/000/025/055/static/920104e64f570c17.png ":blobhaj_hug_full:") or 👎 or 👍 and then I don't, because I know "favourite" is not going to convey any proper meaning, and wasting people's space in replies and notifications feels too much.
It also allows for quick yet "civil" feedback if someone fucks up.
## User quality
- get digests / hold messages to deal with friends being in different timezones
- better control of dissemination and visualization of their messages (for example, being able to ask your instance how far a message was distributed, who could see it, collect visibility metrics in an unobtrusive way / privacy respecting)
## Safety and protocol issues
### Adding TTL (and other lifetime and spread controls) to messages
- Adding TTL to messages (across federation too ?)
- How many follower hops this can go through, not just based on time
- Which instances to expose this to potentially (provide a list of instances to exclude, per user, for example)
How many inboxes can this be delivered to before we stop forwarding? (that's hard...)
### EBPF like language for configuring "firewall" rules
- ActivityPub is basically routing, so a highly performant way of routing messages, both intra-instance and over federation, would be great
- Allows for sharing of rules, gitops, etc...
What is the data that the data running the firewall rule can even properly compute?
o
Example things to filter on:
- origin user
- followed?
- following back?
- age?
- tagged / flagged
- past interaction count
- strikes
- posting rate
- favourited posts
- profile information
- verified link
- avatar
- etc...
- origin instance
- age
- presence on lists
- maintaining lists is individual / instance / moderation / fetched from internet
- how many followers followed on it?
- tagged?
- software type
- message type
- message language
- message length
- flag for words (message indexing...)
- attachment
Actions:
- filter
- tag
- delay
- batch
- notify back (autoreply? some way to indicate a measure was taken...)
- archive
### Support experimentation based on ActivityStreams
- Write documentation on how to extend ActivityStreams easily for local protocol enhancements
- And libraries to support experimentation
## Developer stuff
### Mastodon test suite / compatibility tester
- currently, you kind of have to test your software against real instances until it works
## Product thinking
### Interview moderators and get a sense of their use of moderation tools
## No code approaches
### No code tool to configure automoderation rules
- add context to messages
## Personal search engines
### Build a federated search engine
- how to respect privacy
- respect flags that something shouldn't be indexed
- indexing something is a manual action (?)
- how can this be used to establish communities / instance based preferences
## Content creators
### Thread writing and scheduling
- basically typefully for the fediverse / mastodon
### Engagement and audience building tooling
- managing followers
- managing groups of followers
- tracking engagement
- tracking dissemination of messages
## Funny bots
- in general, the importance of bots to create and support community building
- in a way, they're just tools too
- spaced repetition bot
- study bots to create study communities?
- donuts bot
- help build community
## Brainstorm
### Bad actors
- bad actors will always try to subvert anything that gets built, and handling them needs to be separated from the features themselves into some extent. Maybe adversarial security thinking, and then building mitigations into the feature makes sense.
- but also, we want to build features that can be rolled back if they turn out to have undesired effects, and do so in a transparent manner.
- maybe there can be "opt in beta" periods for instances introducing new features
### User/Moderator centric ideas
- memorialization (when someone dies, when they retire their identity)
- TTL of posts and other personal data
- locked out account owners
- help instance owners and moderation teams protect against social engineering
What about
- statistical modeling of social media behaviours
- can we study the impact of potential new features in any meaningful way
- for example, could we gain useful insight into the impact of something like quote tweet using some modeling
- how can you validate that your takes are correct, especially while respecting privacy concerns of people on the fediverse
## Thoughts about reusing existing features to build tools
From [[2022-12-27]]:
> using existing things like hashtags and the like is also something that is a very powerful tool, instead of extending activitystreams and other things with more heavyweight solutions. But, there is the danger of these things turning into conventions that then just live on their own, but that's in a way the way things should go. Hack with tags / "moyens du bord", then when it starts to really gain traction, turn into a proper feature (like RT on twitter, basically). It's great that here, protocol conventions can start small and be distributed among forks and other implementers as things go by, and instances can decide to implement them or not. Really the discriminator here is the impact on users and the clients they use. Making a protocol choice not only impacts people using a certain instance, but it impacts them based on the protocols they use, etc... A really complex web for rolling out a new feature, because its beauty is also what makes it hard for the broad audience to join. So using tags also is
## Links
- article by [[Pleroma]] author on [[End-to-end Encryption]]:
- [Lain Thought on End-To-End Encryption with AP Characteristics for a New Era | Lainblog](https://blog.soykaf.com/post/encryption/)
- [[Double ratchet cryptography]]
- [[Diffie-Hellman key exchange]]
- [End-to-End Encryption implementation guide | Matrix.org](https://matrix.org/docs/guides/end-to-end-encryption-implementation-guide)