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

[Dev] MediaElch Development Roadmap 2023 #847

Closed
bugwelle opened this issue Dec 30, 2019 · 1 comment
Closed

[Dev] MediaElch Development Roadmap 2023 #847

bugwelle opened this issue Dec 30, 2019 · 1 comment
Assignees

Comments

@bugwelle
Copy link
Collaborator

bugwelle commented Dec 30, 2019

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 #1163

New TV show scraper interface

See #1163

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 #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

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/


Other stuff

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

@bugwelle bugwelle pinned this issue Dec 30, 2019
@bugwelle bugwelle changed the title [Dev] MediaElch Development Roadmap 2020 [Dev] MediaElch Development Roadmap 2021 Jan 2, 2021
@bugwelle bugwelle changed the title [Dev] MediaElch Development Roadmap 2021 [Dev] MediaElch Development Roadmap 2022 Jan 4, 2022
@bugwelle bugwelle self-assigned this Sep 27, 2022
@bugwelle bugwelle changed the title [Dev] MediaElch Development Roadmap 2022 [Dev] MediaElch Development Roadmap 2023 Feb 11, 2023
@bugwelle bugwelle unpinned this issue Jan 24, 2024
@bugwelle
Copy link
Collaborator Author

Remaining issues:

  • Separation of UI and Business Logic
    Still a lot of work. To properly distinguish between them, I think we need to step more into direction of storing everything in our SQLite database instead of relying on a Qt model, which is heavily bound to the UI (even though in theory it shouldn't be: the fact alone that icons can be modified through it is telling)
  • Test file searchers
    I wanted to implement a "virtual filesystem" but never got to do so. I now think that it may not have worked at all, because a simple "QFile::open" is enough to break the "vfs" pattern. We should test it with e.g. Docker and a mounted volume.
  • CMake Windows build
    Put simply: I don't use Windows. I'm not a fan and I've wasted many hours in trying to build MediaElch on Windows. If there is anyone kind enough to add this feature, it would be great.
  • Continuous Deployment
    Kind of finished. It works for Nightlies (except macOS), but not for Debian packaging
  • Test full-disk ("no space left") situations
    So many things could go wrong. This would be the last issue I'd tackle. Error reporting needs to be improved first.
  • CMake Windows Wix Package: again, windows
  • Add macOS Updater: There is a lot that can go wrong. But the main issue may be that all existing solutions require a custom server. I don't want to set up one.

That being said, as per #1710 I'm limiting myself to bugfixes. Anyone reading this is free to implement the above, but I'm not sure that I will ever get the time to do so myself.

@bugwelle bugwelle closed this as not planned Won't fix, can't repro, duplicate, stale Jan 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant