Usually, because a particular project fails to meet a particular need I happen to know how to fix.
Most of my OSS work has been in OpenZFS. I got started on it because of a mix of a hardware failure and Microsoft’s incompetence. Back in college, I had a Windows Media Center machine that had a second drive for recordings. The recording drive failed, and Windows would not boot. I then decided to take a two factor approach to resolving this issue. The first factor was to no longer trust Windows on physical hardware, so I built a new machine to virtualize it. The second factor was to have redundancy to survive drive failures. I tried MD RAID 6 with 6x 2TB drives and LVM2, but no matter what I did, I could only get 20MB/sec in QEMU. There was no run to run variance as the results were basically exactly 20MB/sec each time and I had no idea why. I then tried ZFSOnLinux and saw 200MB/sec to 220MB/sec performance across various runs. ZFSOnLinux was not considered production ready at the time and had some obvious flaws (such as warnings about mutex corruption in dmesg when loading the kernel module), but I thought to myself at the time “I am a CS student. I can fix this.”. I then started writing patches and sending them upstream. Since then around 15 years have passed, and I have submitted somewhere between 400 to 500 patches to OpenZFS (a good number are in the obsolete SPL repository). I also was Gentoo developer for a number of those years and maintained the ZFS packaging and wrote the genkernel ZFS support. I have a number of miscellaneous patches in other projects too, including Linux.
Anyway, I commented to say that I had a similar experience. I did not know how to fix the issue in MD RAID 6 + LVM2 back then, but I knew how to fix another project that did meet my needs, so I fixed that. :)