Зірка на GitHub — найпоширеніший сигнал довіри у відкритому коді. Водночас це єдиний сигнал, за яким не стоїть жоден емітент. Зірки відкрито продають оптом, по кілька центів за штуку, разом із форками, спостерігачами та підписниками, і ніщо в самому числі не відрізняє куплене від заслуженого.
Кожне оцінювання, яке рахує зірки, успадковує цю проблему. Автентичність росту — та частина методології, яка з нею працює: поденна історія зірок і форків, зібрана для кожного звіту, читається на предмет росту, форми якого органічна увага не породжує, і там, де такий ріст підтверджено, вхідні дані, які можна купити, дисконтуються, а не приймаються на віру.
Результат відповідає на вузьке питання:
Історія популярності цього репозиторію виглядає як те, що сталося, чи як те, що було доставлено?
Він не відповідає ані на те, хто це зробив, ані на те, чи хтось за це платив. Кожна знахідка тут — твердження про час публічних подій і не більше.
Чому видає саме час
Увага, яку проєкт заробляє, приходить через людей, а люди нерівномірні. Запуск, головна сторінка Hacker News, доповідь на конференції чи згадка в розсилці дають сплеск, який різниться від години до години, який приносить форки разом із зірками, бо частина читачів відкриває код, і який згасає впродовж наступного тижня, доки посилання розходиться, а потім спиняється.
Доставлена увага не має жодної з цих властивостей. Вона надходить за розкладом, від облікових записів, які ніколи не заглядають до репозиторію, і закінчується тієї миті, коли замовлення виконано. Лічильник не бачить різниці. Історія бачить.
Що вимірюється
Спершу звіт шукає дні-сплески — дні, коли репозиторій отримав щонайменше 25 зірок і водночас щонайменше вдванадцятеро більше за власну медіанну швидкість активного дня. Суміжні дні-сплески об'єднуються в одне вікно.
Сам собою сплеск ніколи не є знахідкою. Справжні проєкти дають сплески, а методологія, яка вважала б кожен сплеск підозрілим, позначала б кожен успішний запуск. Вікно підтверджується лише тоді, коли його підкріплюють щонайменше два незалежні сигнали:
| Сигнал | Що він спостерігає |
|---|---|
| Концентрація зірок | На п'ять найактивніших днів припадає 80% або більше всіх зібраних зірок. За вимірюванням на 502 звичайних репозиторіях, медіанний має 6.9% своїх зірок у п'яти найактивніших днях, і жоден не сягнув 80%. Цей сигнал стосується всієї історії, а не окремого сплеску, тож підкріплює кожне вікно. |
| Рівний ритм | Упродовж трьох або більше днів денні прирости майже не різнилися. Аудиторія нерівномірна; графік поставки — ні. |
| Немає відгуку у форках | Співвідношення форків до зірок у вікні впало нижче чверті власного довгострокового співвідношення репозиторію — увага, яка ніколи не торкнулася коду. |
| Немає згасання | Сім днів після сплеску дали 5% від нього або менше. Справжні сплески мають хвіст; виконане замовлення обривається різко. |
| Немає жодного релізу | Проєкт ніколи не публікував жодного релізу. Свідомо слабкий сигнал: чимало легітимних проєктів не публікують нічого. Раніша форма цього сигналу вважала свідченням сплеск, що надійшов до першого релізу проєкту, і саме вона дала всі хибнопозитивні спрацювання в першому контрольному вимірюванні — опублікувати, привернути увагу, випустити реліз згодом — це звичайний хід речей для проєктів. |
Чотири стани
| Стан | Значення | Наслідок |
|---|---|---|
| Органічний | Історія узгоджується з органічним накопиченням. | немає |
| Не перевірено | Зібрана історія не дає відповіді на це питання. | немає |
| Аномальний | Одне підтверджене вікно. | зірки та форки дисконтовано на 40% |
| Різко аномальний | Два чи більше підтверджених вікон або одне з трьома сигналами. | зірки та форки дисконтовано на 70% |
Дисконт застосовується до компонентів зірок і форків популярності — двох вхідних даних, які постачальник може продати. Спостерігачі лишаються незмінними, бо вони не є частиною того, що засвідчує аномалія, і жодна інша категорія не змінюється взагалі. Популярність несе 7.2% загального індексу, тож арифметичний вплив свідомо малий. Продуктом є сама знахідка; коригування лише зупиняє звіт від твердження, у якому він має підстави сумніватися.
Коригування вгору не існує. Чиста історія не може підвищити оцінку — так само, як чистий юрисдикційний результат не може підвищити стан безпеки.
Що означає «не перевірено», а що ні
Репозиторій читається як не перевірено, коли для нього немає зібраної історії зірок, коли він має менш ніж 100 зірок або коли зібране вікно охоплює менш ніж 60 днів. Це не тягне за собою жодного штрафу.
Це поширений випадок, і це радше межа свідчень, ніж вирок. Збір історії обмежений — звіт захоплює недавнє вікно подій зі зірками та форками, а не все життя великого проєкту, — тож маніпуляція, старша за це вікно, тут просто невидима. Не перевірено означає, що питання лишилося без відповіді. Це ніколи не означає, що відповідь була чистою.
Як читати результат
- Знахідка стосується закономірності, а не людини. Зірки може купити конкурент, промоутер, попередній власник репозиторію або хтось, кого мейнтейнери ніколи не зустрічали. Ніщо в цьому оцінюванні не визначає, хто діяв, і ніщо в ньому не натякає, що це були мейнтейнери.
- Знахідка не робить програмне забезпечення поганим. Вона робить ненадійним одне зі свідчень про нього. Інженерні, врядувальні та безпекові свідчення в решті звіту лишаються незачепленими й стоять самі за себе.
- Відсутність знахідки не є сертифікатом. Повільна, розподілена в часі купівля впродовж місяців не дає сплеску, і це оцінювання її не побачить.
Як покращити значення
З репозиторієм не можна зробити нічого, що покращило б цей результат, — і в цьому суть: оцінювання читає історію, яка вже сталася. Проєкт, чий ріст був справжнім, уже читається як органічний.
Дивіться також: популярність · спільнота та впровадження · сигнали, а не гарантії