glitch-soc / mastodon

A glitchy but lovable microblogging server
https://glitch-soc.github.io/docs/
GNU Affero General Public License v3.0
680 stars 180 forks source link

Comprehensive Toot Dynamics: Managing Toot Visibility, Actionability, Propogation, and Discoverability #21

Open haniawni opened 7 years ago

haniawni commented 7 years ago

We keep wanting to have more granularity of control over our toots- does it show on our profile, does it only go to the mentioned ppl, does it leave the local instance, etc.

However, the proliferation of controls runs the risk of scaring off or overwhelming new users.

Hence I propose two modes for the toot dynamics config interface:

Simple Mode (on by default):

- DM/Direct to Mentioned
- Followers
- Public Timeline

^ (this basically just hides federation-specific controlling and boostability-controlling)

POWER MODE

Visibility: (WHO can see it, checkboxes)
 - Mentioned
 - Followers
 - On Local TL
 - On Federated TLs
 - On My Profile

Actions: (WHAT can be done with it, toggles)
 - Boostable (maybe further breakdown, local vs federated)
 (potentially add) quoteable
 (potentially add) direct linking (disabling direct-to-toot URL from timestamp or something, idk)

Propagation (WHICH INSTANCES get it, slider?)
 - Only Local Instance
 - Federating: open borders only
 - Federating: open borders or silenced
 - Federating: Literally Anybody

Propogation would be actually implemented as a set of binary toggles like: prop_federate prop_to_silenced prop_to_blocked

In this splitting of settings, the Simple Mode settings translate to:


Direct to Mentioned =  {
 Set to True: vis_mentioned, act_linkable, prop_federate, prop_to_silenced
 Set False: vis_followers, vis_localTL, vis_federatedTLs, vis_profile, act_boostable, act_quoteable, act_linkable, prop_to_blocked
}
Followers = {
 Set to True: vis_mentioned, vis_followers, act_linkable, prop_federate, prop_to_silenced
 Set False: vis_localTL, vis_federatedTLs, vis_profile, act_boostable, act_quoteable, act_linkable, prop_to_blocked
}
Public = {
 Set to True: vis_mentioned, vis_followers, vis_localTL, vis_federatedTLs, vis_profile,
     act_boostable, act_linkable, prop_federate, prop_to_silenced
 Set False: act_quoteable, prop_to_blocked
}
haniawni commented 7 years ago

Note that there would almost certainly be some illegal combinations of settings in power mode, such as enabling both "Mentioned Only" & "Federated TLs"; but that seems to me like

A) The simplest approach is to just disable the toot button & show little alert below it when the settings are in an illegal state, that'd be easy enough, basically trusting power users to fix it or possibly listing the incompatible setting combos

b) if we want to, incompatible settings could get locked in as other restrictions get set; that is, Disabling Visibility: Public would disable all Discoverability options

haniawni commented 7 years ago

Updating now to merge Discoverability and Visibility, and use a binary (rather than ungodly list of strings or something) representation

marrus-sh commented 7 years ago

Toots should always be visible to mentioned imo. I don't think local/federated timelines need to be split either (tell me if any of y'all disagree) since that's mostly covered by propagation. So I would have the visibility settings be as follows:

# Who can see it:
- Visible to followers?
- Visible to non-followers?
# Where it appears:
- Visible on my profile?
- Visible on the public timeline?

If you say no to all of those questions, that's a direct toot. Followers-only would be {yes, no, yes, no}. Unlisted is {yes, yes, yes, no}. Public is all yesses.

I would be in favor of giving all of these options local v. federated variants; for example, a toot with propagation: open borders that federates as propagation: none would prevent the toot from being federated past instance blocks. Similarly, toots with visibility: public that federate as visibility: profile-only or toots with actions: boostable that federate as actions: none.

ghost commented 6 years ago

I think referencing #2 here is a good idea?