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

Want to work on mpv? #13608

Open
Akemi opened this issue Feb 29, 2024 · 15 comments
Open

Want to work on mpv? #13608

Akemi opened this issue Feb 29, 2024 · 15 comments
Assignees
Labels
meta:developer-needed meta:help-wanted Anyone is invited to help with this. Suitable for new developers with no experience with mpv code. meta:rfc

Comments

@Akemi
Copy link
Member

Akemi commented Feb 29, 2024

you want to work on mpv and don't know where to start? there are open issues that could possibly be fixed. though this might not be a good or easy start into mpv.

there are various things that still need to be done, with varying difficulties and different scopes. some of these are a good start into our code and can be done independently from any other tasks. anyway, the plan is to finish every task on the list, let everyone know of the current status, keeping track of people working on those tasks and coordinating that work properly. if you want to do any of those yourself, just let us know and we will plan appropriately and try to assist you as well as possible.

General

S D Description Assignee
🟢 a community manager that handles various tasks, communicating with users, triaging issues, adjusting docs, etc
🟢 fix remaining compilation warnings and remove exclusions from meson.build
🟢 fix remaining lua lint warnings @guidocella
🟢 add Python linting to CI @nathanruiz
🟢 add CI workflows to mpv-build @ilkermeliksitki
🟡 port our website to an up-to-date version of Middleman / Ruby @frothedoatmilk
🔴 add a way for libmpv to work with libplacebo/gpu-next
🔴 add a way to package mpv scripts/shaders/etc. and make them updatable, to automatically manage these scripts

Linux

S D Description Assignee

macOS

S D Description Assignee
🟢 update wiki for compiling distro releases
🟢 fix fixable deprecation warnings @Akemi
🟢 add meaningful verbose/info logging to common/windowing
🟢 add option to change macvk/metal/moltenvk scaling filter 1 2
🟡 use swiftc (swift compiler) instead of swift (swift frontend) for building osdep/mac/meson.build meson.build @NekoAsakura
🟡 rewrite bundling scripts dylib_unhell.py and osxbundle.py in swift
🟡 move cohesive functionality from common code into separate modules
🟡 add cover art/thumbnail support vie QuickLook
🟡 make test/libmpv_lifetime workable on macOS, instantiate NSApp
🟡 add wid embedding to macvk, not separated context 1 2 3
🟡 add support for --force-window-position
🔴 rewrite messy calculateWindowPosition function with a nonlinear function
🔴 full featured CI builds with target 10.15
🔴 find maintainer for CoreAudio code
🔴 add swift 6 support, remove swift 4 support, drop swift <5.7/5.8 support (newest version macOS 12 > 5.7, macOS 13 > 5.8) (1 2 3 4 5)

Windows

S D Description Assignee

Legend

S = Status D = Difficulty
❌ todo 🔴 hard
✅ done 🟡 medium
🟢 easy

Table Editor

Read, edit and output Markdown tables: https://tableconvert.com/markdown-to-markdown

@Akemi Akemi added os:mac meta:rfc meta:developer-needed meta:help-wanted Anyone is invited to help with this. Suitable for new developers with no experience with mpv code. labels Feb 29, 2024
@Akemi Akemi pinned this issue Feb 29, 2024
@Akemi Akemi self-assigned this Mar 1, 2024
@Akemi Akemi changed the title Want to work on mpv? macOS TODOs Want to work on mpv? Mar 1, 2024
@Akemi Akemi removed the os:mac label Mar 1, 2024
@Obegg

This comment was marked as off-topic.

@N-R-K
Copy link
Contributor

N-R-K commented Mar 30, 2024

add a way to package mpv scripts/shaders/etc. and make them updatable, to automatically manage these scripts

I have a very rough proof-of-concept for managing plugins via git. Currently tested on linux and windows 10: https://codeberg.org/NRK/mpvget

My current opinion from working on this is that the ideal long term solution would be for mpv project to come up with a standardized plugin directory structure (similar to vim) and somehow get everyone to update their plugin to conform to such structure. It would eliminate the need for external "package managers" since you can basically just use git submodules at that point.


Also why hand-write markdown tables in here instead of just using github labels? It seems much more flexible. E.g you can have meta:difficulty-{easy,mid,hard} tags for difficulty. We already have os:* tags. And github issues also supports "assignees" already.

@Akemi
Copy link
Member Author

Akemi commented Mar 30, 2024

Also why hand-write markdown tables in here instead of just using github labels? It seems much more flexible. E.g you can have meta:difficulty-{easy,mid,hard} tags for difficulty. We already have os:* tags. And github issues also supports "assignees" already.

i am not really writing the table by hand though. various reasons:

  • i don't think the issue tracker is a place for code cleanup and refactoring work. it should be kept to issues, feature request, etc
  • the issue tracker is imo already full enough
  • the point of this list, is the list itself and not being 'hidden' in the issues
  • if there isn't any interested from anyone working on any of the then created 'issues', it would have been a waste of effort and time creating those (filling them with info etc)
  • issues on the tracker can still be created when work has been picked by someone and it feels appropriate for communication and/or discussion
  • atm it's mostly just my personal backlog/worklog
  • i wanted to see if there is even a general interest in this, by people who want to work on something and by others filling the various lists
  • imo the issue tracker isn't really more flexible. it just has a different presentation with a set amount of features that can be used to track such things. though if you need something more specific that can't be mapped to any of the features, your are out of luck. in that case some custom list can be extended with such things. eg previously there was a field with dependencies, that indicated which issues depend on other issues.

@addycb
Copy link

addycb commented May 10, 2024

Any more info on the calculateWindowPosition requirements? Or on the advantage of a nonlinear function here

