I’d recommend reading Chris’ explanation of OGFs and how we use them at Microsoft. I remember when I first became aware of them being used at MS in the early 90’s as I was one of the folks responsible for producing them for early versions of Visual C++.