• 0 Posts
  • 11 Comments
Joined 1 year ago
cake
Cake day: June 29th, 2023

help-circle
  • I’m split, but I lean slightly towards no. On one hand, it could be good for discoverability, and it would help my efforts to make a client-side algorithm

    On the other hand, it will make one of Lemmy’s problems worse - engagement. Some people will vote less, and it’s already feeling a little quieter around here as the numbers settled after the Reddit Exodus. I doubt it’ll be a massive change, but a .5% decrease in voting, permanently, could make a difference

    Ultimately, you can see it on federated platforms, so shrug



  • Huh, I’ve never actually come across that, I’ve only gotten it indirectly. I bet my first mentor put it on in my head, the guy built out our entire system, then a v2, with one intern while the rest of us extended the framework he built.

    As long as the Lemmy API can be used as a de-facto standard

    And that’s the sad part… The Lemmy api is not only not that, federation is an API+ that gives an amazing starting point. As far as I can tell, the lemmy API was made with the official clients in mind, and everything else was an afterthought made in a hurry during the last Reddit Exodus

    I started reading through the kbin API, which starts with “here’s a link to activity pub standards, they’re surprisingly readable”. They were… It’s unwieldy in a lot of ways and maybe too all-encompassing, but they left so much on the table.

    For one, uri ids. Lemmy has them for everything (which is nice), but they aren’t directly usable. You can get the local ID for the home instance, but if I’ve got a url for lemmy.world I want to see on my instance, my only option is a search. Which should kick off federation, but what if it’s there already? I want an endpoint to resolve it (or even to tell me it’s not here right now so I can fall back).

    And the way they handled metadata is pretty awkward… They next objects inside of collections of activity data and object properties, which is annoying because it’s so inconsistent. Like, if you get a comment response, it gives you the comment reply, which is basically a comment without the usual metadata like vote count or the full actor object.

    It gives you too much, then suddenly too little - I don’t need the bio, tagline, and banner of a server every time I see a post, and I also don’t need it for the community and user

    But I do need the comment votes when I get a reply - I’ll wait on the comment chain and root post, but I don’t want to have to build a post-body only component to show while I wait to replace it with the whole thing

    I do really like that they autodoc everything… Even if a lot of it is indecipherable with no context offered. Like the honeypot parameter on getPosts… It’s actually intended to be a honeypot. Like if you set it to true, it’s supposed to not give you posts, or log you or something? I tracked down a one line confirmation on GitHub which left me baffled. I had to try it… It didn’t seem to do anything

    /Rant

    It is getting better though, the amount of completely breaking changes that pop up is very frustrating, but this time around it is significantly improved


  • I’d love it if the API that exists was more reliable… It’s getting better, but the amount of basic features that didn’t work (usually without specific combinations of params or unknown ranges, but sometimes not at all) is pretty crippling. (If there’s a central place of discussion, I’d love to hear about it…I don’t speak rust or flutter, but I’ve had to muddle through source several times)

    I’ve never done anything as a mod so I have no idea what kind of tools they need, but I noticed enough basic parts to build all sorts of things.

    There’s definitely no reason to build it into the core though… Why put it on the machine busy serving everyone? You could do stuff so much cooler if you offload it… Like you could track mod actions against users/communities/servers, give a sample of random posts across their vote distribution, show the top few communities they get down voted… All things psychotic to even consider in the core right now, but a reasonable project for a separate system

    And since you seem like you’d get it, I want to share a win I made today. I’ve got a lemmy app I want to mix feeds (including between accounts and servers) to make a unified feed algorithm on your device. I also want it to support kbin, and maybe more… I took a couple cracks at it and charted out several designs, but I was getting too deep into abstraction.

    Today, I finished working on a ridiculously generic abstraction layer - it handles not only tracking pagination, buffering, and preprocessing, it also enumerates all of the options in the Lemmy sdk so I can auto magically build most of the controls when I update. It also disambiguates resources (and actors) across instances and could describe valid actions you can take on it (I think that might be too far, so I’m resisting the urge… This time)

    Everything is done through the account level, everything knows where it came from and can call the API by passing itself to its account to be worked on. It’s also neatly serializable, you just have to write one function to pull the next page, and the rest is just an absurd amount of generics

    Now, if I can figure out how to translate all that into a usable UI, I’ll be getting somewhere…

    I just had to share that with someone who can appreciate crazy data flow, it’s been in the back of my head for months and today (after pulling my hair out for an hour and realizing I was forgetting to actually pass the posts to the UI) it worked beautifully


  • I like to think of it like this - many hands makes for a very stable project. Stable as in reliable, but also stable as in resistant to change.

    Everyone is going to pull in a different direction, and it kind of averages out and slows things down.

    Right now, lemmy is extremely immature. It’s amazing how well it’s held up really. There’s a lot to go to get to a solid baseline - just enough to keep

    If everyone dogpiled it, someone could easily solve the image problem. Granted, that might block someone else working on the database, and changes to improve or extend federation would likely be set back as they step on each other’s toes.

    We could still probably quickly get popular features quickly… For example, one person could get more useful mastodon and kbin federation going in a reasonable period of time. But then, when the core team goes in to overhaul the database or the API, now they need to make sure they don’t break it - and the person who did those changes won’t have the same vision as the core team, and now you have to either refactor the whole thing or work around it until it’s causing too many problems

    Certain things can be spun off more easily than others - I think other people have totally taken over deployment of instances.

    Some are good candidates but require more maturity - like if they handed off jerboa and the default web client, there’s one place that would need to be reinforced - the API.

    Way down the road, they could build plug-in/mod interfaces so instances could choose feed algorithms, or individuals could come up with their own karma systems, or all sorts of other things.

    To get to that point, you have to have a clear vision and stable growth though - that takes time, and is better done by an individual or small team keeping things heading in one direction



  • You can spin up your own server… That’s what the fediverse is.

    The freedom to do whatever you want as an admin, and the freedom of choosing another server where you’ll still be part of the network

    Meta/Facebook threatens this, because their user base dwarfs the rest of the fediverse. They’re also running their own closed source server code… They can gatekeep their own federation

    I would love it if companies joined the fediverse, but like, by making instances. Maybe even use it for their internal Intranet. Maybe they could add federation compatible APIs to their existing software

    I don’t want a massive social network company to use their position to make a new social network…

    Federation is like Bitcoin or Tor - it’s decentralized, until one org becomes too large… At that point, they can control the network in countless ways



  • Defederating isn’t the threat - the situation you describe would hurt the fediverse, but it would survive as you said.

    You’re missing the far more insidious piece - changing the standards

    So let’s say we have mastodon servers, threads, and maybe another player or two.

    Context for my example - Lemmy and mastodon use paths, 0.<root post id>.<reply>.<reply reply>.<etc>

    Facebook decides “path isn’t good enough for what we want, we’re changing the first number, always 0, and we’re going to set it to a number from 1 to 100000 that will encode topic, work appropriateness, and sentiment analysis into this value”.

    Being the majority of the network, suddenly mastodon either throws out the threads content or the clients start breaking - the fix would be simple, but until that happens either they temporarily defederate or apps start crashing.

    Either way, people are pissed - either their busy feed has suddenly gone quiet, or their app no longer works. It gets resolved in a few days, and now apps are able to do better sorting

    The takeaway for most people is “mastodon sucked for a few days”

    Now let’s say they use this sentiment analysis more deeply for the algorithm. They’ve got AI doing it, hell, they’re even being “good fediverse citizens” and running it on mastodon posts for free. Everything works better, you find stuff better, nsfw posts are better flagged, the clients add cool new features around it

    Now, let’s say Facebook decides “mastodon is costing us server time, and we don’t make much off them. Let’s just show more threads content and only show replies and the top thousand mastodon posts each hour” Suddenly, mastodon users get much less engagement when they post.

    Their takeaway is “mastodon isn’t as good for us as it used to be”

    Maybe someone builds an open source system for mastodon to do classification. It’s much more expensive server-wise, so maybe only the top servers do it… But their posts get seen again, and everything is good again. People move to these servers or to threads so they can keep being discovered

    Now, let’s say someone at Facebook goes “their classification isn’t as good as ours, and their nsfw tagging isn’t as good. Our advertisers would be pissed if they found out, let’s not sell ads on any post not classified by us just to be safe”. Someone else comes along and says “we’re leaving money on the table here, let’s show less of those posts”.

    And kind of like this, these little decisions made with little malice would slowly choke out mastodon. With a dominant player, the little guys don’t need to be targeted - Facebook just has to put themselves first. And if you think a company would consistently pass up on profits or savings for a vague promise as years go by, I don’t know what to tell you

    If threads is a more stable experience, only privacy minded people would pick mastodon. Even people that refuse to use threads on principle would be less likely to be active on mastodon

    In reality, the decisions and side effects would probably be more subtle than this… But it doesn’t take much. They just have to occasionally make the fediverse feel buggy or unfinished in comparison, and it’ll forever become a place for enthusiasts and never as a serious option by the public at large



  • A month isn’t very long, they haven’t even figured out their basic features - this was more a “maybe later this year” timeframe. It could be done quickly if they decided to start by reproducing mastodon and going from there, but building something that federates but is highly monetizable takes time - honestly they were probably pleased by the numbers and decided to go for monetization first

    Making it clear they are unwelcome was the point though.

    It seems they’ve put the idea on the back burner after we largely made our position clear, but it’s not unlikely that they try to quietly federate down the road… Every time they think about it, we have to make them believe this would be more trouble than it’s worth