"When I use a word," Humpty Dumpty said, in a rather scornful tone, "it means just what I choose it to mean - neither more nor less."

Binary Package: A binary software component and the information necessary to use it. Libraries and header files, the meta-data to include it into a project, and the packages this package depends on.

Package Manager: A system that makes a consistent set of binary packages available to be included in a project. The package manager will ensure that updating one binary package entails updating all of the packages that use it, and ensuring that dependent packages are also installed. A tool like apt is an example of a package manager.

Source Package: The sources used to build a binary package, meta-data about the dependencies, and a scriptable interface the package builder can use to drive the build against other packages and with a particular toolchain.

Toolchain: The compilers, linker, system libraries, standard C++ library, C runtime, used to convert source to binary. Objects built with the same toolchain are minimally compatible. They are, for example, all 64 bit using c++17 against the non-debug version of the standard library. Packages still might not be compatible if they were not built against the same set of dependencies.

Package Builder: Converts a source package to a package. It will drive the build with a particular toolchain communicating what dependent packages should be used to build against. Tools like sbuild and pbuilder are package builders.

Distro: A consistent set of binary packages and the source packages that produce them that can be used with each other. There is only one version of a binary package available from a distro.

Distro Manager: When a source package is promoted into a distro, it will manage the rebuild of all source packages by the package builder of any package that depends on the package being promoted. It will gate promotion, preventing incompatible packages from being promoted for use. HEAD may be the only version available. It may have facilities to deal with co-dependent packages that do not form a DAG.

Binary Integration: The results of building a package are made available to the development build. Public headers and suitable libraries are installed where the build can use them. The source may be available, but the development build will generally ignore changes made there. This is as opposed to Source Integration

Source Integration: The sources for the package are integrated into the development buildsystem. Changes made to the package sources will flow automatically through the build. There is no 'install' step. There are occasional hybrid systems where the package sources are built by the development system and then installed for the rest of the build to pick up. This usually produces headaches for the developer.