In order to facilitate the packaging of applications by providing successive steps to achieve, each package is assigned a quality level, from 0 to 10.
A package must meet a number of criteria to reach each level. In addition, to reach a level, the package must have previously reached the previous level.
This classification of applications by levels has 3 advantages:
- The application packaging is more fun, with clear objectives to achieve and successive steps.
- A properly packaged application is put forward more than an application that does not comply with packaging rules.
- Users can quickly see the level of an application and thus know if the package is of good quality.
The level is automatically computed by the automatic test suite ("the CI") which runs tests [here](https://ci-apps.yunohost.org/ci/) and results are summarized [here](https://dash.yunohost.org/appci/branch/stable).
In the application catalog of the webadmin, an application is only shown to the user if its level is at least 5. Otherwiser, users may have to enable the display of "low-quality" applications to be able to install it.
The exact definitions are likely to shift over time and are heavily dependent on:
- the [package linter](https://github.com/YunoHost/package_linter) which performs a static analysis of the app scripts and files to detect issues or deprecated practices
- the [package check system](https://github.com/YunoHost/package_check) which actually tests the various operations (installs, upgrades, backup, ...)
The application is long-term good quality, meaning it's been at least level 5 in the application catalog for a certain amount of time (when writing this: level 5+ 90% of the time during the last year)
The application is considered ["high-quality"](https://github.com/YunoHost/apps/blob/master/hq_validation_template.md): it is well-integrated with Yunohost (in particular SSO/LDAP) and follows the recommended development workflow.