faker-js / faker

Generate massive amounts of fake data in the browser and node.js
https://fakerjs.dev
Other
12.99k stars 919 forks source link

Prefer a stable CDN over IPFS #2934

Closed SukkaW closed 1 month ago

SukkaW commented 5 months ago

Pre-Checks

Describe the bug

I am using faker.image.avatar() method to get a random avatar URL.

The method returns a random IPFS URL: https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/269.jpg

But to my surprise, the Cloudflare IPFS Gateway returns 504 error:

image

The IPFS gateway itself is working, but the asset can not be fetched by the gateway from the IPFS network.

Minimal reproduction code

No response

Additional Context

IMHO IPFS Gateway might not be that stable after all, faker-js could publish the random assets on a dedicated GitHub repo and use jsDelivr (or any other CDN) to deliver them.

Environment Info

System:
    OS: Linux 6.8 Fedora Linux 40 (Workstation Edition)
    CPU: (16) x64 Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
    Memory: 11.70 GB / 31.03 GB
    Container: Yes
    Shell: 5.9 - /usr/bin/zsh
  Binaries:
    Node: 18.19.0 - /run/user/1000/fnm_multishells/174660_1717401217872/bin/node
    npm: 10.2.3 - /run/user/1000/fnm_multishells/174660_1717401217872/bin/npm
    pnpm: 8.15.8 - /run/user/1000/fnm_multishells/174660_1717401217872/bin/pnpm
    bun: 1.1.10 - ~/.npm-global/bin/bun
  Browsers:
    Chrome: 125.0.6422.141

Which module system do you use?

Used Package Manager

pnpm

SukkaW commented 5 months ago

See also #2598.

ST-DDT commented 5 months ago

Which version of Faker are you using?

The link seems to work fine for me, this might be a temporary problem. We plan to replace the legacy set in the future.

Workaround: Use avatarGithub() instead.

SukkaW commented 5 months ago

Which version of Faker are you using?

I am using @faker-js/faker@7.6.0

The link seems to work fine for me, this might be a temporary problem. We plan to replace the legacy set in the future.

Sure. In the meantime, I propose faker could publish assets on a dedicated GitHub repo, and deliver them through a more stable GitHub CDN like jsDelivr or Statically.io, unlike the IPFS which requires maintaining an infra to pin the file over the IPFS network (Like seeding with the BitTorrent).

Shinigami92 commented 5 months ago

As I already raised the idea of generating new person face images via Stable Diffusion and I do have now a good graphic card available, I will assign me to this issue However I will also either add a note for the upcoming team meeting about this topic or we (team/part of team) might discuss a bit about the process and how to effectively store these generated data (e.g. also persisting info/meta about how the images were generated and their prompts)

ST-DDT commented 5 months ago

Related issue:

teddis commented 2 months ago

I receive access denied. Is faker.image.avatar() deprecated? faker.image.avatarGitHub() sadly returns block art.

ST-DDT commented 2 months ago

I receive access denied.

Looks like cloudflare shut down that legacy image set. We don't have control over that list, so there is nothing we can do about it (other than removing the legacy image set links).

Is faker.image.avatar() deprecated?

No, its not. We probably have to remove the legacy images from it though.

faker.image.avatarGitHub() sadly returns block art.

Not exclusively, but sadly a lot of times. You could try the imageUrl method with a portrait category as well. Not sure how good that works.

SukkaW commented 2 months ago

Looks like cloudflare shut down that legacy image set.

As I mentioned, we could use a stable CDN. Maybe we could ask @jimaek for jsDelivr's opinion on this.

ST-DDT commented 2 months ago

Looks like cloudflare shut down that legacy image set.

As I mentioned, we could use a stable CDN. Maybe we could ask @jimaek for jsDelivr's opinion on this.

We don't own it, so we cannot bring it back as is.

We could create a new image set, but that is covered by #465 and for that we will use a stable CDN/plattform. Any suggestion regarding free CDN options for hosting the images would be appreciated in that issue.

ST-DDT commented 2 months ago

I created https://github.com/faker-js/faker/pull/3109 to deprecate the avatarLegacy method for removal.

ST-DDT commented 2 months ago

faker.image.avatarGitHub() sadly returns block art.

You could try the following instead:

faker.image.urlLoremFlickr({ category: 'portrait', width: 400, height: 400 })