Skip to content

Local only posting

Darius Kazemi edited this page Dec 2, 2022 · 16 revisions

Local only posting is a per-post security option that lets you set whether that post can federate out to other servers or not.

Why

Mastodon right now is designed to get your messages out to the entire fediverse. This is great, but there is a huge need for more private communities. And in a federated network I think it makes the most sense for your home server to be that community (hence "Hometown").

I've been running Friend Camp, a Mastodon instance with local only posting, since August 2018. Being able to have conversations with people on your server that don't federate is a hugely liberating thing. It allows inside jokes to develop. It allows people the freedom to complain about things that they wouldn't necessarily feel comfortable leaving a trusted server (cops, employers, etc). It also lets us do things like have a server-wide movie night where we flood the local timeline with posts about the movie, and it doesn't pollute the rest of the Fediverse.

I wanted to bring this nice experience to other people, hence this very project!

For more on why local-only posting is great, check out Run Your Own Social.

How

There is a new icon next to the CW dropdown that looks like a chain link, either unbroken (for federated) or broken (for local-only). On each post you make, you can set whether it's local or not.

Screenshot of someone clicking the 'link' icon on the compose interface, with a drop down that offers 'federated' and 'local-only' options.

 

A local-only post will appear in your timeline with the broken chain icon on it:

Screenshot of the home timeline with a local post on it bearing the 'broken chain' icon.

 

In your Preferences menu, under "Other", there is an option that says "Allow my toots to reach other instances by default". This is checked by default, which means your posts are normally federated if you don't touch any of the per-post settings. If you uncheck this, then your posts are normally local and you must make an effort to federate your content on each post using the per-post toggle shown above.

Note on 3rd party apps

Most third party apps do not explicitly support local only posting, but there is some default behavior that gets around it.

One iOS app that I am aware of supports local-only posting: Tusker. It's still in beta but you can click "join the beta" on their website to get your hands on it!

The :local_only: emoji

As of Hometown v1.0.5 (released Aug 13, 2020), any post made that contains the custom emoji :local_only: will be posted local-only. This is intended to provide a way for people using third-party apps to set specific posts to local-only without having to log in to the main web client. The emoji itself can be whatever the admin wants it to be.

On Friend Camp we use a very unobtrusive dot so as not to clutter things visually, but feel free to choose whatever works best for your local culture. Another nice option is this icon a broken chain link by @pfx@rage.love, released under a WTFPL do-what-you-want license.

Note: even if the specific emoji isn't set, the text :local_only: in a post will still trigger this behavior.

Sensible defaults

As of Hometown v1.0.4 (released May 17, 2020), if you use a 3rd party app like Tusky or Pinafore or Toot!, local-only posts work as follows:

  • If your account is set to federate by default, then your new posts will all be federated (aka not local-only).
    • If you reply to a local-only post, your reply will be local-only.
    • If you reply to a federated post, even on your own local instance, then your reply will be federated.
  • If your account is set to local-only by default, then your new posts will all be local-only (aka not federated).
    • If you reply to a local-only post, your reply will be local-only.
    • If you reply to a federated post, then your reply will be federated. This means that you can still chat with people on other servers even if you're set to local-only by default.

API exposure for 3rd party clients

As of Hometown v1.0.8, you can access the api/v1/preferences endpoint (with appropriate permissions as usual) and you will get a posting:default:federation key in the object that is returned. If the value is true, then the user has their posts set to federate by default and any "local-only" posting toggle should be set to federate when the user goes to compose a brand new post. If the value is false then the user has their posts set to local-only by default and any "local-only" posting toggle should be set to NOT federate when the user goes to compose a brand new post.

Who

This feature is based on the work of Renato Lond, which is itself based on a feature in the Mastodon Glitch Edition fork. Third party application interactions were redesigned based on the suggestions of @lostfictions. The idea for an emoji triggering a local post comes from Mastodon Glitch Edition, and the idea for it to be a custom emoji called local_only comes from @t54r4n1@mspsocial.net.