* Optional dependencies are used to decrease the transitive burden of some libraries.
* These dependencies are used when it is not feasible to divide a project into sub-modules.
* Some dependencies are only used for a specific feature in the project, and if that feature is not there, then that dependency will not be used.