These words are used throughout the spec. Here's their canonical definition:
container is a generic word for a set of files, folders, and symlinks. It is
also a protobuf message that encodes information about a set of files, folders and
symlinks such as their path (relative to the container's root), permissions and sizes,
but not their contents.
diff is the result of a comparison between two containers,
It contains a list of operations required to build
new's files from
re-using data when possible.
patch contains all the information needed to apply an upgrade: both the
new container, and their diff. Patches are stored in a standard file format.
signature contains one container and a series of hashes corresponding to fixed-size blocks
of the container's files. Signatures are stored in a standard file format.
/dev/null is the empty container: it contains no files, folders or symlinks.
A diff against
/dev/null is a suitable way to store the initial version of
archive is a compressed container stored in a single file (e.g.
build.7z, etc.). They're the preferred way of storing a particular version of
a container, and are suitable for diffing, although at the cost of on-the-fly
block is a fixed-size series of bytes that belong to a file. Folders and symlinks
do not have blocks. Files usually end with
short blocks, which are smaller than
regular blocks, except if their size is a multiple of the block size.