Regular and verbose status output should go to STDOUT, not STDERR
When outputting information to the screen, regular output should only go to STDOUT, not STDERR. STDERR should only be used for errors. Currently all output goes to STDERR. This makes it impossible to separate what is normal output and what are errors.
It is important to separate the streams for a tool like this that is run through cron. Cron will email output of a command (both STDOUT and STDERR) to the admin, but this is often not desired during normal operation. The typical cron setup is to redirect STDOUT to a log file, and allow STDERR to output normally. This way, if there is an error, cron will send an email with the error message, and does not create noise otherwise during normal operation.
As-is, it is necessary to create fragile pipelines and other methods to try to determine if there was an error during the update process. Application authors are much more suited to determine what is an error, and should use the correct output stream based on that knowledge.