Dependency needed only for certain features.

Ability of versions to work together.

Release primarily containing fixes.

Package needed during development.

New software works with older interfaces.

Release introducing new functionality.

Package required during execution.

Older software can handle newer formats.

Small release correcting defects.

Process of selecting dependency versions.