I think 20000 lines of code is the tipping point where code bases go from applications&#x2F;libraries to frameworks.  The difference is that the objects of an application&#x2F;library are expressed in the raw language, while in a framework they are expressed in the framework&#x27;s meta-language.<p>E.g. one might start out writing a machine learning library where a transformation of data is simply a function.  But in scikitlearn, transformations of data are objects that implement a transform method.  This, together with the implicit&#x2F;explicit constraints on the semantics of the transform method, help create uniformity so that understanding of the codebase scales better than understanding an arbitrary collection of functions.