Features are described in terms of the plug-ins that comprise them. This means that plug-ins are the fundamental unit for packaging function.
While features are organized for the purposes of distributing and updating products, plug-ins are organized to facilitate the development of the product functionality among the product team. The development team determines when to carve up program functionality into a separate plug-in.
Plug-ins are packaged in a plug-in archive file and described using a plug-in manifest file, plugin.xml.
Plug-in fragments are separately packaged files whose contents are treated as if they were in the original plug-in archive file. They are useful for adding plug-in functionality, such as additional national language translations, to an existing plug-in after it has been installed. Fragments are ideal for shipping functionality that may trail the initial product release, since they can be used to add functionality without repackaging or reinstalling the original plug-in. When a fragment is detected by the platform, its contents are merged with the functionality in the original plug-in. In other words, if you query the platform plug-in registry, you would see the extensions and other functionality provided in the fragment as if it was in the original plug-in.
Fragments are described using a fragment manifest file, fragment.xml. It is similar to the plug-in manifest file. Since a fragment shares many properties with its plug-in, some attributes in the plug-in manifest are not valid, such as the plug-in class and plug-in imports.
Plug-in archive files can contain plug-ins or fragments.