Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project State (Discussion) #98

Open
GaetanPTX opened this issue Dec 17, 2023 · 32 comments
Open

Project State (Discussion) #98

GaetanPTX opened this issue Dec 17, 2023 · 32 comments

Comments

@GaetanPTX
Copy link

Is the project dead?

@aleksilassila
Copy link
Owner

Well not dead per se, but I'm not sure in what direction I want to take the project. I wanted to develop a tv app, but it's not happening for technical and time reasons. I've decided I want to make the app discovery and media management first, because it's hard to compete with Plex and Jellyfin in the playback aspect. So a mobile app for discovering content and managing & downloading media is what people are missing imo.

So right now I need to decide if I stick with svelte and try finishing the website and adding a proper PWA (progressive web app) or if I want to make a proper mobile app with react native. Downside to that is that many people probably use the web interface too, not just a mobile device. Will probably go with the first option and hopefully continue the development soon.

If others stumble upon this issue, I guess we could keep this as a discussion for what people think should be done with the project.

@aleksilassila aleksilassila changed the title Is the project dead? Project State (Discussion) Dec 18, 2023
@neuleo
Copy link

neuleo commented Dec 18, 2023

I would love to see further development go into the Website. There are already many Features I like, but also Big potential left. For me rn the only thing holding me back to switch from jellyseerr to reiverr is no Multiuser and no authentication/sync with Jellyfin Users.

@GaetanPTX
Copy link
Author

GaetanPTX commented Dec 18, 2023

In my opinion I think that Reiverr has great potential. I tend to agree with @neuleo . There are more than a few features missing for me to switch from jellyseerr to reiverr, such as being able to have multiple users synced with jellyfin.

For the video player I think you can integrate the jellyfin video player, it is already very complete

@neuleo
Copy link

neuleo commented Dec 18, 2023

I agree with @GaetanPTX , I would push Reiverr rather more into the direction of Jellyseerr then into a Media Player. Reiverr as Jellyseerr Replacement really has great potential.

@aleksilassila
Copy link
Owner

Got you. I'm curious, if the website's user experience and performance was comparable to a native mobile app's, would you prefer using the app on mobile or on a laptop? For me mobile + tv combo would be best but I'd like to get some opinions on this, to see how much should I optimize the website for mobile.

Also could you elaborate on what you would like to see from the multiple user feature. I have always had only one user so not familiar with how those work when it comes to Jellyseerr.

@neuleo
Copy link

neuleo commented Dec 18, 2023

I would say I use it a bit more often on my Smartphone than on my PC, however, I think both are important. So far, I just added the reiverr as a Shortcut to my Home screen and accessed it that Way. On the go I use my Smartphone, but as soon as I'm on my Laptop/PC I rather use reiverr on my PC. So in my Opinion, the mobile version is also important.

As for the Multi User Function:
In Jellyseerr you have the Option to Import Users from Jellyfin, so you don't have to create them twice.
There is also a Permission system for other Users, so other Users can request Movies, but the Admin has to accept or decline them and can also set the Quality in that Step. That would also be nice if you could choose the Quality Profile before searching in reiverr, because for example, I don't always want 4k movies.
If I want to watch something in 4k on my Home Cinema I choose 4k, but on mobile I don't need the 4k Version.

They can also create a "Issue". For example, if something is wrong with an automatic downloaded TV Show, they can notify you about that.

I will add some Screenshots from Jellyseerr, just so you know how it looks.

Let me know if you want a demo Account to my Jellyseerr Instance, so you can take a look at it.

Screenshot 2023-12-18 184543 Screenshot 2023-12-18 184559 Screenshot 2023-12-18 184610 Screenshot 2023-12-18 184625

@GrabbenD
Copy link

GrabbenD commented Dec 18, 2023

This space lacks a unified app for Media Discovery and Playback on the big screen

Let's be honest, most people don't watches movies and series on their mobile phones..

Mainstrean approach is to hook a Android TV streaming device into a Projector or TV. For this reason people opt to use Plex Discovery to find & stream movies within the same app (since you can hook Plex Watchlists into *ARR stack). It sucks.

