One of the benefits that comes with opensource code is the number of authors that end up designing/analyzing/re-designing areas of an opensource project. This can lead to complicated, yet powerful OOP designs. This can make projects very extendable, which is a great benefit. Therein lies the pitfall though: there is often little to no documentation of the complicated design!
In non opensource projects, this doesn't usually come into play, as often the developer who designed the whole thing, is on hand to say "Oh, ya. Look here. It does this that way". With opensource projects, not so much. That's where I find myself recently - spelunking through class hierarchy after class hierarchy to try and make sense of how the whole thing was originally intended to work. A simple "// Class A works like this, and here's why" goes a long way, especially when you will never meet the people that will be extending your code.