as for the design issues, i do try to make commands and APIs give more detailed and intelligent response codes and error messages than just letting things fail where they may. i do not agree with the idea of requiring the user to be sure things are correct (user in the case of an API being the programmer of the calling program).
Tradition is peer pressure from dead people
What do you call someone who speaks three languages? Trilingual. Two languages? Bilingual. One language? American.
What do you call someone who speaks three languages? Trilingual. Two languages? Bilingual. One language? American.