libredirect / browser_extension

A browser extension that redirects popular sites to alternative privacy friendly frontends
https://libredirect.github.io
GNU General Public License v3.0
3.2k stars 118 forks source link

Remove Soju #240

Closed vairag22 closed 2 years ago

vairag22 commented 2 years ago

Soju is not a FOSS replacement for Spotify Web Player. It may be a good web app but it isn't functional enough to be called a frontend.

ghost commented 2 years ago

I do like and use Soju. When I get a Spotify link I can listen to the first 30 seconds of a song instead of not at all since I don't have a Spotify account. It is quite convenient. Obviously it is not a complete front-end in the way that Invidious or Nitter is, but there are definitely use cases for it. But on the other side I am unsure it improves privacy that much which is the main goal for LibRedirect. So I am torn between what would make the most sense.

davidcollini commented 2 years ago

Soju adds functionality and privacy since you wouldn't be able to preview a song in the normal spotify app without logging in, and even if Spotify is able to track you with Soju, they at least won't associate an account with it

vairag22 commented 2 years ago

Soju does not belong in LR because it isn't functional enough to replace Spotify Web Player.

Try Spotiflyer. It's available for mobile and desktop, web version is in development.

davidcollini commented 2 years ago

@vairag22 is there any link to test the web version?

coffeebank commented 2 years ago

Soju is not a FOSS replacement for Spotify Web Player Soju does not belong in LR because it isn't functional enough to replace Spotify Web Player.

Soju is explicitly advertised as NOT a replacement for Spotify Web Player. It is for music samples only.

Allowing you to login with your own Spotify account removes the point of Soju being a quick way to preview Spotify music.

In addition, you are required to have Spotify Premium to use third-party clients. There are already full FOSS Spotify clients out there for those users. Attempting to circumvent this by sharing one Spotify Premium account's API key, or using only a Free account, is called music piracy (illegal).

Try Spotiflyer. It's available for mobile and desktop, web version is in development.

  1. Spotiflyer, like many other services, looks up the song you want on YouTube/elsewhere when you enter a Spotify link.
  2. Spotiflyer also notes that it may be illegal in your country.

Soju and Spotiflyer are different products fixing different problems. Soju is not made for downloading music. Soju's sole purpose is to show and preview Spotify samples, from Spotify, and not from any other source.

vairag22 commented 2 years ago

Soju is explicitly advertised as NOT a replacement for Spotify Web Player. It is for music samples only.

That maybe the case for your repo but it is advertised as a replacement in this repo, see README.md. All other frontends in LR provide full core functionality and when listed with them user's expect the same with Soju.

Allowing you to login with your own Spotify account removes the point of Soju being a quick way to preview Spotify music.

@coffeebank I did not advocate using a Spotify account but you can preview songs in Spotify WP without an account albeit there is a privacy risk. However things aren't fine and dandy with Soju either. Soju does not work without JS, there's only one instance and it cannot be verified that official Soju repo is used for hosting the public instance not a tampered private one (Invidious instances have commit number and branch name on the footer precisely for this reason). Since most users including me don't have the expertise or time to review the source code using Soju means taking your words at face value. Do you take assurances of privacy from big corps, governments or anyone at face value?

From README.md of Soju:

Spotiflyer, like many other services, looks up the song you want on YouTube/elsewhere when you enter a Spotify link.

This is a better solution for most users and use cases.

Searching a Spotify link on any search engine displays the song or album name, you can then use Invidious, Piped, Beatbump, musicbrainz.org, wikiless.org, etc to find and listen the full song or album, or get info. Only thing exclusive to Soju is that it can be used for browsing public user created playlists.

Spotiflyer also notes that it may be illegal in your country.

Downloading music is also illegal if you use NewPipe, youtube-dl (yt-dlp), Invidious, Blackhole, Soulseek, torrents, etc. Buying or pirating something is upto the user not me. (Pirating for private use is legal in my country as far as I know)

vairag22 commented 2 years ago

is there any link to test the web version?

@IronMaltese Spotiflyer Web - It has same problem as Spotify and Soju, it does not work without JS and is quite bloated too. I recommend using the Android app for a quick preview. It is available on F-Droid.

coffeebank commented 2 years ago

but it is advertised as a replacement in this repo, see README.md

It is advertised as a front-end to Spotify. Soju is a front-end for accessing Spotify links. If it fetches music info from YouTube instead, then it is not a Spotify front-end.

Soju does not work without JS, there's only one instance and it cannot be verified that official Soju repo is used for hosting the public instance not a tampered private one (Invidious instances have commit number and branch name on the footer precisely for this reason). Since most users including me don't have the expertise or time to review the source code using Soju means taking your words at face value. Do you take assurances of privacy from big corps, governments or anyone at face value?

Soju is self-hostable, I cannot force anyone to host Soju instances. The main code is two files, one in Vue (Home.vue) and one in Node.js (getSpotifyData.js). Learning basic JS will be helpful as building Soju was a learning experience for me too.

If you think JS frontends should not be on LR then Piped should also be removed. I would not think LR should be limited to only frontends without JS. You are free to not use Soju if it does not meet your requirements.

If you know how to implement verification that the site is the same as the code, I can add it. That is not my specialty, but I am open to pull requests. I am not interested in hiding users from big corps, governments, or anyone else. Soju is a frontend for Spotify only.

What??? Why not simply use Spotify then?

If the API finds the song preview, all data retrieved is proxied through Netlify. The site itself is static, and Netlify fetches and returns all Spotify data using Node.js through Netlify Functions and the Netlify CDN. You can check the Network tab of your browser to confirm.

If you would like to continue sampling the song when a music preview cannot be returned, you can choose to load an unmodified Spotify webpage and preview directly from Spotify (but also opening your browser to Spotify cookies, tracking, etc.)

Downloading music is also illegal if you use NewPipe, youtube-dl (yt-dlp)

Once again, Soju's purpose is not to download music.

Soju, by how I understand it, is a private front-end to Spotify, by virtue of it accessing and returning Spotify content without actually being on the Spotify website.

coffeebank commented 2 years ago

Safely out of the above comment, here are some personal remarks I'd like to add:

You are free to not use Soju if it doesn't meet your needs. LR accepts adding new frontends. Everyone is also invited to fork/pull request Soju to add features.

Soju brings a solution to a very specific problem of previewing Spotify content, using content only from Spotify (not YouTube). It happens to do it in a more privacy respecting way than directly visiting the Spotify website. This was the scope of the threat model for the Soju project.

ManeraKai commented 2 years ago

soju_discussion

davidcollini commented 2 years ago

Here's the web version of Spotiflyer, but it doesn't work yet https://shabinder.github.io/SpotiFlyer/

ManeraKai commented 2 years ago

I talked about Spotiflyer too. You can see it in the last part of the screenshot.