Geek time! Thinking about how I so strongly prefer libraries, where you call the code, to frameworks, where their code calls you. (More or less.)
Looking at the trouble I've had lately with frameworks, it seems like there's always some mismatch between the end result we're trying to produce, and what the framework does naturally - and the hacks to get from point A to B are UGLY. To that extent, I realize frameworks are inherently "Waterfall"-ish, because you have to have a good idea what you're coding from the very outset. Libraries tend to be more swappable, and you're less beholden to the clever Frameworks makers having pre-guessed your requirements.
Don't get me wrong; Agile always gets messy. But I think the messiness that results from keeping things simple is easier to cope with than the messiness of hacking around something complex.