I use open source self hosted software everyday. I love the community and I would love to be able to contribute to some of these projects.
As far as code goes, I basically no nothing about how it works. I see the development section of the repos I use and again, I’ve go no idea how it works.
How can I teach myself how to offer small improvements to the projects I use?


Programming in general?
Probably more that if you want to work on graphics software, you need to understand graphics programming?
That’s unfortunately very difficult. I know of no good way to do that. With specification based software, you can at least read the specification or related standard and then it flows from that how it should work. With programs that server a different, specific use case, there is a manual, and flow to things and then “things stick out”.
If there are issues, you just read a bunch of issues and read the code that they are about and get a feeling for why the issue is an issue and why the code is the way that it is.
I remember one thing I helped with for a short while, didn’t use the python “with” file writing dialogue, because the file they were writing was massive and opening it in one place, then doing a bunch of functions that wrote and appended to the file and then closing it somewhere else, was the best solution, even though it looked unclean at first.