Package is a collection of components and applications that are created and developed in a salesforce organization. After creating a package, we can distribute it to other salesforce organizations. These are completely private to your organization unless published in app exchange for distribution. You can combine components in one package to produce powerful features and applications. There are two types of packages,
1. Unmanaged package:
These are used to define open source applications and these applications can be modified by the developers who install them into their organization. The developer who uploaded the package can't edit the package by placing other new components into it. Developers or users can't upgrade unmanaged packages.
2. Managed package:
These are widely used by salesforce partners to develop applications and sell them to customers. Source code for many components is not available unlike to unmanaged packages. Managed packages can be upgradable. Mostly managed packages are used for sales.For example, in salesforce app exchange is a place where we can have many managed package applications.
Permission sets and profile settings in packages:
Developers can use permission sets or profile settings to grant permissions and other actions in packages.
Creating a Package:
In the setup click on create a new package and enter its name, description and click save.
Add required components to the package. Click on the upload after adding the required components.
Give the version name, number, release notes and a password(if required) and select the additional feature and object requirements.
Upload the package with all the terms defined by salesforce org and it will be ready to use.