Thoughts on PipeWire 1.0 and beyond
PipeWire 1.0 was released last week. This is a major milestone in a long journey that I had the opportunity to be a part of and I am grateful for it.
For me it all started in 2018, when rumours about PipeWire being a possible successor to PulseAudio had started circulating. At the time I was working on a project that was using PulseAudio in an odd way and I wanted to explore other solutions. Coincidentally, the first PipeWire hackfest was announced during that summer, to be held in October, and I signed up for it without hesitation. The rest is history.
Thanks to a strong collaboration with Automotive Grade Linux (AGL), WirePlumber was born shortly afterwards. It was clear to me at the time, and still is, that PipeWire has strong potential to solve problems outside the scope of the Linux desktop, and WirePlumber is a key component to materialize these solutions. By being the orchestrator behind PipeWire’s graph, it was designed to be able to customize the behaviour of the entire system so that it can address different use cases, such as the ones in the automotive realm.
The 1.0 release now marks a point where we can confidently say that PipeWire is here to stay. But of course it is not the end of the journey. There are many new areas to explore going forward, especially in WirePlumber and the ecosystem that builds around PipeWire. Starting with WirePlumber 0.5, which is very close to a release now, it will be possible to build more complex policies and customizations with less overhead and easier maintenance. This is something that I’ve been excited about for a long time.
I am also eager to see more integration around video use cases. PipeWire is known to be the tool to access system cameras and screencast sources, but its utilization in these use cases is still primitive. I would love to see, for example, transparent video filters that change your background in video calls effectively and efficiently, not having to rely on the call applications to do that. And this is just a simple example, I think that there is potential to see much more interesting integrations, combining complex graphics and machine vision with PipeWire’s powerful architecture.
On that front, I am also keen to see the outcome of the GSoC project that I mentored last summer (2023). The project was about creating a video converter filter, using Vulkan, that would allow us to transparently link video ports that provide or consume video in different pixel formats and resolutions. The project completed with a working demo, but making that more widely available requires more polishing; mainly because Vulkan does not work on all systems and we need to add better detection and fallbacks, so that existing functionality does not break.
All in all, I believe that with PipeWire 1.0 being out of the door, a lot of exciting new things are coming. Looking forward to it!