The original post: /r/linux by /u/mrvictorywin on 2024-12-23 13:00:22.

tldr: I can find my way around Linux easily and understand documentation, but I can’t debug software, make meaningful contributions or understand how software works under the hood. Where should I start?

Firstly, a bit about myself. I switched to Linux in 2020 with Mint 20 Cinnamon, jumped to Arch a few months later, used various distros from Arch to Garuda to Fedora to Nobara until now. I even installed Gentoo with Sway and hastily left it when I realized compiling a browser, or the whole OS, wasn’t for me :) During the years I faced issues that were seemingly random such that either I was the only one with the problems or there were others but the symptoms were ambiguious, which left me on my own because few people shared my problems. I managed to solve some, and lived with the others. By troubleshooting on my own, I gained experience and was able to help people on Linux forums and here on Reddit. Additionally I know a bit of C and Python. I have also done my fair share of weird stuff like installing SteamOS 3 on VM, importing ringtones from Linux to an iPhone, patching Proton to fix Paradox Launcher (which was not merged), adding EGS overlay to Fall Guys before Heroic supported it and multiseat gaming via Steam Remote Play. But on most of these cases, in one way or another, the path I should follow was drawn for me. For example for adding a ringtone I modified a file that was appropriately named Ringtones.plist then rebooted the phone. I discovered the patch for Paradox Launcher because ironically one Christmas Ubisoft Launcher broke with an update, I checked the patch that fixed and saw it modified a hack for Ubisoft, right above it was a hack for Paradox. I just deleted the hack and the launcher was fixed. The EGS Overlay guide was adapted from steaminstall.vdf that was for some reason included in the Epic build. SteamOS 3 VM guide and the multiseat gaming guide are not based on anything, but the latter doesn’t even work half the time.

Then there are people who do things that look like black magic to me. How does one patch closed source software to make a game load? Or convert NTFS to BTRFS on the fly? Boot Linux on Apple Silicon? PS4? Modify Wine so it supports Affinity suite? Fix a GPU hang? There are also things I want to do but don’t know where to start. For example how could I get rid of audio latency on Waydroid? (no, audio.rc still has latency) Patch libhoudini or libndk to fix Android version Pixel Gun? (this is for my laptop that can’t run PC version well) Fix the microphone of my obscure USB camera that works on Windows? Add support to OpenRGB for my CPU cooler? Make sense of a core dump? I don’t know if I have been clear enough, I am basically trying to tell that I desire to learn interacting with hardware and advanced troubleshooting that may involve different Linux software, where documentation is sparse, error messages are ambiguous and there is no path drawn for you. Clearly this is not simple but some of us are able to do this. Where can I start? How do people learn debugging software? Is there a specific thing I need to know? Do I just throw stuff at the wall and see what sticks like the DXVK (or D9VK?) dev said? Thanks a lot if you read until the end.