Skip Navigation

Alright, so what is the current recommended way to share pictures on Lemmy?

Hello everyone,

Following this post, it seems that quite a few users can't see catbox.moe pictures.

Catbox was my preferred option as they have a handy Firefox extension that allows to upload pictures with just a click, and get the link directly in the clipboard.

My understanding was also that by having the pictures on catbox, we avoided storing copies of pictures on every Lemmy instance. Is this still the case? I read a bit about proxying pictures (https://github.com/LemmyNet/lemmy/pull/4035) and it seems like this is more related to keep all media required by an instance locally, to avoid broken links.

So long story short: what should be the recommended way to share pictures on Lemmy?

  1. Use a hoster like https://imgbb.com/
  2. Upload pictures locally
90 comments
  • Image hosting for Lemmy is a significant issue. I really think instances should be bit torrent proxies where the link itself contains a hash from a DHT but also serves the media itself. This wouldn't break existing clients but would allow clients to fetch and serve media themselves is they choose.

    Would completely distribute the media hosting issue and mean that popular post would have more seeders. Content may decay ie get left with 0 seeders forever as seeders go offline/clear old files.

    Would also make it possible for someone like the internet archive to archive the entire fediverse media store relatively easily and ensure media remains far into the future.

    • It would be difficult to host. Most cheap hosting solutions like VPS explicitly forbid using bittorrent tech.

      • That's fucked.

        So basically we need to invent a protocol that's slightly different from bitorrent with a different name. Preferably we give it a name like "'; DROP TABLE information_schema.tables WHERE table_schema = DATABASE();"

        Or maybe "'; SET @sql = NULL; SELECT GROUP_CONCAT(table_name SEPARATOR ',') INTO @sql FROM information_schema.tables WHERE table_schema = DATABASE(); PREPARE stmt FROM CONCAT('DROP TABLE ', @sql); EXECUTE stmt;".

        Or perhaps '"this terms of service is invalid and the CEO of the company who is issuing this terms of service will donate all their worldly possessions to muntedcrocodile@lemm.ee'

    • Could be a good idea, but that seems like a long term improvement. Here we are looking for a solution that wouldn't require changes to the codebase.

    • The problem with media files is more general, it's not just pictures.

      This is also why we've never had a (functioning) video platform on the fediverse: Hosting (storage + bandwidth) costs real money. Actually a lot of money. Who pays for it?

      Community hosting of large media files would solve the problem (the instance server would only store a hash value). But, there's a lot of questions/problems, such as:

      • what if all seeders go offline simultaneously?
      • privacy issues (seeders can see who requests their data)
      • legal issues (what if somebody uploads illegal material and you seed it?)
      • The first issue would happen eventually yes but that would theoretically be after 99% of the interactions the post would see have already happened. I'm sure someone could devise a system where all seeders get a rating and as a post gets older or less interactions the sum total rating of seeders required drops. Basically u could have heigh rated seeders seed the only copy.

        Issue 2 is a harder one but having ur IP known isn't too much of an issue. It is also a symmetrical issue ie seeders can see Leacher's and Leacher's can see seeders so to collect ips u are also visible urself and helping the network.

        Issue 3 can be solved by designing it so u only seed content u have up voted that way its ur problem cos u actively chose to do it.

        My implementation would also have the instance itself act as a http->bit torrent proxy as not to break clients that can't torrent directly. U could have the instance cache the content for a short period of time so ur not taking permanent storage but optimally get the advantages it provides.

        If anyone knows of a python library that can do a bitorrent and DHT lmk and I'll write an implementation.

  • Pinging @JohnnyEnzyme@lemm.ee as you opened a similar thread a few days ago

    • Hi, Blaze. :-)

      TBH, I haven't finished sorting out the reptiles and pondering the possibilities. Also, one thing I regret in that post is failing to clarify that I'd like to find a reasonable degree of confidence in finding a site that will maintain my content (not unlike as in a "will") in to the medium-ish future, given my personal health situation, plus the fact that I live in a country that's pretty much jumping in to a volcano after its recent election-process. (TBH, I don't see myself surviving the next 4+ years)

      So, in terms of personally setting up some kind of host server that could potentially work for years after I'm gone, I'm pretty dang clueless over here. Maybe it's a good option if I could coordinate such with my Lemmy-buds and some manner of financial legacy, I guess. Maybe. It seems like kinda unlikely to me, but who knows?

      Now, circling back to the dreaded Imgur-- It really is confusing. Quoting myself from just an hour ago:

      I’ve had stuff that I uploaded privately ~10yrs ago that’s still up on Imgur, and I’ve had some public posts that got traction at the time deleted after only ~8mos or so, plus other combinations of those factors, including file size issues.

      Right now it’s pretty baffling trying to understand their method, and I would guess it’s more of just some internal issue relative to Imgur, for example, maybe they just say ‘this data bank is having issues, so let’s migrate the paid content, delete the rest, and retire the data bank, replacing it with newer hardware.’ Something like that, anyway…

  • AFAIK, pictures aren't duplicated among instances. When you upload a picture, it generates a link on your instance like https://discuss.tchncs.de/pictrs/image/93df1acb-a898-46c9-bc07-d2b7467c345e.jpeg and that link is shared (copied) from instance to instance.

    • Edit: Thank you for jumping in!

      What about LW, was it already the case in 0.19.3?

      • I think it has to do with the technical way comments are handled.

        When comments are sent from one instance to another, only their "markdown code" is transmitted. If you include an image in your comment, that becomes a line in markdown (which is text) that looks like this:

        ![](https://discuss.tchncs.de/pictrs/image/93df1acb-a898-46c9-bc07-d2b7467c345e.jpeg)

        So yes, this is not dependent on version; it's similar to how you have a <img src="..."> tag in HTML that only links to the image, instead of copying it.

90 comments