In response to Monty Taylor's blog post ...
I am the culprit for the content of plugin.h which has the comment "the following declarations are for internal use only" which was introduced into the MySQL server codebase a couple of years ago.
Unfortunately, I had to work with the limitations of the C programming language and its preprocessor so to achieve a solution which behaved as if it had the strong typing like generics but working with simple C; I had to create a bunch of preprocessor defines of which are not intended for the plugin implementor to use but are the foundation for the macros which form part of the public API.
And at least I put in a comment telling people that they are for internal use. If you had access to the internal MySQL WorkLogs for this feature, it is perhaps one of the best well documented APIs for the server from the time of its introduction to the server codebase ... Historically before and since, new APIs are frequently added without any documentation nor comments.
Definitely not a "FAIL". It's working as designed.
Since your comment is in respect for the Drizzle project, feel free to scrap all that C defines and re-implement all of it nice and cleanly using C++ templates.
Isn't that the benefit of open-source? If you have an itch, scratch it.
The drizzled/plugin.h has mIxEd-CaSe defines. That ugliness appears to be a result from a global string search and replace.