Bug 499828 - Add possibility to build and work without pipewire
Summary: Add possibility to build and work without pipewire
Status: RESOLVED INTENTIONAL
Alias: None
Product: Spectacle
Classification: Applications
Component: General (show other bugs)
Version: 24.12.2
Platform: FreeBSD Ports FreeBSD
: NOR wishlist
Target Milestone: ---
Assignee: Noah Davis
URL: https://cgit.freebsd.org/ports/tree/g...
Keywords:
Depends on:
Blocks:
 
Reported: 2025-02-11 18:54 UTC by VVD
Modified: 2025-02-19 17:36 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Add possibility to build and work without pipewire (3.38 KB, patch)
2025-02-11 18:54 UTC, VVD
Details

Note You need to log in before you can comment on or make changes to this bug.
Description VVD 2025-02-11 18:54:19 UTC
Created attachment 178159 [details]
Add possibility to build and work without pipewire

It's not a bug. It's "feature/change" request.
Not need to install pipewire on desktop with KDE6 on Xorg.

SOFTWARE/OS VERSIONS
OS: FreeBSD 14.2 amd64
KDE Plasma Version: 6.2.5
KDE Frameworks Version: 6.10.0
Qt Version: 6.8.2

ADDITIONAL INFORMATION
Patch attached. Used in FreeBSD ports.
Comment 1 Noah Davis 2025-02-11 18:59:50 UTC
> It's not a bug. It's "feature/change" request.

You can set the severity to "wishlist" when doing a feature request on bugs.kde.org. That way you don't need to explicitly write that it is a feature request.
Comment 2 Noah Davis 2025-02-11 19:41:11 UTC
Thanks for providing a patch. I'm not sure if I want to use it though.

I try to avoid optional dependencies in general for a few reasons:

1. To prevent users from installing it in a way that makes them think the software is buggy or missing features.
This is most likely to happen with users of distros that like to split packages up or users of advanced distros (regardless of whether or not they are advanced users). While it is annoying for some users who don't need the feature that requires a dependency, I don't want users to wonder why a feature isn't there when they use Wayland. It is currently the default session type, so it's important to prevent that situation.

2. QML doesn't have anything like C preprocessor blocks.
We'd need to let the frontend know at runtime whether or not the feature is available for the backend. We already do this for KPipeWire since we need to support X11 though, so this reason doesn't really apply to this request. You can try CMake text replacement, but that's not really the same and has limitations.

3. Simplicity.
Having to write different logic in C preprocessor blocks can generate a lot of extra code and complexity sometimes. The extra complexity tends to only benefit a small number of users that could probably live with having to deal with another dependency. If it's a particularly large or difficult to work with dependency, I'd understand needing it to be optional though.

4. To prevent distros from packaging it in a way that is incorrect that leads to the scenario in reason 1.
It's not that common, but it can happen and it generates bug reports for us.
Comment 3 Gleb Popov 2025-02-13 09:28:22 UTC
(In reply to Noah Davis from comment #2)
> Thanks for providing a patch. I'm not sure if I want to use it though.
> 
> I try to avoid optional dependencies in general for a few reasons:
> 
> 1. To prevent users from installing it in a way that makes them think the
> software is buggy or missing features.

The dependency can be made required by default but optional if a CMake option is passed. This protects users from accidentally coming up with a broken build configuration, but still allows "advanced" users to get a custom build.

> 4. To prevent distros from packaging it in a way that is incorrect that leads to the scenario in reason 1.

This is exactly what defaults are for.

But I agree that the patch is somewhat invasive.
Comment 4 VVD 2025-02-19 11:24:41 UTC
This is an opportunity to get rid of unnecessary (and even harmful) software in the system (such as pulseaudio or avahi).
Comment 5 Noah Davis 2025-02-19 14:32:37 UTC
(In reply to VVD from comment #4)
> This is an opportunity to get rid of unnecessary (and even harmful) software
> in the system (such as pulseaudio or avahi).

I don't see what this has to do with the request. KPipeWire does not have any networking capabilities and it currently does not record audio either.
Comment 6 Nate Graham 2025-02-19 15:52:15 UTC
I'm with Noah here. I don't see the big win compared to the drawbacks. FreeBSD should be packaging PipeWire if they don't already; it's a critical part of lots of things in Plasma these days.

Noah, feel free to close this if you don't see the value. You're the maintainer, you have the power!
Comment 7 VVD 2025-02-19 16:16:40 UTC
> I don't see what this has to do with the request. KPipeWire does not have any networking capabilities and it currently does not record audio either.
Can KPipeWire work (or at least be installed) without installing pipewire?
Comment 8 Noah Davis 2025-02-19 16:27:34 UTC
(In reply to VVD from comment #7)
> Can KPipeWire work (or at least be installed) without installing pipewire?

No, because KPipeWire is a library that simplifies the use of PipeWire.
Comment 9 VVD 2025-02-19 16:45:13 UTC
(In reply to Noah Davis from comment #8)
> (In reply to VVD from comment #7)
> > Can KPipeWire work (or at least be installed) without installing pipewire?
> No, because KPipeWire is a library that simplifies the use of PipeWire.
That's why this patch was created.