Learning Orchard CMS

Thanks for this contribution. How have you gained so much knowledge about the core architecture of Orchard CMS? From a developer's perspective, it's been difficult to get a firm grasp of all the design principles and philosophies
used to build the system. There's no true API documentation that I know of, so it's difficult to gauge what code is intended to do what. All documentation and videos are geared for non-developers. I find myself just trying to blindly copy
other implementations instead of getting a handle on the "why" of it all. How have you learned the system? Have you just stared at the code for a long time until it all clicked?

Before I started using Orchard I basically spent months trying to write my own modular CMS engine from scratch. A lot of concepts in Orchard were things I'd been thinking about myself for quite a long time! In some cases their solutions are frighteningly
close to how I'd been trying to approach it. So I think that really helped me understand the code. Of course I've also learnt a lot from reading the forums, and articles by Bertrand et al; but mostly it's been a case of following through their code and seeing
how things fit together. Parts of it have been really hard to understand, and comments are practically non-existent, so I can see how difficult it could be if you're not used to looking at this type of system. The really complicated bit is the whole
shapes / dynamic composition system, and once you understand that everything else starts fitting into place.