Background
Our project, written in Java, is now trying to eliminate unnessceary external dependencies introduced during prototype development. We feel it easy when killing simple static utility methods, later we got a problem. Our project make heavy use of LazyInitializer
from apache common-lang3 to implement Singleton Pattern. (link) It seems that we can elimate the dependency of commons-lang3 only by lifting that class away, or we may need to create 40+ static inner private holder class to implement singleton pattern.
Problem
What we should do to make lifting from an open source library licensed under Apache License 2.0 legal? (too bad if I can't do it at all)
Something else
In addition to Apache license 2.0, what about other major open source license such as MIT, GPL, LGPL, BSD, etc (OSI has a full list of them)