Documentation is fucking underrated. At work we lose several minutes a day diving into the framework code to look up not commonly used functions because we decided documenting it was too time consuming. But it's not only that, it's that in many places documentation just sucks. How many times have you been faced with sad JavaDocs that describe what a class has, but not how it interacts with the rest of the world? No tutorial, no nothing, so you have the pieces and you are left on your own to figure how to put them together. If the devs were feeling particularly generous, you will get some uncommented example/test files that cover about 11% of the library code. Then they wonder why nobody adopts their shit library.
Not only that, but we are seriously neglecting documentation on how to contribute. Some (very few) projects have a HACKING file which gives some pointers, but for example, Krita's HACKING file expresses how they want the code, not how to actually hack the program. Okay, nice, but the program is several hundred thousands LoC split in who knows how many files that interact in who knows how many ways; I don't have the time to go header file hunting all the way down from main function, full of C-style succint variable names that only the original dev knows what it means. If I have to learn a decade of code before being able to add a button to, say, open a history of my last used pencils, I'm sorry but I will instead clutter your git issues with useless suggestions and hope someone else implements it for me. You better not wonder why the software is only being developed by the same three guys who were there since the start, though.