What is an instance? what is a federation? what is a server? can someone please describe in simple terms how this all runs and how we as users navigate it?
Welcome to Lemmy/the Fediverse! It’s 95% Reddit ant 5% email.
What is a server?
A server is just a computer that runs software that is always standing ready to do something for a user. For the purposes of our discussion, a server is the computer that runs an instance of Lemmy.
Let’s start with something we’re probably all familiar with: Reddit. The way Reddit works is, it’s a big company that owns (or rents) a bunch of servers. All of the data anyone has ever posted to Reddit, plus the software that makes Reddit go, is stored on these servers. Users open an account with Reddit, and they’re given access to these servers. Reddit controls ALL of them so it doesn’t matter much exactly which server you attach to. They might all be in one location, they might be scattered all over the world, it’s fairly transparent to users. The various websites or apps we (used to) use to connect to Reddit were simply front-ends which allowed us to access the server.
Lemmy is software that does a lot of what Reddit does. It’s software you run on your server which keeps track of users, communities, posts and comments. Unlike Reddit, which keeps its “back end” software a closely guarded secret, Lemmy is open source. Anyone can read the source code or run it on their own server.
What is an instance?
When someone runs a copy of Lemmy on their own server, that is an “instance.” Each Lemmy instance is its own little Reddit. You can sign up for an account on an instance, and the experience is very much like Reddit; “subreddits” are called “communities” here. The owner of the server is the admin, individual members can make posts to communities, comment on those posts, create new communities and moderate them…it’s its own little Reddit. lemmy.world is its own little reddit, sh.itjust.works is its own little reddit. Well what good does a bunch of little Reddits do?
What is a federation?
A federation is a group of independent organizations that work together as a group. Think of the United States of America: 50 states that each have their own constitutions, codes of law, legislatures, executives, courts etc. which are united under one common Federal government. Lemmy works this way; each instance is a member of the Fediverse, a federation of servers that run software which uses the ActivityPub protocol–a standardized way for servers to transfer various kinds of social media data between them.
Every instance of Lemmy is its own website, run on its own hardware, with its own communities, members, admins and such. Each instance will have its own house rules; some allow political discussions, some don’t. Some allow pornography, some don’t. Some restrict community topics to a broad field, like music or video games. Some are general purpose instances. It’s up to the admin of each instance. But, each instance is able to communicate with all of the others, so having an account on one instance allows you to communicate with all the others–with some caveats I’ll talk about later.
In fact, the ActivityPub protocol is used by other services besides Lemmy–another similar service is called Kbin, which is functionally similar but the software is written by different people. Lemmy instances can communicate with Kbin instances and vice versa.
So where every instance is its own little Reddit, all of the instances kinda voltron together to make one big Mega Reddit.
(continued from above because of character limits)
ActivityPub is used for more than just Reddit-likes. Mastodon has a similar micro-blogging format to Twitter, and PeerTube is similar in function to Youtube. There are alternatives to Facebook and I believe Snapchat as well.
You can kind of think of it like email–there is no central email.inc that all emails go through; gmail and protonmail and icloud and compuserve and hotmail and whatnot are all different servers that are capable of using the internet to find each other and send messages back and forth.
How all this runs.
You sign up for an account on an instance, say lemmy.world. This is your local instance; your local instance will handle all of the data going to and from you. If you create a community, it will be stored on your local instance. You may notice that instance addresses look a little like email addresses, ie [email protected]. That notes which instance that particular community is on. If you don’t see an instance name appended, it’s on your local instance.
When viewing lists of posts or communities, you are given an option to search for Subscribed, Local, and All. Subscribed will show you only communities you have subscribed to, it’s like your Reddit home feed. Local will show you only posts or communities made to your local instance. All will show you posts or communities from across the Fediverse. You can subscribe to, post and comment on communities from other instances, like I am doing now (my local instance is sh.itjust.works, I am posting to lemmy.world). It looks and works just like posting to my home instance.
A major difference users of Lemmy/the Fediverse should keep in mind: Reddit had platform-wide rules of conduct, which individual subreddits were allowed to expand upon. Lemmy does not have central admins or owners like u/spez to enforce platform-wide policy; those general rules come from the admins of each individual instance, which community moderators may add to. So rules and norms can vary between each instance, and when posting on an instance that isn’t your own, it’s a good idea to read the sidebar of that instance’s homepage to review them.
Thank you so much for the breakdown. I’m gonna reference back to this a lot while i try to wrap my head around this new space. I’m shocked at the amount of informative replies i’ve received and your guys’ good-spirited attitude towards reddit transplants like myself.
I was a long time reddit lurker but I feel compelled to post and it’s responses like yours that made me feel comfortable doing so.
TLDR: Thank you so much to everyone who broke it down for me. I’m having lots of fun in this space because of y’all and I am so excited to continue contributing to it.
Thank you for your thorough explanation, I get it now!
Great explanation, thanks!
That does clear it up some ty
When you visit other instances through your home instance there is a delay/difference though as I assume your home instance has to get info from the remote instance before it can show it to you?
Or is that just because my account is on a tiny instance and I’m the first one visiting a lot of the communities?
When you visit other instances through your home instance there is a delay/difference though as I assume your home instance has to get info from the remote instance before it can show it to you?
Yes, but it helps if someone else on your home instance has subscribed before, since it would already have that information.
Or is that just because my account is on a tiny instance and I’m the first one visiting a lot of the communities?
Also probably this.
This is awesome!
deleted by creator
Instance == server == each individual lemmy (Beehaw is its own instance, so is lemmy.ca, etc)
Basically, reddit was a bunch of communities on one server (the reddit servers)
Each lemmy instance has its own collection of communities, and each lemmy is connected together, so users from any individual lemmy can read and interact with communities and users from other lemmys (this is federation)
All of these lemmy instances federating makes up the greater lemmy network as a whole
Thank you for this.
How does one go about finding communities from other instances and connect with them?
https://lemmyverse.net/ is a great tool for searching for communities and instances.
https://browse.feddit.de is great and so is https://subs.rehab
Use your instance’s search feature. You can search
- Name of community:
No Stupid Questions
- By using !community@instance syntax:
!nostupidquestions@lemmy.world
- URL of the community:
https://lemmy.world/c/nostupidquestions
First option won’t work if your instance hasn’t federated the community yet. The last option is best in my opinion.
Some small addition to the last option:
If you want to browse a community from a specific instance on your home instance you have to add the ‘home’ instance.
For example your home instance (where you did register your account) is Lemmy.ml and the community you want to interact with is on Lemmy.world you would use:
Https://Lemmy.ml/c/[email protected]
In order to be able to post, reply etc
- Name of community:
Overall great explanation, accurate and short.
The one thing I dislike is the usage of ‘lemmy’, which you seem to use as a synonym for ‘instance’. That is both inconsistent (you already established terms for that; ‘instance’ and ‘server’), and inaccurate.
Lemmy is the whole, the network of federated and defederated instances.
An instance/server is like an email provider but for your
RedditLemmy account.Hello this is my first comment on Lemmy, so consider me an expert.
The idea of ‘federated’ websites is that you can use your login from one server to interact with another server. An analogy is email: you can have a gmail account that can send a message to a yahoo account via shared and open source protocols (e.g. SMTP).
One question I do have though; if I create my account on Lemmy.world and then for whatever reason that instance disappears; does my account disappear or is it recoverable on another instance?
Think of it like email. Email is a protocol that people can use, but email isn’t “owned” by anything. Instead, different mail servers (like outlook, Gmail, proton, etc) use that protocol to talk to each other.
Lemmy uses a protocol called activity pub, and different instances like lemmy.world, lemmy.ml, etc can all talk to each other using that protocol.
You’re on the instance sh.itjust.works, while I’m on lemmy.xylight.dev, but you can still see my comment!
Imagine instances as treehouses - then servers would be the trees they’re built on.
You enter a treehouse and sit down - that’s your home instance. You can talk to others in your treehouse, you can share stuff, but not between treehouses. You can leave and enter another treehouse (make another account), but what if there was a better way to talk?
That’s where federation comes in. Two treehouses can choose to set up a telephone line with two cans and a string (federate). Then the users in one can use it to talk to another without actually being present (having an account) in that treehouse.