Regarding source folder hierarchy, there are always some common features, such as the src
, doc
or test
folders, which have rather easy-to-understand contents.
However, I realized that big projects have both a lib
and vendor
folders, while I had always thought they were the same, as their names hint at including “third-party libraries
from external vendors
”. Though, seeing both in the same project means there is a difference.
I couldn't find any information nor on Google nor on sources such as the Filesystem Hierarchy Standard, even though this is actually a somehow common practice.
Here is a more detailed example with Symfony: once you create a project, you get a lib
folder at the root of your project. In this folder, the following structure is found:
lib
+--filter
+--form
+--…
+--vendor
+--simpletest
+--symfony
Here, the symfony
folder contains all Symfony's core.
lib/vendor
and other directories alongvendor
. And they're not the only ones. “everyone can select any dir structure” Yeah well, thanks. Everyone can code however they want. If I want to callsrc
“woudzigouga”, I can. I'm not asking whether I can but why others that are serious and well-known do something that looks like a good practice.lib
holds core libraries (absolutely essential libraries OR libraries built from the same author as the framework) andvendor
holds third party libraries, I don't think there's any other sane distinction. That distinction is somewhat important for a variety of reasons, and it makes sense as a generic practice.