@Akemi
Copy link
Member Author

Akemi commented May 11, 2024

the hope is to considerably simplify the whole function. atm it's a lot of ifs and it's hard to know/see what those are for.

the function also handles the case that the window changes screens or the screen resolution changes (when in fs), and the window is placed relative at the same position but the same size as before. with a linear function this would place the window off-screen in some cases.

also it seems the function broke a bit over the iterations of new macOS versions and does place the window at weird positions in some cases.

@ahaoboy
Copy link

ahaoboy commented Jun 4, 2024

I implemented a script manager some time ago, maybe it's not the best solution, hope it can provide some ideas.

https://github.com/mpv-easy/mpsm-scripts

These are some of the problems encountered during implementation

  • The script contains multiple files. We can use the directory tree format, but this will be a little troublesome when removing and upgrading. It is not currently supported.
  • js seems to be very suitable for writing scripts. Now that everything can be bundled, no matter how complex the script is, it can be packaged into a js file, which greatly simplifies the management difficulty.
  • js does not support reading and writing binary files, which makes it impossible to package fonts and some programs into js. For example, if you need cross-platform clipboard operations, we can use rust to implement it, and then package the binary files of different platforms into one js file, so that the binary files can be automatically detected and generated when the script is running. However, js cannot write binary files, so you can only copy them manually.
  • Script dependencies. Some scripts require other scripts to be installed first. Direct installation will not work. Although this package management can use the dependencies field, it will have the same problems as npm. Considering the complexity, it is not implemented yet.

nathanruiz added a commit to nathanruiz/mpv that referenced this issue Sep 14, 2024
Enabled the ruff python linter in CI, and resolved the issues that were
detected by it. Ruff was used due to it's faster checking compared with
other linters like pylint. This was added to resolve the python linting
request in mpv-player#13608.
nathanruiz added a commit to nathanruiz/mpv that referenced this issue Sep 21, 2024
Enabled the ruff python linter in CI, and resolved the issues that were
detected by it. Ruff was used due to it's faster checking compared with
other linters like pylint. This was added to resolve the python linting
request in mpv-player#13608.
nathanruiz added a commit to nathanruiz/mpv that referenced this issue Sep 29, 2024
Enabled the ruff python linter in CI, and resolved the issues that were
detected by it. Ruff was used due to it's faster checking compared with
other linters like pylint. This was added to resolve the python linting
request in mpv-player#13608.
nathanruiz added a commit to nathanruiz/mpv that referenced this issue Sep 29, 2024
Enabled the ruff python linter in CI, and resolved the issues that were
detected by it. Ruff was used due to it's faster checking compared with
other linters like pylint. This was added to resolve the python linting
request in mpv-player#13608.
kasper93 pushed a commit that referenced this issue Oct 6, 2024
Enabled the ruff python linter in CI, and resolved the issues that were
detected by it. Ruff was used due to it's faster checking compared with
other linters like pylint. This was added to resolve the python linting
request in #13608.
@Akemi
Copy link
Member Author

Akemi commented Nov 1, 2024

just a heads-up, i added a bunch of new macOS TODOs.

@ilkermeliksitki
Copy link

Hello @Akemi, I can work with the task add CI workflows to mpv-build. Could you kindly guide me? I would appreciate your guidance.

@Akemi
Copy link
Member Author

Akemi commented Dec 7, 2024

@ilkermeliksitki i believe @sfan5 added this to the list, pinging him since i am not sure what this encompasses.

@NekoAsakura
Copy link
Contributor

Hi @Akemi, do you know if anyone is currently working on calculateWindowPosition? If not, I plan to do it later.

@Akemi
Copy link
Member Author

Akemi commented Dec 7, 2024

as far as i know, no. feel free to.

@sfan5
Copy link
Member

sfan5 commented Dec 8, 2024

@ilkermeliksitki i believe @sfan5 added this to the list, pinging him since i am not sure what this encompasses.

mpv-build is collection of scripts to compile mpv and select dependencies, intended for situations where recent software is not available from the repositories. There's also a package template for debian-based distros.
Currently there is no automated testing to see if they still work.
So we should have two three workflows that run on something recent (e.g. Ubuntu 24.04):

  1. one that just runs the scripts: we should get a functioning mpv binary
  2. one that invokes the debian packaging stuff: we should get a deb package
  3. like 1 but on macOS perhaps?

@kasper93
Copy link
Contributor

kasper93 commented Dec 8, 2024

mpv-build is collection of scripts to compile mpv and select dependencies, intended for situations where recent software is not available from the repositories.

1 and 3 could be single workflow definition run on multiple targets (as matrix) for this reason. Those scripts should work generally "anywhere". So we could have a matrix to invoke them on a range of target platforms, that we consider as "currently supported". We can start with single target obviously, too minimize complexity and expand if needed.

@ilkermeliksitki
Copy link

Thank you @sfan5 and @kasper93 for the helpful suggestions. I started tackling the first point of task and for now I got the following mpv binary in a Ubuntu 24.04 Docker image. I guess d3d11 is related to Windows operating system but what about libmpv? I installed libmpv-dev dependency and I get still NO. Is it expected?

mpv 0.39.0-UNKNOWN

    d3d11     : NO
    javascript: YES
    libmpv    : NO
    lua       : YES
    opengl    : YES
    vulkan    : YES
    wayland   : YES
    x11       : YES

@sfan5
Copy link
Member

sfan5 commented Dec 8, 2024

mpv-build does not build libmpv by default, working as intended.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta:developer-needed meta:help-wanted Anyone is invited to help with this. Suitable for new developers with no experience with mpv code. meta:rfc
Projects
None yet
Development

No branches or pull requests

10 participants