Here you can find a brief overview of how the Vim editor is packaged in Debian and a few concepts useful later; if you are just interested in the guidelines for packaging addons skip to Section 3.
The Vim editor is split in Debian as several binary packages. The key splitting is according to variants, a Vim variant is a particular version of the /usr/bin/vim executable built with a given set of (configure) option. Examples of variants provided in Debian are: vim-tiny, vim, vim-nox, vim-gtk3. Have a look at their full descriptions for their characteristics. The actual /usr/bin/vim file is managed via the alternative mechanism and point to one of the variants.
Another relevant binary package is vim-runtime which ships the Vim runtime environment distributed upstream together with the editor. Almost all third party extensions to Vim come as additional pieces of this runtime environment, how to package them is the main topic of this document.
To be working properly extensions should be located somewhere where
Vim can find them. This "somewhere" is expressed in Vim as a list of
directories to be looked for in turn when looking for extensions. Such a
list is the Vim runtime path, and is kept in the
Vim global variable runtimepath
; you can inspect it
executing :set runtimepath? inside Vim. See :help
'runtimepath' in the Vim online help for more
information, including the relevant subdirectories which Vim will look
for inside each component of the runtime path.
Vim also has a concept of packages. A package
must follow a specific directory structure and be located in one of the
directories defined in the packpath
option. Within each
package, there are two relevant directories:
All addons in this directory will automatically
be added to runtimepath
and loaded like any other
addon that comes with Vim. These are called
automatic addons.
Any addons in this directory must explicitly be enabled by executing :packadd! ADDON in the user's vimrc. These are called optional addons.