Searching for movies and series on a small mobile screen is awkward if you have a partner or friends over. Are you supposed to find movies on the phone and then use a fiddly TV-remote to search for the trailer on the big screen so your companion can see it too? Well, usually it takes a few tries before you find a good movie which gets tedious real fast ;)

Ideas:

  1. Make Reiverr a PWA with support for arrow based navigation (which would allow TV-remotes to use it properly). This way you could fork Jellyfin and add it as a WebView component to avoid re-building the entire player.
  2. Make Reiverr a dedicated Android TV app. The downside is that you'd have to switch between Jellyfin and Reiverr. It's a small price to pay though since you'd eliminate the need for a 2nd device.

@GaetanPTX
Copy link
Author

I already use jellyseerr for all these features.

Personally I mainly use jellyfin on my computer and my apple tv / android tv.

In my opinion reiverr must become an "all in one". Being able to group jellyseerr and jellyfin in one place.

be able to watch media and also make requests

@aleksilassila
Copy link
Owner

Thank you, good points. @GrabbenD and @GaetanPTX you described my original idea perfectly, I wanted to make the reiverr app work on tvs similarly to jellyfin so that it would be all in one app. However, I just could not get the app run on my Samsung smart tv, it seems like they don't support some of the modern web features that svelte relies on (also Tizen development SUCKS). Then there are so many different smart tv platforms, none of which is very dominant, making supporting all of them really hard. So I think I should do the next best thing and focus on making the experience good and polished on other devices first. Then again, maybe I need to take a second or third look into the Tizen, there's gotta be a way to make this work as you described @GrabbenD.
Also, the users seem doable 👍

@GaetanPTX
Copy link
Author

Any news for the next update?

Merry Christmas

@aleksilassila
Copy link
Owner

Just been testing and planning how do I get svelte running on tizen. I might have to ditch sveltekit and use svelte only, as well as maybe use a separate backend, too. Also TVs probably need their own ui layout entirely. I'll try getting any major migrations done next week.

Merry Christmas everyone!

@aleksilassila
Copy link
Owner

aleksilassila commented Dec 26, 2023

Update: After hours and hours of fighting and many hacky solutions later, I can confirm that I got a poc svelte project running on my old samsung smart tv running old chromium m69. I'll start redesigning a single page tv app, without sveltekit, reusing some of the old components. Eta of a tv app will probably not be before next summer though.

@ilovethensa
Copy link

Thank you, good points. @GrabbenD and @GaetanPTX you described my original idea perfectly, I wanted to make the reiverr app work on tvs similarly to jellyfin so that it would be all in one app. However, I just could not get the app run on my Samsung smart tv, it seems like they don't support some of the modern web features that svelte relies on (also Tizen development SUCKS). Then there are so many different smart tv platforms, none of which is very dominant, making supporting all of them really hard. So I think I should do the next best thing and focus on making the experience good and polished on other devices first. Then again, maybe I need to take a second or third look into the Tizen, there's gotta be a way to make this work as you described @GrabbenD. Also, the users seem doable 👍

I would say you should really only support android and Tizen, this will make most tvs work and let the community make clients for other custom tv OS'es(???)

@ike709
Copy link

ike709 commented Jan 16, 2024

I definitely want to use reiverr to have combined requests and playback in a single unified app. It'll probably never be the best media player and I'm not sure if I'll ever entirely prefer it over jellyseer, but what makes reiverr stand out is the convenience of not having to switch back and forth between two different apps like jellyseer and jellyfin.

@GrabbenD
Copy link

GrabbenD commented Jan 27, 2024

I might have to ditch sveltekit and use svelte only, as well as maybe use a separate backend, too.

@aleksilassila Have you considered using MPV as the media player backend?

I think it's worth to evaluate this as early as possible given similar projects which uses web frameworks as the frontend suffer from inconsistencies with video- & audio codecs support. As a result this leads to degraded picture quality, can trigger tone-mapping when not necessary and can even break HDR.

Here's a compelling list of reasons to consider MPV (from a discussion in a new project called JellyPlayer)

@aleksilassila
Copy link
Owner

