How ranking works

Read from the constants that do the ranking, so it cannot fall behind the code.

The formula

FactorWeightWhat 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:

TierLooks likeMultiplierWhy
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.
absentno 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.