Added: Development Description.

This commit is contained in:
Leonardo Galli 2018-12-24 14:30:37 +01:00 committed by Qstick
parent 9ba2c8e53d
commit b35d0b3f6a
3 changed files with 50 additions and 0 deletions

30
DEVELOPMENT.md Normal file
View File

@ -0,0 +1,30 @@
# New UI Development
This document should provide an overview of current UI development, progress and blockers.
## Current Focus
Our current focus is creating a foundation for the UI, so that everything can be built upon it.
We are trialing the Sonarr V3 UI as our foundation. So far it has been working great and we already have a somewhat working build running.
However, the Sonarr V3 UI is still very slow, especially with 40k movies. Which is why, our current focus is to find out why the UI is slow and fix that.
## Performance Issues
You can download a database with 40k movies here: https://radarr.video/dev/radarr.db (Version where the next refresh movie scan is in a year. The refresh movie scan will lag the UI and other stuff. https://radarr.video/dev/radarr_no_scan.db). Just place it in your AppData Directory while Radarr is not running and make sure it's named radarr.db (https://github.com/Radarr/Radarr/wiki/AppData-Directory).
You will have to message me (@galli-leo) via Discord or Reddit for the username and password (just as a precaution).
Warning: The loading of the page may take long, ideally you do not want Radarr to run in debug mode and use a localhost client.
I have already tried my hand at finding some bottlenecks and have seen the following problems:
1. It seems like sorting is done for all movies on every change to the movies. In other words, even if nothing changes for a movie, we still sort all movies again. This creates slowdowns, mostly when updating the info for all movies or adding a lot of new ones.
2. For most views, we check whether the movies have changed, when we receive and update movie event in order to determine if we should e.g. add more letters to the sidebar. This also creates slowdowns, mostly when updating the info for all movies.
3. The searchbar is also pretty slow, probably because we do not filter it in anyway and do not have a limitation of the amount of rows we render. In other words, if you type "a", all movies with an "a" in the title will have a row rendered. Ideally we would virtualize this, but we could also do maybe some other optimizations.
4. The virtualization for the movie index page is not fast enough. It seems, that if you scroll up, the renderer cannot keep up and takes ~200-500ms to render the table. This is not the most pressing issue, but should still be fixed.
5. There seems to be a few javascript "spots" that cause slowdowns, but I have far too little experience to really find out what's going on there.
## Tasks
The actual tasks that are not related to the foundation of the new UI are all listed here https://github.com/Radarr/Radarr/projects/4. They are sorted according to different priorities. Some issues are also issues that shouldn't need anything extra, just a correct implementation in the new UI.

View File

@ -2,6 +2,8 @@
<img src="/Logo/text256.png" alt="Radarr">
</p>
**New UI Development:** For an overview of the new UI development see https://github.com/Radarr/Radarr/blob/aphrodite/DEVELOPMENT.md.
Radarr is an __independent__ fork of [Sonarr](https://github.com/Sonarr/Sonarr) reworked for automatically downloading movies via Usenet and BitTorrent.
The project was inspired by other Usenet/BitTorrent movie downloaders such as CouchPotato.

View File

@ -87,6 +87,9 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CurlSharp", "ExternalModules\CurlSharp\CurlSharp\CurlSharp.csproj", "{74420A79-CC16-442C-8B1E-7C1B913844F0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ParsingLibrary", "ParsingLibrary\ParsingLibrary.csproj", "{BAC762EF-4627-49C8-BC99-EB9D20682FA4}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Radarr.Api.V2", "Radarr.Api.V2\Radarr.Api.V2.csproj", "{38497DC6-E488-4B9E-A973-A1A7961B33C4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Radarr.Http", "Radarr.Http\Radarr.Http.csproj", "{C5953DAB-89DB-46D9-A401-D620F54B776E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -262,9 +265,24 @@ Global
{74420A79-CC16-442C-8B1E-7C1B913844F0}.Mono|x86.Build.0 = Release|Any CPU
{74420A79-CC16-442C-8B1E-7C1B913844F0}.Release|x86.ActiveCfg = Release|Any CPU
{74420A79-CC16-442C-8B1E-7C1B913844F0}.Release|x86.Build.0 = Release|Any CPU
<<<<<<< HEAD
{BAC762EF-4627-49C8-BC99-EB9D20682FA4}.Debug|x86.ActiveCfg = Debug|Any CPU
{BAC762EF-4627-49C8-BC99-EB9D20682FA4}.Mono|x86.ActiveCfg = Debug|Any CPU
{BAC762EF-4627-49C8-BC99-EB9D20682FA4}.Release|x86.ActiveCfg = Release|Any CPU
=======
{38497DC6-E488-4B9E-A973-A1A7961B33C4}.Debug|x86.ActiveCfg = Debug|x86
{38497DC6-E488-4B9E-A973-A1A7961B33C4}.Debug|x86.Build.0 = Debug|x86
{38497DC6-E488-4B9E-A973-A1A7961B33C4}.Mono|x86.ActiveCfg = Debug|x86
{38497DC6-E488-4B9E-A973-A1A7961B33C4}.Mono|x86.Build.0 = Debug|x86
{38497DC6-E488-4B9E-A973-A1A7961B33C4}.Release|x86.ActiveCfg = Release|x86
{38497DC6-E488-4B9E-A973-A1A7961B33C4}.Release|x86.Build.0 = Release|x86
{C5953DAB-89DB-46D9-A401-D620F54B776E}.Debug|x86.ActiveCfg = Debug|x86
{C5953DAB-89DB-46D9-A401-D620F54B776E}.Debug|x86.Build.0 = Debug|x86
{C5953DAB-89DB-46D9-A401-D620F54B776E}.Mono|x86.ActiveCfg = Debug|x86
{C5953DAB-89DB-46D9-A401-D620F54B776E}.Mono|x86.Build.0 = Debug|x86
{C5953DAB-89DB-46D9-A401-D620F54B776E}.Release|x86.ActiveCfg = Release|x86
{C5953DAB-89DB-46D9-A401-D620F54B776E}.Release|x86.Build.0 = Release|x86
>>>>>>> 28648ed18... Added: Development Description.
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE