# Get started with package creation

> Get a high-level overview of creating UPM packages.

Unity Package Manager (UPM) packages are the main package type in the Unity ecosystem.

Unity designed the Package Manager around the UPM format, which enables package creators to accelerate development in many ways:

* It streamlines the distribution of functionality that enhances your Unity Engine experience.
* It provides a platform for users to discover and share reusable components.
* It promotes Unity as an extendable and open platform.

The extensible nature of UPM packages means you can do things like:

* Create your own UPM package for yourself, your studio, or a wider audience.
* Use a UPM package that you got from GitHub.
* Convert an existing UPM package, including one that originally came from the Unity Registry, to a mutable package, so you can customize it.

In short, you can create entirely new UPM packages, or modify existing ones that are mature and include extensive functionality.

The following information guides you through the process of creating your own UPM packages. For information about customizing an existing package, refer to [Copy a Unity package to your project folder](/engine/6000.6/manual/packages-list/dependencies-lp/upm-embed.md#embed-cached).

**Important**

Make sure the packages you create or customize conform to Unity’s [Terms of Service](https://unity.com/legal/terms-of-service) and [Unity's Package Guiding Principles & Guidelines](https://unity.com/legal/terms-of-service/software/package-guidelines).

## Additional resources

* [Comparison of package creation locations](/engine/6000.6/manual/packages-list/cus-pkg-lp/cus-location.md)
* [Package development workflow](/engine/6000.6/manual/packages-list/cus-pkg-lp/cus-pkg-development/custom-packages.md)
