Jak działa ranking popularności motywów w oficjalnym repozytorium i dlaczego nie jest on miarodajny

Popularne motywy WordPress.org

W oficjalnym repozytorium motywów dla WordPressa znajduje się zakładka Popular, w której (jak nietrudno się domyślić) wyświetlana jest lista najpopularniejszych motywów. Kilka dni temu serwis WP Tavern poruszył temat kontrowersyjnego sposobu, w jaki autorzy darmowych motywów wykorzystują popularność motywów komercyjnych do „oszukiwania” algorytmu tworzenia tej listy. Sam mechanizm jest znany od dość dawna, ale do tej pory osobiście odbierałem go bardziej jako niedogodność dla twórców motywów komercyjnych, niż jako sposób na wypromowanie darmowego motywu umieszczonego w oficjalnym repozytorium.

Jak działa ranking popularności motywów?

Najważniejszym czynnikiem decydującym o pozycji motywu w rankingu popularności jest oczywiście liczba aktywnych instalacji (nie pobrań). Liczba ta jest określana na podstawie wywołań API służącego do sprawdzania dostępności aktualizacji. WordPress co 12 godzin przesyła do repozytorium listę zainstalowanych na stronie motywów, a w odpowiedzi otrzymuje informację o dostępnych uaktualnieniach. To dobra metoda, bo pozwala jednoznacznie określić liczbę stron korzystających z danego motywu (aczkolwiek – o ile wiem – nie uwzględnia tego, czy dany motyw jest aktywowany).

Problemem jest jednak sposób, w jaki identyfikowane są motywy. Unikalnym identyfikatorem, za pomocą którego API repozytorium rozpoznaje motywy, jest ich URL (slug) w repozytorium. Motyw jest instalowany w katalogu, którego nazwa jest zgodna z tym URLem. WordPress wysyłając do API informacje o zainstalowanych motywach korzysta właśnie z nazw katalogów, w których znajdują się motywy. Tak więc jeśli stworzony samodzielnie motyw umieścimy na przykład w katalogu o nazwie twentysixteen, to API WordPressa zidentyfikuje go jako motyw Twenty Sixteen.

Na marginesie: należy unikać takich sytuacji, ponieważ jeśli nasz motyw będzie miał wersję 1.0, a motyw o takiej samej nazwie znajdujący się w repozytorium będzie miał wersję wyższą (na przykład 1.2), to w panelu WordPressa zostanie wyświetlona informacja o dostępnej aktualizacji, po wykonaniu której stracimy bezpowrotnie nasz własny motyw. Więcej informacji na ten temat znaleźć można we wpisie Jak przebiega aktualizacja wtyczki lub szablonu w WordPressie.

Przy okazji wspomnianej „afery” Samuel Wood (bardziej znany jako Otto) nagrał krótki film, w którym tłumaczy jak tworzony jest ranking popularności motywów, a jednocześnie próbuje nas przekonać, że problem wcale nie jest aż tak poważny.

Warto dodać, że repozytorium wtyczek działa w analogiczny sposób.

Jak autorzy motywów i wtyczek mogą wykorzystywać działanie rankingu na własną korzyść?

Serwis WP Tavern opisał możliwe „oszukiwanie” rankingu na przykładzie motywu Vertex, który w niespełna trzy tygodnie po pojawieniu się w repozytorium ma już ponad 10 tysięcy aktywnych instalacji. Ja jednak znalazłem lepszy przykład, którym posłużę się do wyjaśnienia działania mechanizmu.