I might have to ditch sveltekit and use svelte only, as well as maybe use a separate backend, too.

@aleksilassila Have you considered using MPV as the media player backend?

I think it's worth to evaluate this as early as possible given similar projects which uses web frameworks as the frontend suffer from inconsistencies with video- & audio codecs support. As a result this leads to degraded picture quality, can trigger tone-mapping when not necessary and can even break HDR.

Here's a compelling list of reasons to consider MPV (from a discussion in a new project called JellyPlayer)

I wasn't aware of MPV, but I will look into it when I get to implementing the video player. Thanks for the tip!

@jordanf97
Copy link
Contributor

I'll start redesigning a single page tv app, without sveltekit, reusing some of the old components. Eta of a tv app will probably not be before next summer though.

This sounds great @aleksilassila !

Curious if you have capacity to build out the improvements for the website as you work on this? I've not worked with Svelte before but I'd be more than willing to help out.

With a bit more polish and a few extra features I think Reiverr would fit perfectly into my home lab (specifically user management mentioned above). I've been a SWE in the industry for around 6 years now and would be more than happy to invest some time into building things which i'd find direct value in, if you're open to it?

@aleksilassila
Copy link
Owner

Absolutely, all the help is much appreciated!

Curious if you have capacity to build out the improvements for the website as you work on this?

I probably won't, I'll try to get the tv app up and running as a first priority and it'll probably take a while. I still haven't decided if I replace the current website built with sveltekit with the tv app and make it usable on both tv and with keyboard and mouse. That would be the ideal solution though, if it's possible.

@jordanf97
Copy link
Contributor

I still haven't decided if I replace the current website built with sveltekit with the tv app.

IIUC the new app is just Svelte without SvelteKit and spatial navigation implemented? I can see that it might not be optimised for web, but it should still "work" out of the box surely?

@spusuf
Copy link

spusuf commented Feb 21, 2024

I personally believe Svelte is not the correct way to get multi platform, more of a hacky web wrapper. If you want native performance look into Flutter. It's a cross platform framework from Google that delivers near performance on any device. Whether Android (Phones, Tablets, TVs), Web, Linux (Desktops or embedded with Wayland/X11), Windows, Apple (iOS, ipadOS, MacOS), Tizen (5.5+), etc.

If you're looking to jump ship from svelte to native, I'll contribute. But I think you first need to nail scope (core features, nice to haves, maybe ill add it eventually features).

In my opinion core features should include: Jellyfin + Plex integration(frontend, browsing, and management), Arr suite integration (requests), TMDB integration.
Nice to haves would be HAMV (anime version on TMDB), youtube-dl integration (to download specials on a one-off basis if specifically searched),

@aleksilassila
Copy link
Owner

IIUC the new app is just Svelte without SvelteKit and spatial navigation implemented? I can see that it might not be optimised for web, but it should still "work" out of the box surely?

Yep, it will work. Navigation is another thing though, but hopefully I can make it work

If you want native performance look into Flutter.

I actually considered flutter a lot, but decided against it as it doesn't run on my Tizen 5.5 tv (its 6.0+) and I don't have experience with it. I thought I needed to get the app running on my tv or else I wouldn't have the motivation to finish it.

If you're looking to jump ship from svelte to native, I'll contribute. But I think you first need to nail scope (core features, nice to haves, maybe ill add it eventually features).

I agree, and I think currently it's slightly bad time to contribute until I get the base of the app up and running. Good core features and nice to haves as well, will aim for those

@rodrigogonegit
Copy link

@aleksilassila thanks for all your work :)

I'll pitch in for a Chromecast if that would lead to using Flutter, I played around with it for a while so I would be able to contribute as well.

@aleksilassila
Copy link
Owner

