Bundle (macOS)
In NeXTSTEP, OPENSTEP, GNUstep, and their lineal descendants macOS and iOS, a bundle is a file directory with a defined structure and file extension, allowing related files to be grouped together as a conceptually single item. Examples of bundles that contain executable code include applications, frameworks, and plugins. This kind of bundle usually contains one file representing executable code, and files that represent resources such as nibs, templates, images, sounds, and other media. On some other systems, such as Microsoft Windows, these resources are usually included directly in the executable file itself at compile time. On older Macintoshes , a similar technique is used, where additional metadata can be added to a file's resource fork. Similar in concept are the application directories used in RISC OS and on the ROX Desktop. Examples of bundles that do not contain executable code include document packages (iWork documents) and media libraries (iPhoto Library). Bundles are programmatically accessed with the codice_1 class in Cocoa, NeXTSTEP and GNUstep's Foundation frameworks, and with codice_2 in Core Foundation. Bundles often include an file for metadata. The Uniform Type Identifier (UTI) for an Apple bundle is codice_3. Application bundles. Application bundles are directory hierarchies, with  the top-level directory having a name that ends with a codice_4 extension. In an application bundle, the first directory in the bundle underneath the top-level directory is usually named codice_5. Within codice_5 there is usually another directory (called codice_7 on Macs), which contains the application's executable code. Within the codice_5 folder there is usually also a directory called codice_9, which contains the resources of the application. Among other things, the codice_9 folder contains localized versions of the application's nib files. Other common subdirectories include codice_11, codice_12, and codice_13. The codice_12 directory contains frameworks used by the  application, and are used even if another version of the framework exists on the system. The codice_13 directory contains frameworks that can be used both by the application that contains them, and other applications; they are used only if a newer version does not exist elsewhere on the system. codice_11 contains extensible code used by the application. By default, the Finder displays application bundles, which can also be referred to as packages, as opaque files with no underlying structure; the contents of the bundle can be shown with the "Show Package Contents" context menu item. GNUstep by default uses the  name of the application to name the folder that contains application code. An alternative is to name them by the computer architecture and OS the code is intended for to form a fat binary, so the application can be opened on many platforms. macOS framework bundles. macOS frameworks are also stored as bundles; the top-level directory of a framework bundle has a name that is the name of the framework followed by the extension codice_17. In the top-level directory is a codice_18 directory, with subdirectories for one or more versions of the framework, each subdirectory containing the dynamic  library code for the framework, in a file whose name is the same as the name of the framework, possibly with a codice_19 folder containing header files for the framework, and other subfolders such as codice_9. The codice_18 directory also contains a symbolic link codice_22 to the directory for the current version of the framework. In the top-level directory are symbolic links to the contents of codice_23. The Finder displays framework bundles as directories rather than as opaque files. Although GNUstep uses frameworks, they are not usually stored as bundles. This is because the full semantics of framework loading  are considered too alien to other platforms. Loadable bundles. Loadable bundles are bundles which contain code that can be loaded at runtime. Loadable bundles usually have the extension codice_24, and are most often used as plug-ins. On macOS, there is a way to load bundles even into applications that do not support them, allowing for third party hacks for popular applications, such as Safari and Apple Mail. A feature inherited from NeXTSTEP, GNUstep has the interface too. By default, the Finder displays loadable bundles, which can also be referred to as packages, as opaque files with no underlying structure ; the contents of the bundle can be shown with the "Show Package Contents" context menu item. Other bundle formats. There are many third-party macOS applications which utilize their own custom bundle format (e.g. CandyBar codice_25, Aperture codice_26, VMware Fusion codice_27, etc.). Section::::.lproj. An .lproj file is a bundle that contains localization files for OpenStep, macOS, or GNUstep software. It typically contains the codice_28 files for a given language along with codice_29 files and images if needed (for example, ReadMe or license files). These localized files are used by installer makers to customize install packages. They are also included in  an application bundle.