Free software is unwelcoming to developers. No, I am not talking about muh diversity, and in fact CoC completely ignore this issue. Free software is unwelcoming in the sense that most projects don't seem to want your contributions, and it shows: in most projects, most commits are done by a small set of people, while casual contributors usually only implement very quick patches, if anything at all. This issue isn't fixed by a CoC because it has nothing to do at all with the issue at hand; contributing just sucks, from a technical standpoint.
Put yourself in the situation where you are not a NEET. You have a job, maybe even a family, and when you get home after a hard day of work, you wanna relax doing something different, even if it's still programming. You boot up your libre tools of choice in the little free time you have, and find out they lack a feature you would like. "I know", you say, "I will patch it in myself".
So you hunt down the program's repo, maybe in a friendly git repo, maybe in some VCS you don't know to use, maybe in a contribution-hostile format (think the way NoScript is developed: your source is some zipped JS files, with no repo to send your patches to) and find out it is written in C++, and you only know C and assembly like a good Zig Forumsnician. Alas, you understand some of the things at play, but they decided to extensively use C++ features which is actually a valid approach. It also uses some libraries you are not familiar with. Surely enough, you can work it. You read the HACKING.txt file and find out all it talks about is code style, so it is of no use to orient yourself. However, you start going down folders, and folders and folders, filled with C++ files and header files which call other header files which call other header files, and all you recognize is the main.cpp, so, due to the creative naming schemes the dev team came with, you decide it may be your only starting pointm so you work down through it. You start jumping from file to file, reading through thousands of lines of code that may or may not be documented, that may be gracefully written or not, but above all, are not your code, and therefore harder to cut through. After several hours, you manage to hunt down the specific file that contains the behaviour you want to modify, and find out it depends on another function on another file imported on who knows which of the ten header files, which import five header files each, is defined in. You eventually manage to find the function and modify it successfully, only to find out, the hard way, that function is used elsewhere, and that you need to adapt the rest of the code to suit this.
After maybe several days fighting your way through someone else's code, you manage to implement your pretty cool feature. Proud of yourself, you submit it to the developer so he can patch it in and other users can enjoy your contribution, but you are only met with a cold "I am not sure this feature fits within our view of the project", and you know your pull request will continue forever open due to the dev being too much of a coward to tell you you wasted your time. Congrats, now you have a fork; add it to the list of shit you will have to maintain yourself.
Now, you may say the solution is to only ever use C, but there is still a problem: nobody wants to waste their time like that. Some bigger projects may be well documented and thoroughly explained, but almost all projects aren't. If you really want people's code, you should make it easy to contribute. There are some projects with design documents, shit ass UML class charts and whatnot, but they still don't give a clear overview of the stuff you want to modify.
I opened this thread in hopes we can discuss smart ways to really document the code for other programmers. Inline documentation is nice to let people know how that stuff works once you are there, in front of the code, but first we need to lead people there. Maybe some guides written in literate language explaining the architecture of the program, where is each of the features located, etc, or maybe even written in a schematic, but more comprehensible form than the most common and most useless types of UML diagramd which explain little about the way the program works. Maybe enriching automatic documentation software to identify which other pieces of code are called inside a certain function, and which parts of code call said function; in general, ways to trace exact pieces of code. Maybe a file explaining the philosophy, purpose and goals of the project, and what kind of submissions the developers of the main branch want to see.
I dunno, let's just be creative for a while, masturbate our mental cocks in a circlejerk for a while, and then proceed to be the change we want to be in the world by providing tools to help everyone contribute, so we can live in a healthy and robust FOSS ecosystem.