Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot see followers from other servers #19880

Open
steren opened this issue Nov 6, 2022 · 14 comments
Open

Cannot see followers from other servers #19880

steren opened this issue Nov 6, 2022 · 14 comments
Labels
bug Something isn't working

Comments

@steren
Copy link

steren commented Nov 6, 2022

Steps to reproduce the problem

I open the user profile of one user from another server in my mobile app or personal server, e.g. https://status.steren.fr/web/@b0rk@mastodon.social/followers

Expected behaviour

I can see the list of followers of that user from any server

Actual behaviour

I can only see followers of this user from my current server

Detailed description

image

Specifications

Mastodon v 3.5.3.

@steren steren added the bug Something isn't working label Nov 6, 2022
@steren
Copy link
Author

steren commented Nov 6, 2022

Here is a concrete example:

As I browse a user on https://status.steren.fr/, I do not understand why I have to go to the original server to see the follower data of this user. I would expect my server to be able to fetch and display the content I am looking for, considering that I can access it manually in a click.

@trwnh
Copy link
Member

trwnh commented Nov 6, 2022

  • You will have to fetch all accounts discovered this way, and recursively fetch their followers/following
  • You will never know if there are gaps
  • Remote websites can lie about this information
  • This information may not be available at all in the first place, if the user hides their network

In conclusion, there isn't anything that can really be done here in a consistent, verifiably accurate way.

@steren
Copy link
Author

steren commented Nov 6, 2022

I'm sorry, I do not understand:

What is technically different between these two pages? Isn't it possible for my server to ask the user's server for the list of followers? It seems that the user's server is able to display them.

@trwnh
Copy link
Member

trwnh commented Nov 7, 2022

  • In order to display a follower, your server first has to be aware of those accounts. Hence, as stated above, "You will have to fetch all accounts discovered this way, and recursively fetch their followers/following", and in doing so, "You will never know if there are gaps" because pagination is not consistent.
  • Your server could ask the remote server for this information, but it could lie to you (as stated above) or simply refuse to tell you (again, as stated above)

@SamStephens
Copy link

This is a nasty experience. It's going to be a common way for people coming across from other social media to find people; find someone they know, and use their list of followers/following to find people.

I just witnessed someone close to me who is new to Mastodon struggle with this last night. They tried to do discovery by finding someone they know and looking at their followers. They saw no one except me on that list, followed the "Browse more on the original profile" link, and were baffled why they then couldn't follow anybody in the list I saw. I had to explain to them to copy the friend links into the search on their local instance to find and follow these people, and about how their identity is tied to their local instance. This is a high barrier of entry for anyone who is non-technical.

This is a soluble problem. My suggestion would be rather than "Browse more from the original profile", you offer a link that says something like "Fetch more followers from the original profile". When you clicked this link, the page would make a request to https://front-end.social/users/leaverou/followers.json to pull the list of followers from the remote server and display them (going directly to the remote Mastodon instance, not using the users local Mastodon instance). As we'd be displaying this information without navigating away from the users local Mastodon instance, the followers list would be able to be fully usable with your local identity.

There shouldn't be any need for any kind of recursive look up here. If https://front-end.social/users/leaverou/followers provides the followers as HTML, https://front-end.social/users/leaverou/followers.json provides it as JSON; a one stop shop.

As far as the trust issue goes, you're already sending users to a remote, untrusted server with the "Browse more from the original profile". The only difference with this design is that we're displaying the untrusted information in a more usable context. Any concerns about the lack of trustworthiness could be address in the UI in some fashion (a warning on the link or something).

Regardless, if our user actually tries to interact with these links, looking at the user, following, etc will be via our local instance, and therefore trustworthy. If https://front-end.social/users/leaverou/followers.json did lie to us and present us with people who don't exist, when our user tries to interact with those fake users, the interactions will then 404.

@sickcodes
Copy link

sickcodes commented Nov 19, 2022

You will have to fetch all accounts discovered this way, and recursively fetch their followers/following

On a server that is 1Gbps, maybe 2.5Ghz, fetching 200 database rows to dramatically enhance the user experience is a fair trade.

You will never know if there are gaps

Better than missing them all

Remote websites can lie about this information

Remote users can lie about anything too

This information may not be available at all in the first place, if the user hides their network

If it's not available, empty box

The key issue is that in the browser, you can see other server peoples followers, but on mobile, the UX is different.

If I want to find all my Twitter follows on mobile, I have to guess everyone's address.

Lastly and most importantly, not being able to see your peers, on a federated separate instance (what mastodon was designed to do) prevents the app from growing and disincentivizes anyone from creating more servers (ala, centralization).

@piccolbo
Copy link

In the browser, that's not true for me. When I browse for instance to a mastodon.social profile from hachyderm.io, the list only shows profiles from hachyderm and ends with this message

Followers from other servers are not displayed.
Browse more on the original profile

Maybe what @sickcodes is saying is that in the browser at least I have the chance to "browse more" which is not available in an app (which I don't use, so based on what I've read here). But it's not an ideal experience, because once you are away from your server, you can't follow anyone or comment or do anything. I agree it is a less than optimal UI.

@joshrivers
Copy link

