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.
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)
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)