1e41f4b71Sopenharmony_ci# HPM Part Overview
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ciThis section describes the basic concepts related to HPM Part in OpenHarmony.
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci## Introduction to HPM Part
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci### HPM Part Category
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ciAn HPM Part is used as a distribution unit in OpenHarmony. There are two types of HPM Parts:
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci- **Part/Module-level HPM Part**: used to achieve module or part reusability. The distributed content can be source code or binary files. Generally, such an HPM Part corresponds to a code repository and is a release of the code repository.
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci- **Distribution-level HPM Part**: used to describe an OS distribution. It consists of a list of dependent parts and scripts for building the distribution. The distribution contains various components (such as the driver, kernel, framework, and applications) of a complete OS. The image generated after the build can be used for burning.
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci### HPM Part Composition
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ciAn HPM Part consists of two types of files: description file and content file.
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ciThe table below lists the description files.
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci  **Table 1** Description files
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci| File Name| Description | Mandatory | 
28e41f4b71Sopenharmony_ci| -------- | -------- | -------- |
29e41f4b71Sopenharmony_ci| bundle.json | Metadata declaration file| Yes| 
30e41f4b71Sopenharmony_ci| README.md | Readme file| Yes| 
31e41f4b71Sopenharmony_ci| LICENSE | License file| Yes| 
32e41f4b71Sopenharmony_ci| CHANGEME.md | Change log file| No| 
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ciThe content files can be any of the following:
35e41f4b71Sopenharmony_ci
36e41f4b71Sopenharmony_ci- Binary file of the distributed part
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci- Source code file of the distributed part
39e41f4b71Sopenharmony_ci
40e41f4b71Sopenharmony_ci- Build script file
41e41f4b71Sopenharmony_ci
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci  **Figure 1** Relationship between the part/module-level HPM Part and distribution-level HPM Part
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci  ![en-us_image_0000001195369804](figures/en-us_image_0000001195369804.png)
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci## Introduction to HPM
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ciOpenHarmony Package Manager (HPM) is an open collaboration platform that connects consumers and providers. HPM Parts are objects managed by HPM.
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ciThrough this platform, the provider can publish HPM Parts and the consumer can download and use HPM Parts.
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci- The provider declares the attributes of an HPM Part and publishes it to the platform.
55e41f4b71Sopenharmony_ci
56e41f4b71Sopenharmony_ci- The consumer declares the dependencies in the HPM Part of the specified version to obtain the required resources.
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ciThe HPM platform matches the requirements of the provider and consumer.
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci  **Figure 2** HPM functions
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci  ![en-us_image_0000001240409717](figures/en-us_image_0000001240409717.png)
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci**HPM consists of the following:**
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci- **hpm-cli: a cross-platform command line tool released in [@ohos/hpm-cli](https://www.npmjs.com/package/@ohos/hpm-cli)**
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci  The hpm-cli tool offers a series of commands for creating, building, installing, packing, running, and publishing HPM Parts. You can use these commands to manage the lifecycle of the HPM Parts.
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci- **[DevEco Marketplace](https://repo.harmonyos.com): a resource repository on the server**
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci  On [DevEco Marketplace](https://repo.harmonyos.com), you can register, store, and search for HPM Parts by category. Each HPM Part has a page providing access to its readme file, dependencies, historical versions, change history, license, download volume, and source code repository address. You can publish HPM Parts to this resource repository.
74