What practices should developers avoid when implementing libraries?
For example, libraries should not use the following (or default usage should be disabled):
System.err
System.out
exception.printStackTrace
System.exit
The developer of an application needs full control over the text that is presented to the user (language being one reason of many). Some libraries write (English text) to System.err, some to System.out, and some to both! Instead, libraries should inform the application (not the user) of problems either by throwing exceptions (not printing them), observer patterns, or similar.
What else? (Suggest alternatives when possible.)