Again, Dejan, I’m not sure I get your point. But… again… if I understand what yuo’re saying…
Let’s start out by establishing the fact that there are many different classes of “undocumented” solutions. Some are merely undocumented because, well, nobody’s ever gotten around to documenting them, or the usage cases are judged to be very narrow, the dev owner isn’t aware that anyone externally wants to use the function, or the dev owner of the function doesn’t want to document a function externally for his own reasons… BUT the use of the undocumented feature is such that it is well understood, widely used internally within Windows, and is likely to be – not guaranteed to be but merely likely to be – stable in the foreseeable future. Yes, I recognize this isn’t clear-cut and is a judgement call.
Using such features is edgy engineering… but it is occasionally necessary to take reasonable engineering risks when one needs to innovate. As long as the client understands the risks, and they judge those risks to be consistent with their business case, that’s all fine. I’m totally ready to help them.
OTOH, there is a DIFFERENT class of undocumented solutions/features/functions that amount to pure irresponsible hackery. Into this class I place using hard-coded offsets into structures, calling functions that are internal to a particular module (functions with KiXxxx prefixes are a reasonable example here), or manipulating “private” lists without appropriate serialization. This isn’t clever “edgy” engineering, it’s irresponsible, stupid, shitty engineering.
At my company, we draw the line at NOT doing irresponsible engineering in production software, regardless of how eager a client is for us to do so. And we tell such clients to go elsewhere and wish them good luck. If that client tells EVERYONE THEY KNOW that we told them to go elsewhere, I’m TOTALLY good with that. You know why? Because if we acquiesced, and then the irresponsibly engineered solution breaks, you can be SURE that such a client WILL tell EVERYONE THEY KNOW that we were the ones who were responsible for the ensuing cataclysm. And when some peer of mine looks at that code 5 years from now and sees that I was the one who wrote it, I’ll be embarrassed and ashamed of the work.
So, no, sorry. Irresponsible engineering can NOT be bought from my firm. I can’t BELIEVE it can be bought from ANY responsible professional consultant. By definition.
Who cares? Let them learn on some other list how to do shitty engineering. From some other shitty, irresponsible, engineer.
Peter
OSR