I created my first Mastodon account this weekend, using the browser on my phone and the mobile app. I quickly found the first person I wanted to follow using search even though they were on another server. I knew they were following a large number of the next people I wanted to follow, so I went to their following page...and only saw two names. I clicked on the "Browse for more on the original profile" link which worked and showed the following list I was expected. Then I selected the second person I wanted to follow, pressed 'follow', but realized I was trying to follow on a third server that I did not have an account on. I poked around on the profile page and found that I could copy their @user@server and then take that back to my server and search it and then correctly follow. However, multiple window management and lots of copy and paste is miserable on mobile, so I threw up my hands and decided to climb that hill another day when I was in front of my PC.

This is the fix I'd like to see in this ticket. It seems like a real problem for onboarding new casual users if they have to understand navigating between hosts and exfiltrating identifiers in order to use the follow button on their own server. I'm still trying to get my kids to understand that 'Google' is a company and website, but 'Chrome' is a browser application and that you can use Google without Chrome and you can use Chrome without Google.

I am always hesitant to say "just do this, it's so easy to implement" since I'm really not an expert on the data models and server interactions that exist, so perhaps someone can share more about why a user experience improvement has negative side effects that we should avoid. There was a list of negatives in a previous post, but I don't understand why these would prevent creating a better UI:

  • "You will have to fetch all accounts discovered this way, and recursively fetch their followers/following". Is this really more than one fetch? The follower list is shown on the web in a single page load from the target account's primary server. Does showing the names of the followers/followings require recursive lookups, or can this be one-page at a time? There would be a second network request to pull the profile page of the next account you select, but only after user interaction, and that next account could be pulled up through the search API of your account's server, right?
  • "You will never know if there are gaps" - if the follower/following list was correct for server-local accounts and shown as "untrusted data" below that, I think most users would be fine in getting incomplete data rather than none at all.
  • "Remote websites can lie about this information" - since I'm forced to go to the remove website to look up the followers, I'm already faced with a possibly false list, displaying this as "untrusted data" in the first view wouldn't be more or less falsifiable, but would be more usable.
  • "This information may not be available at all in the first place, if the user hides their network" - if a user hides their network then there is nothing to show. That's fine. It doesn't have to be perfect, but if I follow Legolas, I think it should be easy to find and follow Gimli, Frodo, Sam, Gandalf, and Elrond even if they are on different servers. If Sauroman wants to hide his friend list, then that's just expected behavior.

In the end, I was able to complete a batch of follows on my new account using my phone, because Frederico Viticci created an iOS/MacOS shortcuts automation masto-redirect that handled parsing and looking up things and pushing me back to my own server. Something similar could probably be wired up as a browser extension or greasemonkey script. I'd just suggest that exposing this functionality in my server's UI and API would enable a better user experience than needing to push this kind of automation out to client-side hacks.

@knutole
Copy link

knutole commented Dec 15, 2022

This is a HUGE bottleneck for adoption. This issue should be on the very top of priorities, imho.

@seanthegeek
Copy link
Contributor

seanthegeek commented Dec 17, 2022

I strongly agree with everyone above.

Currently this in a cumbersome process of copying the URL of the profile into a search on your server, clicking on the user in the search results, and then interacting with that us/post. This does not scale well when you want to follow multiple accounts.

@seanthegeek
Copy link
Contributor

seanthegeek commented Dec 22, 2022

Hey everyone! As a workaround until this issue is fixed, I created a little Python CLI/API that can export a following or followers list to CSV, including the account address, display name, bio, and avatar URL directly from the target user's server. After that, you just remove the CSV rows for the accounts you don't want to follow, and then feed the list to back to the CLI, or upload it in the Mastodon import web UI.

It can export and import lists too, so you can share them with others until we get an option to make public lists.

Feedback and PRs are appreciated!

https://github.com/seanthegeek/mastodon-listmanager

I made a post about it here. Please boost it if you think your followers would find it helpful.
https://infosec.exchange/@seanthegeek/109558067919068764

@trollfred
Copy link

This look like design flaw a feature

@CE2322
Copy link

CE2322 commented Jul 8, 2023

Sad to see this hasn't been addressed. Finding "friends of friends" so to speak is a great way to connect with new accounts you might like.

I just experienced this issue with one of my friends. I shared a funny post in a text message and he was like you know what I'll sign up. He made an account on the server of the post (which is not the server I'm on). And then he was like who should I follow? He went to my profile to follow whoever I follow because we have similar interests. But he couldn't see anyone.

I explained to him that he can't see who I'm following unless they are on his server. He would have to go to my profile on my server to see that. But he can't follow them there because he doesn't have an account on my server so the "follow" button won't work. He has to copy and paste each account so he can search for it in a new window on his server. He then said forget it and stopped using Mastodon altogether.

We can come up with plenty of reasons why it's hard to do this (your server would have to make a bunch of calls, you can't trust what the source server says, it would be custom to Mastodon and not built into ActivityPub, etc, etc). But the reality remains that it's an awful experience unless you're tech savvy. If Mastodon is going to make it into the mainstream it needs to be able to handle users who don't want to tinker with it.

This is a solvable problem.

@brendanjones
Copy link

Not really a bug, just a missing feature. Thoroughly agree it should be fixed, though.

Looks like #20533 is duplicate. If the concern is too many requests or something like that, this could be partially solved by filling the follows/followers list when you follow the account, e.g. when #34 happens.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests