Each feature of a program has a purpose. but not all features of a codebase meet that purpose clearly.

I think this is mostly because software that was designed to do general purpose tasks gets pulled in. And then the project is dependent on that third party library. Being a cms like Wordpress, Ektron, or a javascript library like jQuery, or Boost for c++ applications. Or some other all purpose system.

Becuase I love to program, I'm always saddened by third party abstractions that make things "Easy" not because easy is bad, but to me easy is usually cumbersome, and often makes certain things easy while making others difficult or less flexible.

In light of this, I think an important concept to consider when deciding what libraries to use for a project is to consider the cost in terms of how opaque the library is and how it will dictate the manner of how the program is written.

For lack of a better term I refer to this as the "Overhead of Abstraction".