Motyw Total, który w chwili pisania tego wpisu znajduje się na drugiej pozycji w rankingu popularności, trafił do oficjalnego repozytorium motywów 4 października i po 26 dniach ma już ponad 30 tysięcy aktywnych instalacji, mimo że został pobrany niespełna 12 tysięcy razy. Jak to możliwe? Otóż w serwisie ThemeForest istnieje motyw o identycznej nazwie, który domyślnie instaluje się w katalogu o nazwie total i który znalazł już grubo ponad 19 tysięcy klientów. WordPress cały czas wysyłał do API informację o motywie o identyfikatorze total, ale ponieważ takiego motywu w oficjalnym repozytorium nie było, ignorował ją. Gdy pojawił się motyw o takim identyfikatorze, dane spływające z wszystkich instalacji motywu Total pochodzącego z ThemeForest zaczęły podnosić statystyki motywu Total znajdującego się w oficjalnym repozytorium. Efekt? Nagły duży wzrost liczby aktywnych instalacji darmowego motywu.

Takich przykładów w oficjalnym repozytorium motywów jest znacznie więcej. Nie twierdzę, że autorzy darmowych motywów robią to z premedytacją – na pewno nie było tak w przypadku wspomnianego motywu Vertex, którego autor zaproponował nawet zmianę nazwy motywu, co ekipa odpowiedzialna za weryfikację motywów uznała za niepotrzebne. Jest to jednak stosunkowo prosty sposób na szybkie trafienie do rankingu popularnych motywów, co nie jest bez znaczenia w sytuacji, w której większość z autorów motywów oferuje płatne wersje swoich darmowych produktów.

Co to obchodzi zwykłych użytkowników?

Osobiście uważam, że wybierając motyw nie powinno się brać pod uwagę rankingów popularności – nie chcemy przecież, aby nasza strona wyglądała podobnie do kilkudziesięciu tysięcy innych stron opartych na tym samym motywie. Nie zmienia to jednak faktu, że mnóstwo osób traktuje ranking popularności jako ułatwienie w żmudnym zadaniu znalezienia dobrego motywu wśród tysięcy dostępnych w repozytorium produktów. I dla takich użytkowników ten wpis powinien być ostrzeżeniem, aby nie ufać bezkrytycznie takim rankingom, nawet jeśli są tworzone przez zaufane źródło, jakim jest oficjalne repozytorium motywów dla WordPressa.

Wpis ten należy traktować bardziej jako ciekawostkę. Temat mnie zainteresował, uznałem więc, że być może zainteresuje również moich czytelników. Jestem daleki od próby robienia z tego afery, bo nie znamy pobudek, jakimi kierowali się autorzy – przy tak dużej liczbie firm oferujących motywy komercyjne trudno uchronić się od przypadkowej zbieżności nazw. Nie zmienia to jednak faktu, że jest to łatwy sposób na „obejście systemu”.

Bezpośredni link

  • Imho skórki załączone do instalacji powinny być wyłączone z rankingu, to samo w sobie jest nadużycie mimo, że pochodzą one od samych twórców.

    Tak poza tym to samo repo zawsze wydawało mi się najgorszym miejscem do szukania skórek z jakiegoś powodu.Już pomijając w ogóle brak integracji designu w podglądzie, jeśli skórka wymaga instalacji dema, to po prostu jest bardzo mało „oryginalnych” projektów, WordPress pod tym względem od jakiegoś czasu kuleje według mnie. Repo do inspiracji to już w ogóle się nie nadaje.

    Swoją drogą ciekawa rzecz, jest to mało praktyczne rozwiązanie budowania rankingu ale znów WordPress nigdy za specjalnie nie słynął z praktycznych rozwiązań odnośnie obsługi repo, które już od dawna wymaga gruntownego przebudowania.

    • „Imho skórki załączone do instalacji powinny być wyłączone z rankingu, to samo w sobie jest nadużycie mimo, że pochodzą one od samych twórców.”

      Zgadzam się. Podobnie należałoby zrobić z wtyczką Akismet.

  • A wystarczyło by, API WP do repo nie wysyłało katalogu skórki, ale jakąś sumę kontrolną z pół Theme Name, Theme URI, Author, Author URI. Wtedy seanse na „sobowtóra” były by minimalne.

    Można np wartość tych pól przepisać do Asci, potem to skleić w jeden ciąg.