Native Linux ports - One perspective

I spent 5 years working on AAA native Linux ports. That’s not a long stint by some standards, but nothing to shake a stick at either, so it’s not unexpected that I’ve had a bunch of people come to me wanting a hot take on Valve’s position on the future of that effort now that the Steam Deck is on the horizon.

I don’t want to ignore the nuance, and now that I’m out of the business I’m not sure how much value my opinion holds on it anyway, so instead of offering up a juicy hot take I instead want to explain a part of where my head was at 3 years ago when I left porting behind. It’s a perspective I’ve shared a little of before, but it feels more and more relevant especially today.

Working on native AAA Linux ports was… hell. It burned me out to the point my mental health took a pretty big dive. It’s fair to say this was in part due to unrelated issues with company management, but the work itself was also hard, often very tiresome, and most of all it was horrifically inefficient. Each game took a gargantuan amount of effort - they often needed a year or more of concentrated development, and that’s with a huge codebase making the process easier. Every game challenged us in new ways we didn’t expect and that new knowledge would only benefit a handful of future games.

We had Linux platform experts, incredible graphics engineers, as well as a team of excellent QA who were developing a real expertise in testing on Linux - all things that are distinctly hard to come by in this industry. Each game needed a ton of time, effort, and expertise and while we did provide that, we barely ported a handful of games each year. It was never a sustainable number and it likely never made any money. Yes, we were the darlings of the Linux gaming community, but to what end?

To be taken seriously, the platform needed games I knew we’d never touch. So sure, let’s just have more porting studios and talent, right? Capitalism optimises profitability fairly well for stuff like this, and it settled on 2 big studios and about 5 freelancers. Not enough. Not enough by a couple orders of magnitude.

That was the problem that was always in the back of my mind. Was delivering only a trickle of native ports, with infrequent compatibility, often years late, doing damage to the ecosystem? Was there a better way to do this? With that question came an clear answer - there is another solution. I’d sit there and imagine, instead, if all that effort had been contributed to a tool anyone could use, rather than being bottlenecked with bespoke ports.

The trouble is that even if we shared our closer source tools, a port would still require source access to the game, and love it or hate it games are only ever closed source, access to which meant running into the fangs of capitalism, which had already judged us unworthy. Native porting requires source access, and source access is truly expensive.

There’s many other great routes to a similar goal of more native ports - SDL, Vulkan, Unity, all offloading a majority of the porting “work” to a select few experts, but these still require bespoke QA knowledge, they still require infrastructure and focus and time and money. And, they still require bespoke effort and individual access to the source.

So being honest with myself at the time, a better solution needed to be something that requires minimal manual intervention, minimal capital to bootstrap and extensively solved shared problems. It needed to work on the end product, not source, and above all it needed to be free. The only thing I could see that ticked these boxes was Wine, but it just wasn’t good enough at the time. It worked for old games, but it fell apart when fed modern titles. It needed some backing, and something better than OpenGL to handle the rendering.

That was, amazingly and scarily, only two key issues that needed solving - Wine needed more investment to improve some key aspects like anti-cheat, and it needed a route to a much more powerful rendering engine. For the latter, by happenstance or entirely on schedule, we’d just demonstrated the sheer freeing power of Vulkan compared to OpenGL for translation layers. I expected an open source equivalent to show up at any moment and I was not left waiting. For the former, well, go research where Valve has been spending money, hell do the same for the latter too.

The writing was on the wall, and I left Feral and porting behind soon after. It’s been a little over three years and I don’t believe much has changed. If that counts as a hot take then so be it.