The unit of Salesforce distribution is the Package, which is installed into a Salesforce environment as a single entity.
Essentially, Salesforce uses a plug-in model for its Packages.
The user interface is surfaced in one or more Tabs, which are contained in one or more Apps.
- When the user selects an App, through the standard user interface, the corresponding Tabs align at the top of the screen.
- The Tabs can contain Visualforce or Lightning pages, which are similar in design to Active Server Pages.
The Tabs can also present views into a Salesforce object, which is essentially a database table.
- A package can include custom objects, and a variety of other Salesforce components.
Salesforce subscribers can also create all the same components for their own use, as well as make certain changes to the components provided by a package.
Access to Salesforce components is determined by a user profile, which can be supplemented by permission sets.
Each Salesforce environment includes one or more System Administrator users.
- The Admins also have a profile which determines what components are visible through the user interface.
- However, admins can also access the Setup menu, where they can see all of the components in their org, and assign permissions to themselves and other users.
The package is maintained in its own Salesforce development environment.
- Developers add components to the package manifest maintained in the packaging org.
- New versions of the package are uploaded from this environment to the Salesforce cloud.
- Once a version is uploaded, it can be installed into other environments by referencing a unique identifier.
- When a package includes Apex components, there must be 75% unit test coverage across all of the Apex components.
Certified packages can be listed in the Salesforce AppExchange, where potential subscribers can contact the publisher or self-install trial versions of a package.
- For free packages, subscribers can usually self-install the production version, without interacting with the publisher.
The installs of each version of a managed package can be tracked by a License Management App (LMA).
- The LMA is installed in the package publisher's own Salesforce instance ("business org").
- The LMA itself is also a managed package.