I've been spending quite a bit of time lately digging around in VS.NET designer internals teaching myself how everything works. My goal is to demystify the the designer technology in the product and encourage development teams, especially larger ones to build designers for the frameworks that they end up building to realise productivity improvements.

Over the past month or so that I have been stuck with my head in ILDASM.EXE and .NET Reflector (awesome tool BTW) one of the frustraitions has been that alot of the interesting bits are marked as internal. In my experience, frameworks with classes and their members marked as internal tend to mean that a compromise in functionality/flexibility in order to achieve the desired level of quality before shipping.

I appreciate why this is done (everyone wants a stable product), but I am hoping that over the next few versions the folks at Microsoft work hard to expose more and more of this functionality. That said - once you get your head around this stuff you can make things insanely easy for those that come after you.