https://bugzilla.wikimedia.org/show_bug.cgi?id=55151
--- Comment #2 from Kunal Mehta (Legoktm) legoktm.wikipedia@gmail.com --- I disagree. Non-zero return value is for errors from which the application could not recover. There might be errors or unexpected important events which do not cause the bot to fail but should be reported nevertheless. (For example if an interwikibot gets a talk page message on one of the many wikis it visits, that should be reported, maybe the bot should stop working on that wiki until the owner can check the message, but it certainly should not stop working on all other wikis.)
If you want to show human-readable output to humans, and machine-processable output to scripts, the proper solution for that is to detect (via sys.stdout.isatty()) whether you are writing to a terminal, and format accordingly (and allow overriding the behavior via a command line switch). That is how sophisticated command line applications usually operate; compare, for example, the output from 'ls' and 'ls | cat'.