I respectfully disagree with "[a]lways consider the concept that a little copying is better than a little dependency." One of the main reasons that libraries were created is to counter the problems that copy-paste can cause, especially when trying to debug and maintain similar code all over an application. Needless to say, developers never seem to know where the line is between "a little copying" and too much, so I don't believe it should be allowed at all...ever.
As for deletions: one of the major lessons I have learned over the years is to deprecate existing code (i.e., mark it for future deletion) but never delete it outright. Then compilers can warn of potential future changes rather than cause errors and failures. My suggestion: develop a basic testing framework to test each library before it is incorporated into your code base. This could be part of your unit test framework, which (in my humble opinion) you're stupid if you don't already have in place. And maybe this framework should also incorporate security testing so you know what constitutes a safe library vs. the alternative.
Other than my two points above, we should all plan for dependencies to stay forever. Copy-paste and writing on our own (the "Not Invented Here" syndrome) are not real options. We should adapt by adapting our frameworks to test dependences better, in both original code and added libraries.
More information about text formats