# Features

On disk, an Eclipse based product is structured as a collection of plug-ins. Each plug-in contains the code that provides some of the product's functionality. The code and other files for a plug-in are installed on the local computer, and get activated automatically as required. A product's plug-ins are grouped together into features. A feature is the smallest unit of separately downloadable and installable functionality.

The fundamentally modular nature of the Eclipse platform makes it easy to install additional features and plug-ins into an Eclipse based product, and to update the product's existing features and plug-ins. You can do this either by using traditional native installers running separately from Eclipse, or by using the Eclipse platform's own update manager. The Eclipse update manager can be used to discover, download, and install updated features and plug-ins from special web based Eclipse update sites.

The basic underlying mechanism of the update manager is simple: the files for a feature or plug-in are always stored in a sub-directory whose name includes a version identifier (e.g., "2.0.0"). Different versions of a feature or plug-in are always given different version identifiers, thereby ensuring that multiple versions of the same feature or plug-in can co-exist on disk. This means that installing or updating features and plug-ins requires adding more files, but never requires deleting or overwriting existing files. Once the files are installed on the local computer, the new feature and plug-in versions are available to be configured. The same installed base of files is therefore capable of supporting many different configurations simultaneously; installing and upgrading an existing product is reduced to formulating a configuration that is incrementally newer than the current one. Important configurations can be saved and restored to active service in the event of an unsuccessful upgrade.

Large Eclipse based products can organize their features into trees starting from the root feature that represents the entire product. This root feature then includes smaller units of functionality all the way down to leaf features that list one or more plug-ins and fragments. The capability to group features hierarchically allows products to be stacked using a 'Russian doll' approach - a large product can build on top of a smaller one by including it and adding more features.

Some included features may be useful add-ons, but are not vital to the proper functioning of the overall product. Feature providers can elect to mark them as optional. When installing optional features, users are provided with a choice of whether they want them or not. If not installed right away, optional features can be added at a later date.

The About option on the Help menu provides information about installed features and plug-ins. The Software Updates sub-menu on the Help menu groups together commands for updating existing features, and for finding, downloading, and installing new features.

Workbench

Inspecting the current configuration
Installing new features with the update manager
Enabling, disabling, and uninstalling features
Updating features with the update manager
Controlling the Eclipse update policy
Restoring a saved configuration