this post was submitted on 05 Jun 2024
84 points (94.7% liked)

Programming

17433 readers
212 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

This is a question that comes to mind every time I spend a few days focusing on the fediverse. Normally I'm on the microblogging side, but now I have a Lemmy account it might start a proper discussion.

So, to the point, pretty much every fedi platform has similar problems with small servers taking a beating whenever a post goes viral. This ends up costing the server owner a bunch of money trying to keep their server alive while thousands of instances attempt to pull large static files from the original host's post. This recently instigated this call to action on this forum.

I've never seen the question of torrents answered and it feels like a lot of effort and a bit self entitled to get the ear of fedi software devs to implement torrents as a solution, so I'm putting this here.

If media files were made into torrents when a post was being created, an extra object could be added to post objects like

'torrentcdn': {
  'https://imagePathAsKey.jpg': {
    'infohash': 'ba618eab...',
    'torrentLocation': 'https://directlinkto.torrent',
    'webseed': 'https://imagePathAsKey.jpg',
    ...
  }
}

This would not break compatibility as it would just be ignored by anything not looking for a 'torrentcdn' object, yet up to date instances could use this instead of directly pulling the static files.

This would benefit instances as when a post goes viral, the load would be distributed amongst all instances attempting to download the file.

This could also benefit clients and instances as larger files like short videos could be distributed using webtorrent, massively reducing the load on server when many people are watching the same video.

Thoughts?

you are viewing a single comment's thread
view the rest of the comments
[–] manicdave@feddit.uk 11 points 5 months ago (1 children)

This is a good answer.

I'm not sure if I'd agree that instance to client is infeasible though. Peertube does it OK.

[–] key@lemmy.keychat.org 8 points 5 months ago (1 children)

Data size and user expectations is the main difference. It's possible but there'd be a lot of latency and overhead for just scrolling down a page with a bunch of images. Maybe there's fancy stuff you could do by batching images together and reusing connection pools but it feels sisyphean.

[–] manicdave@feddit.uk 3 points 5 months ago

The point would be that it's a failover. It takes about two seconds for the video here to start streaming from the webseed and that's probably just the wait for enough video to load in order to render. The standard peers don't really become load bearing until the server is struggling.