+- library: no state (or very little) and no callbacks
+ 1. Mode state is precious
+ 2. Don't design exclusively for convenience
+ 3. Avoid knobs on knobs
+ 4. Composing > Inheriting
+ - import changes global state (even if you don't use anything)
+ - What happens when you call "init" the 2'nd time?
+ - What can happen before __main__ and after it?
+ - Push state outside (see quote)
+ - flask/pylons request which appears global but is per request
+ - If it makes it harder to write tests - people will write less tests
+ - Convenience != Cleanliness
+ - knob: replaceable component (like DEBUG flag)
+ - The Yo-Yo Problem (class graph is too complex)
+ - Smells slide (Inheritance Considered Harmful)
+ - In composition the contract is more "formal"
+ - If you offser superclass, make most (all?) methods abstract