Honestly, after wasting another night fighting with tizen (I can't express my hatred towards this platform enough) and the old chromium firmware on my tv I think I might need to get a chromecast or similar to continue the development. That would open the discussion for the option of using Flutter, but gotta think about it. Nice thing about svelte is that I can reuse a lot of the already built components in this project + I know my way around things.

@JamsRepos
Copy link

JamsRepos commented Mar 3, 2024

Honestly, after wasting another night fighting with tizen (I can't express my hatred towards this platform enough) and the old chromium firmware on my tv I think I might need to get a chromecast or similar to continue the development. That would open the discussion for the option of using Flutter, but gotta think about it. Nice thing about svelte is that I can reuse a lot of the already built components in this project + I know my way around things.

I and a couple friends of mine would no doubt contribute to this. If you need help with this or would like financial contributions, don't hesitate to let us know.

@arnolicious
Copy link

Just to throw in another option to consider:

Using React Native (Expo) instead of Flutter, which would probably be more familiar to people used to JS/TS and Svelte, compared to Flutter.

Expo (an amazing set of tools to facilitate React Native Development) just very recently added support for building TV apps: How to build TV apps with Expo and React Native

@jordanf97
Copy link
Contributor

jordanf97 commented Mar 9, 2024

Just to add a bit of context and hopefully clarity here with regards to the discussions around technology choices.

I personally believe Svelte is not the correct way to get multi platform

Why not? While correct, it isn't native and also correct that most implementations of this are "hacky" this doesn't mean a good solution cannot be based off this (or a similar) technology stack.

If you consider the wide breadth of well known apps (Slack, Spotify, Microsoft Teams, Discord, Canva) these all use web technologies to build multi-platform apps, Spotify in particular pioneered this strategy long before Electron was around. (The Jellyfin WebOs TV app is also a wrapper around the web-based client)

I don't think it's prudent to define a projects success by the chosen technology stack, Svelte may not be the best choice but it certainly isn't going to cripple the project.

IMO there are more important reasons to consider different stacks and my 2cents is that in my experience wrapping a web-based environment in a native shell to achieve multi-platform support is the most mature solution without diving into per-platform native solutions.

Using React Native (Expo) instead of Flutter, which would probably be more familiar to people used to JS/TS and Svelte, compared to Flutter.

I agree with this, though from my experience across building Expo & React Native Web apps as a hobby & professionally is that React Native Web is a fickle beast, so if the intention is to support web as well as other platforms it will lead to some frustrations as well.

In saying this React/React Native would be my preference if the project was to be rewritten 👍 (caveat that I have a WebOS TV and would also like a web version to remain)

@jordanf97
Copy link
Contributor

I would also be hesitant to argue too strongly for the performance benefit of any of the above mentioned "pseudo-native" solutions. At the end of the day Flutter, React Native, etc are NOT native, their UI is compiled to native but this is not a 1-1. Especially with regards to non-ui work (everything not relating to render logic).

Yes you can build native UI with these frameworks, can you take advantage of native capabilities for video/image processing easily? Unlikely.

The real challenge is to deliver native graphics performance without the significant burden of building a real native solution for each platform. Consider Netflix's solution which is exactly this, web technology integrated with bespoke native bindings for graphics

@aleksilassila
Copy link
Owner

Just as a quick update, I think I've got the ball rolling again. I've mostly solved the biggest problems regarding getting navigation, animations, css, data fetching and video playback working on my old tv. I'll work on the rework in #reiverr-for-tvs branch for those interested. It's going to be a while before I'll have a usable prototype though, I'm aiming for June or July with that

@Amateur-God
Copy link

Nice to haves would be HAMV (anime version on TMDB), youtube-dl integration (to download specials on a one-off basis if specifically searched),

personally i would use AniDB for anime metadata, the only downside is the api rate limiting can occasionally be a bit of a pain if you run multiple software that query it as it IP based rather than Key based, however in my experience it is the best source for anime metadata, however ive also never heard of HAMV

@spusuf
Copy link

spusuf commented Apr 29, 2024

If you consider the wide breadth of well known apps (Slack, Spotify, Microsoft Teams, Discord, Canva) these all use web technologies to build multi-platform apps, Spotify in particular pioneered this strategy long before Electron was around. (The Jellyfin WebOs TV app is also a wrapper around the web-based client)

For their desktop apps correct, as it allows one app for multiple desktop platforms. The benefit is lower codebase, the issue is less hardware integrations and high performance overheads that make them unperformant on mobile or low performance hardware. It's especially noticable in Electron or React Native desktop apps and their high RAM usage for simple functionality.

In saying this React/React Native would be my preference if the project was to be rewritten 👍 (caveat that I have a WebOS TV and would also like a web version to remain)
Flutter allows building for web as well, so it could use the same code and layout as TVs.

Yes you can build native UI with these frameworks, can you take advantage of native capabilities for video/image processing easily? Unlikely.

With react? No. With flutter? Yes. There is both native hardware (GPU) acceleration support in the form of the built in Impeller engine, third party low level video packages, and support for OS native frameworks such as gstreamer, for video streaming. In regard to Impeller (the built in rendering engine): "Impeller implements a custom runtime that fully exploits modern hardware-accelerated graphics APIs, replacing Skia code with a significant rewrite."

The real challenge is to deliver native graphics performance without the significant burden of building a real native solution for each platform. Consider Netflix's solution which is exactly this, web technology integrated with bespoke native bindings for graphics

The problem with Netflix is yes they provide streaming with a web wrapper for mobile, web and TV, but ONLY for Standard Definition with no support for HDR or 4K. The only time these work is when the hardware + app have been whitelisted in which case they use non standard web technology to deliver these types of streams and even with compatible hardware it sometimes does not deliver full 4K or HDR and chooses to fallback.

I'm not saying ReactNative/Expo is wrong, because yes many software companies utilize it. But at the end of the day, if you choose to go with React, it should be because you're familiar with it and unwilling to learn an alternative, NOT because its the best language for the purpose. It is NOT clearly better in any way except convenience. Flutter is the objectively more performant, more scalable choice, especially for low performance devices such as CCwGTV, mobile, or web.

@GrabbenD
Copy link

GrabbenD commented Apr 29, 2024

The problem with Netflix is yes they provide streaming with a web wrapper

Just to add on to what you've said:

This approach usually limits the video player to codecs provided by system's WebView. Biggest problem being missing HDR support as seen in JellyPlayer (React): prayag17/JellyPlayer#212

Hence why a native solution with ExoPlayer is a much better approach (or at minimum, opening a external player app)

@jordanf97
Copy link
Contributor

For their desktop apps correct,

I disagree. This isn't the biggest driver for adoption of these technologies.

The problem with Netflix is yes they provide streaming with a web wrapper for mobile, web and TV, but ONLY for Standard Definition with no support for HDR or 4K.

I haven't had time to dive deep into these concerns lately. I started building my own app with WebOS support as my priority but I've been busy these last weeks (yes I regret buying an LG).

WebOS does not have a native platform, all apps are web apps. Throughout testing I've had no playback problems. 4K & HDR content streams fine without performance issue. I'm sure there is nuance here though I'm not convinced that the web platform is as terrible as it has been made out to be.

The benefit is lower codebase, the issue is less hardware integrations and high performance overheads that make them unperformant on mobile or low performance hardware.

I think you're underestimating the implications of the ongoing maintenance burden created by maintaining & delivering multiple platform native applications.

Yes any cross-platform framework is going to come with a performance cost. Does that matter? There is no hard and fast rule, this should be evaluated based on observed impact.

I'm not saying ReactNative/Expo is wrong, because yes many software companies utilize it. But at the end of the day, if you choose to go with React, it should be because you're familiar with it and unwilling to learn an alternative, NOT because its the best language for the purpose. It is NOT clearly better in any way except convenience.

There is no "silver bullet" solution in software development. Any choice has it's own set of tradeoffs, the statement that React Native is only a good choice if you're lazy or burying your head in the sand is disingenuous.

Flutter might well be a great choice, possibly the best of the options - I haven't tested it. What I do know is that:

  • It is not the most mature choice
  • When you experience a problem with React countless people have likely experienced the same problem and the solution is likely well known and documented.
  • It uses Dart, which is a language most web developers won't be familiar with. Lower potential for contributors.
  • Converting an existing web application to Flutter will not be as streamlined as it would be if the application already followed similar patterns, with the same language.

I'm not advocating for React, I'm using it as an example here to show why there is more to consider than "what you are already familiar with".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Status: In Progress
Development

No branches or pull requests