Public interfaces and Solaris 9
patchadd exit codes
A commenter on an earlier entry noted that
patchadd's exit codes are apparently not documented because they're
considered an internal implementation detail that might change at some
point. Unfortunately this is bogus logic.
There's a simple rule: once you explicitly expose something to users, it
ceases to be an internal implementation detail in practice no matter
what you want (and no matter what you may claim in documentation,
although Sun does not explicitly claim this in the
Solaris 9 manifestly exposes
patchadd's exit codes, since they are
reported as is by things like the Solaris 9 recommended patch cluster
installation script, as I found out. If Sun
wanted system administrators to remain blithely ignorant of
fine details, all of the higher level tools should have hidden them; as
it is, we won't be very happy if Sun were to turn, eg, 'return code 2'
from something harmless to something that indicated a real problem.
I consider exposing things to people different from exposing them to programs. It's very hard to hide internal details from programs that go poking, but it's a quite different thing to shove those details under people's noses. And once you do the latter, you lose grounds to complain about programs using the information too. (In effect the programs have stopped being nosy parkers and have become our agents.)
(Disclaimer: I don't know if Sun really considers Solaris 9
exit codes to be just an implementation detail. The manpage doesn't
document them, but then it doesn't say that they're private. Besides, it
just makes a convenient example; the attitude is unfortunately somewhat