this is a #mastodev UX bug we really need to fix. when logged in and you click "follows" it should just open the users profile in a new window where it shows all their follows/followers and not say this "This user doesn't follow anyone yet." cause its clearly not true.
many people I have shown this site have been super confused by this...
@Gargron@icosahedron.website
@liaizon this happens because of how federation works. Thing is, I do understand it. 99% of people do not. Other instances don't know about all of the relationships of foreign users. I was thinking about ways to fix that in #Smithereen, because I clearly do need that — I need complete friend lists to show mutual friends in profiles.
Actually, this applies to likes as well. If you see a post from another instance, you NEVER see the complete list of people who liked it.
@grishka the home instance has the complete view of itself though no? Like if I look at my own profile, and see how many likes or responses a post that I made got, thats the full view isn't it?
@liaizon of course it does. But all other instances only have partial data.
This could in theory be fixed by your instance forwarding your followers (Follow activities) to the instances of your other followers. Too cumbersome, but hey, it's a distributed system ¯\_(ツ)_/¯
@grishka well we need more people like you here who continue to ask the right questions! I have been really enjoying all your posts to https://socialhub.activitypub.rocks and I wish other people (like Eugen) would get involved more with these discussions over there...
@liaizon I mean, I worked at VKontakte for 5 years, so I probably know a thing or two about building a social network that doesn't suck. And now that I have no job all my time is free.
@grishka I saw you mention that in a post a while ago, what part of VK did you work on?
@liaizon Android app. Most of the time as the only developer. Hence my weird-ass choice of Java for #Smithereen lol. One could say I speak Russian, Java, and English.
@grishka Wow interesting. I have used the VK app on Android quite a lot. Impressive. I would have assumed there were 100 people working on it. It holds up against FBs feature set quite well and does many things much better. Are you going to go with any of the music player type integrations with Smithereen? That has been my favorite part of VK and one that I was really happy to see come over to Telegram...
@liaizon depends on when you used it. I quit in January 2016. Before then, I've never ever gave the music section to anyone and did everything there myself. Actually, I still use a custom build of the VK app to, among other things, listen to music for free lol.
I thought about it in Smithereen, of course I did. The system needs to be rock-solid against copyright holders, and that ain't easy. WebTorrent is promising. DHT might work for global search. All this needs further exploration.
@grishka Used it every day while I was traveling in Kazakhstan and Kyrgyzstan for two months. And yeah was only using it through an Android phone that whole time, mostly for people to recommend music for me to listen to. Have you played with Funkwhale? It might be cool to be able to just subscribe to a #Funkwhale library through #Smithereen and then you wouldn't have to deal with the uploading and managing of tracks, just the player part since they are focused on the other side.
@liaizon I did and I still don't quite understand how it federates anything. It also makes what has become to me a classical fediverse mistake: discovery is impossible. How do you find a song you're looking for? How do you know what instances there are? The beauty of Durov's VK was that you could just type the title/artist, click play and hear the song. And anyone could upload anything, so all the obscure stuff was there too. Mail.ru ruined it by making it legal, but that's another story.
@liaizon IMO it's of paramount importance to erase the lines between instances so that cross-instance interactions feel to the user as frictionless as those contained within their home instance.
@grishka well yes Funkwhale does not solve the global discovery problem. But I dont think anyone has really made a full attempt to tackle that yet. @schmittlauch has a paper about how to do global hashtags search across the fediverse using DHT and hopefully we will see some progress on that front in the coming year.
@liaizon @schmittlauch oh so I'm not the only one who came up with DHT as a global search mechanism for the fediverse? That's neat.
@grishka Yes. If you don't want to dig through 20+ pages, you can take a look at my 30min talk from ActivityPubConf. https://conf.tube/videos/watch/340eb706-28c0-4a43-9364-700297ca96cb
I'll probably be using Epichord instead of Chord, but that's all the progress I made so far.
@grishka @liaizon Be aware though that normal DHTs with a chaotic, flat addressing scheme are only suitable for tag searching, but not for more complex search queries or fuzzy search.
During my research I stumbled upon papers building overlay networks where you can AND and OR several queries together, I can point you to papers in case you're interested. But their assumptions and performance cahracteristics go into a different direction than what I needed.
@schmittlauch @liaizon I know, they're Hash Tables after all. My initial application for them is going to be importing your existing friend lists from centralized services, and they do work well for this. For text-based search, one could split the query into words and search for each word as a tag, then intersect the resulting lists. This begs for some experimentation though.
@grishka Mozo et al. proposed that the infrastructure can already help with that: doi:10.1016/j.comcom.2007.08.035
But their approach may put you into trouble in MITM or hot spot scenarios.
@schmittlauch @liaizon well, I do implement following/followers collections in Smithereen, yet does this look like 40 users to you? I don't log get requests, but I'm 99% sure Mastodon doesn't touch these collections.
@mariusor @liaizon the problem with actively querying something from other instances is that you never know when to do that. See https://socialhub.activitypub.rocks/t/avatar-updates-for-users-who-arent-followed-by-anyone/384
Do it too often and you're wasting bandwidth and CPU time on both instances. Do that too rarely and your data is outdated af. Especially important for collections because that's potentially hundreds of requests, all to find out someone has one new follower.
@grishka welcome to second hardest problem in tech: cache invalidation :)
But I disagree, of course you know when to query it: when your user asks you to.
@mariusor there's the prevalent kind of user: they want everything to "just work". Making them click buttons to re-fetch their friends' friend lists makes it too cumbersome and gives the impression of a buggy product.
VK used to have this problem where different databases on different servers would get out of sync and there would be notification counters when you don't actually have any. There was a button in settings to "recount" them. It was eventually fixed and the button was removed.
@grishka it sounds like you are thinking of a different use case than I understood from @liaizon 's top post. I thought the idea was that when you go to a remote user's profile on your own instance, you can see their followers. So the intention of the initial user is already there: click followers link in a remote user's profile.
In this case the remote instance should just be another data store for the one the initial user is browsing at the moment.
@grishka but you're not leaving. You're just doing a request to the followers collection and interpret it in your backend/frontend.
That's what I meant by "another data store". Instead of querying your own db, you have a wrapper over the C2S activitypub API. :D
@mariusor oh okay, I get it now. But I need more complex stuff that requires having a complete list at once, like common friends. Even just showing a friend list for a Mastodon user wouldn't work here — you need to intersect their following and followers lists.