How ranking works
Read from the constants that do the ranking, so it cannot fall behind the code.
The formula
| Factor | Weight | What it measures |
|---|---|---|
| Compatibility with current Shopware | 35% | Whether a stable release declares support for the newest Shopware minor. Half credit for the one before it. |
| Maintenance | 22% | Measured against Shopware release dates, not the calendar. Has the repository been touched since the current Shopware shipped? |
| Quality of the compatibility claim | 15% | A bounded constraint such as ~6.6.0 states which versions were considered. An open one such as ^6.5 claims every future minor, and scores lower. |
| Licence clarity | 10% | An extension with no detectable licence cannot be redistributed, whatever its code is like. |
| Responsiveness | 8% | The share of issues closed. Repositories with no issues score neutrally. |
| Recency | 10% | How long ago the last commit landed, decaying over about a year. The tie-breaker: without it every healthy extension scores the same. |
What is not in it
Popularity. An agency extension may have a dozen stars while an abandoned experiment has hundreds. Stars and installs are shown on the boards and never feed the score.
Manual placement. No paid slots, no featured section, no per-vendor adjustment. A test fails the build if vendor-specific logic enters the ranking path.
Confidence in a compatibility claim
Support for the current release (6.7) is graded:
| Tier | Looks like | Multiplier | Why |
|---|---|---|---|
| explicit | ~6.6.0, >=6.5 <6.7 |
1.0 | Bounded inside one major. |
| caret | ^6.5, ~6.6 |
0.85 | Expands to <7.0, claiming releases published after the last commit. |
| wildcard | *, >=6.0 |
0.4 | Parses, but asserts nothing useful. |
| absent | no constraint | 0.2 | Nothing declared on any Shopware package. |
Maintenance
Measured against Shopware's release dates, not the calendar. What breaks a finished extension is a new Shopware release.
- Current: committed to since the newest Shopware minor shipped.
- Lagging: quiet since then, active after the previous minor.
- Dormant: silent across two or more minors and idle over two years.
- Abandoned: the maintainer marked it abandoned on Packagist.
The two-year floor exists because Shopware minors have shipped five months apart.
Breaking ties
Every factor above is categorical, so healthy extensions bunch at the top. Time since the last commit decays over 365 days to separate them.
Changing the formula
The weights live in one class in the public repository. Any change benefiting the maintainer's own extensions needs a written rationale in the commit.