When did people favor composition over inheritance?
TL;DR: The post says it came from trying to make code reuse safer and more flexible. Deep inheritance is difficult to reason with. I think shared state is the real problem since inheritance without state is usually fine.