MediaElch icon indicating copy to clipboard operation
MediaElch copied to clipboard

[Dev] MediaElch Development Roadmap 2022

Open bugwelle opened this issue 5 years ago • 0 comments

This is an often-updated issue that exists for discussing decisions regarding MediaElch's development and a continuation of #743.

What is this issue?

This issue lists and describes planned features and other design decisions. It is intended for MediaElch's developers and may go into technical details. All of these issues are neither bug reports nor feature requests. They're not big enough to create new issues for them. But other developers may want to try and fix one of the issues below so I thought: Why not share my thoughts?

It's also easier to keep track of one issue with all development design decisions than to have multiple smaller issues.

Table of Contents

(order: importance from highest to lowest)

  1. Separation of UI and Business Logic
  2. New movie scraper interface
  3. ~~New TV show scraper interface~~
  4. ~~Remove singletons for dialogs~~
  5. Test file searchers
  6. CMake Windows build
  7. Continuous Deployment
  8. ~~Use CTest and CDash~~
  9. Test full-disk ("no space left") situations
  10. CMake Windows Wix Package
  11. Add macOS Updater
  12. ~~Better logging~~
  13. Better Parallel Filesearch

Separation of UI and Business Logic

As of 2019-12-30 MediaElch's UI and business logic are still highly coupled. This has quite a few draw backs like:

  • unit testing requires the GUI to load
  • mediaelch_cli is dependant on Qt5Widgets

As an example the TvShowFileSearcher depends on the TvShowFilesWidget to display all shows. This should be decoupled.

New movie scraper interface

See #892

~~New TV show scraper interface~~

See #892

~~Remove singletons for dialogs~~

~~Singletons need to be initialized at startup. This is not needed for dialogs like "TvShowSearch.ui". It only makes MediaElch start slower and makes it use more RAM.~~

See https://github.com/Komet/MediaElch/pull/980

Test file searchers

We need test cases for testing our file searchers. How could this be done? We already have a bash script that generates a lot of movie/tv show/concert/artist subfolders that can be used to test MediaElch. We could load all details of every media entry and store all of that in a .tar.gz on Dropbox (or whatever cloud hoster there is). The .tar.gz can then be downloaded for automated testing.

May be useful: https://kodi.wiki/view/Samples

Test full-disk ("no space left") situations

I'm pretty sure that MediaElch won't work well if the disk is full. We need to test that. A python or bash script would be nice that sets up a temporary filesystem -- with only a few megabytes or gigabytes disk space -- mounts it, loads a few movies and checks how MediaElch handles out-of-disk-space situations. I've never done that but I know that one can also create an in-memory filesystem. This may speed up tests a lot.

Continuous Deployment

MediaElch already deploys nightly versions for Windows and macOS. We should also update mediaelch-nightly in the Ubuntu PPA. See e.g. https://github.com/subsurface/subsurface/tree/master/packaging/ubuntu

CMake Windows build

The CMake build does not work on Windows because it can't find ZLIB. It's really annoying and I didn't get it to work (I never develop on Windows...). On Linux and macOS we install ZLIB using a package manager but we can't on Windows. We could use https://cliutils.gitlab.io/modern-cmake/chapters/projects/fetch.html :)

CMake Windows Wix Package

Using CPack we should be able to create a Wix installer.
See

  • https://cmake.org/cmake/help/latest/cpack_gen/wix.html#cpack_gen:CPack%20WIX%20Generator
  • https://github.com/apriorit/FindWiX

Add macOS Updater

Use https://sparkle-project.org/

Use CTest and CDash

~~Maybe use CDash. Seems useful.~~ ~~CMake docs: https://gitlab.kitware.com/cmake/community/wikis/home~~

Too many limitations IMHO.

Better logging

~~use e.g. https://doc.qt.io/qt-5/qloggingcategory.html#details~~

Done with #1278 . More categories can easily be added.

Better Parallel Filesearch

See also https://kate-editor.org/post/2021/2021-01-29-search-in-files-multi-threading/

  • #1230

Other stuff

For result/error combinations, we could use https://www.kdab.com/tuple-pair-cpp-apis/

bugwelle avatar Dec 30 '19 15:12 bugwelle