Thanks for an interesting read. Your last couple of paragraphs struck
a chord with me, about attempting to be "helpful" with "smart
heuristics." I wholeheartedly agree-- there are extra lines of code
under the hood of argparser.py (or wherever they are), that in their
attempt to be "helpful" only end up pushing additional lines of edge
case handling code out to the user.
The only part of these conventions that I'm not a fan of are the
combining of short options. The tradeoff between saved keystrokes and
loss of clarity/explicitness never seems worth it to me.
I was just having a discussion with someone the other day about "smart"
behavior, and I had said I preferred simpler, intuitive behaviors that
have easily-understood failure modes. Your own latest article about
Matlab range handling is a perfect example!