Лучший и самый очевидный способ оценить проект с открытым кодом – изучить его код, но это бывает трудоемко и не всегда приятно. Альтернатива, к которой кто-то приходит сам, естественным путем, а кто-то по совету – посмотреть, сколько человек отметили тот или иной проект звездой и выбрать один из тех, у которых звезд больше всего.

Взять, например, React.js и его 207 000 звезд против Angular с его жалкими 88 000. Мы можем заключить, что из этих двух фреймворков лучше React.js.Бен Эвад

Приведенная цитата шутливая (пусть даже из этих двух фронтенд-фреймворков React.js действительно лучше), но тем не менее судить о качестве проекта с открытым кодом по количеству звезд – неважная идея.

Сколько раз вы смотрели на проект с открытым кодом с праздной мыслью: а правда ли число заработанных звезд у него соответствует реальной ценности? Если ваш ответ «Ноль», то ладно, значит, вы как человек лучше, чем я. Если нет, то позвольте представить вам результаты некоторых моих экспериментов и исследований. Возможно, для вас это станет первым знакомством с весьма необычным рынком.

Закупка звезд на GitHub


Да, такая практика существует. Маркетинговый прием с покупкой лайков на Instagram уже хорошо известен, но и покупные звезды на GitHub – не менее реальное явление.



Но я не ограничусь сообщением, что люди в самом деле получают звезды на GitHub за деньги. Этого было бы как-то маловато, верно? Я пошел до конца и опробовал две платформы. Не буду приводить названия и ссылки, потому что не собираюсь продвигать подобные услуги. Мне показалось, что это будет занятным и очень познавательным опытом (мой кошелек, возможно, с этим не согласится). Итак, давайте погрузимся в глубины!

Премиальные звезды


Потерпите минутку, я понимаю, что вы сейчас думаете: «Какого черта, там еще и разные звезды есть?!» А вот и есть. Премиальные звезды – это те, что стоят дороже, выглядят более убедительно и, самое главное, имеют больше шансов удержаться в долгосрочной перспективе.

Так вот, я перешел в режим инкогнито, и начал охоту под своим псевдонимом – Boogeyman.



Двадцать пять звезд обошлись мне в двадцать евро – 0,8 евро за звезду. Это дорого (если не запрашивать налоговый вычет), но чуть позже я продемонстрирую вам их характеристики.

Мой заказ выполнялся шесть часов. Все задействованные аккаунты выглядят как настоящие: с фотографиями в профилях, списком компаний, на которые пользователь работал, парой репозиториев, и вкладом как минимум в один проект с открытым кодом. Плюс к тому у всех пользователей был стаж на GitHub не менее года.



Дешевые звезды



Когда видишь стойку с премиальным товаром, помни: полка с уцененным где-то неподалеку! – кто-то, вероятно, я

Есть варианты и подешевле, например, вот такой:



Этот пакет обошелся мне в 8,19 евро за сотню звезд, то есть по 0,08 евро за звезду. В квитанции видно, что номер моего заказа — 57189, так что от желающих явно отбоя нет.

В чем же разница между пакетами? Ну, прежде всего, в дешевом все аккаунты новенькие с иголочки – их создали уже после того, как я разместил заказ. Они не укомплектованы никакой личной информацией, репозиториями и вкладами. И спустя месяц от них и следа не осталось. Администрация GitHub их обнаружила и забанила.





Самое невероятное, что по этому поводу можно написать в поддержку платформы, и они бесплатно выполнят заказ еще раз.

Выявление звезд-фальшивок


Затем я задумался: существуют ли какие-то инструменты, вычисляющие репозитории, которые пользуются такими услугами. И открыл для себя Astronomer, программу, которая выявляет у проектов на GitHub звезды, полученные нечестным путем, от аккаунтов-ботов.

Работает она так: собирает данные обо всех пользователях, которые поставили репозиторию звезду, и рассчитывает вероятность того, что это реальные люди. При этом используется специальный «алгоритм доверия».

Уровень доверия рассчитывается с учетом целого ряда факторов:
  • Среднее число вкладов, которые надолго остаются в проектах, от оставляющих звезды
  • Среднее число приватных вкладов
  • Среднее число заведенных тикетов, открытых для общего просмотра
  • Среднее число коммитов с публично отображаемым авторством
  • Среднее число созданных pull request-ов, у которых публично отображается авторство
  • Среднее число открытых для общего просмотра инспекций кода
  • Средняя взвешенная оценка вклада (взвешенность достигается путем учета срока жизни вклада)
  • Каждый пятый процентиль, от 5 до 95, от взвешенной оценки вкладов
  • Средний возраст аккаунта – чем старше, тем надежнее

Соответственно, я прогнал три набора звезд через Astronomer, чтобы сравнить результаты.

Премиальные звезды:

Fetching contributions for 69 users up to year 2013
Building trust report...ok

Averages Score Trust
-------- ----- -----
Weighted contributions: 18268 B
Private contributions: 370 A
Created issues: 91 A
Commits authored: 259 C
Repositories: 41 A
Pull requests: 36 A
Code reviews: 6 C
Account age (days): 1619 B
5th percentile: 12 A
10th percentile: 16 C
15th percentile: 20 D
20th percentile: 20 E
25th percentile: 24 E
30th percentile: 24 E
35th percentile: 24 E
40th percentile: 28 E
45th percentile: 332 D
50th percentile: 1106 B
55th percentile: 1692 B
60th percentile: 2770 A
65th percentile: 6422 A
70th percentile: 10958 A
75th percentile: 15598 A
80th percentile: 26596 A
85th percentile: 34116 A
90th percentile: 69967 A
95th percentile: 85147 A
----------------------------------------------------------
Overall trust: B


Дешевые звезды:

Fetching contributions for 24 users up to year 2013
Building trust report...ok

Averages Score Trust
-------- ----- -----
Weighted contributions: 856 E
Private contributions: 21 E
Created issues: 3 E
Commits authored: 87 E
Repositories: 4 E
Pull requests: 3 E
Code reviews: 1 E
Account age (days): 36 E
5th percentile: 3 D
10th percentile: 3 E
15th percentile: 3 E
20th percentile: 3 E
25th percentile: 3 E
30th percentile: 3 E
35th percentile: 3 E
40th percentile: 3 E
45th percentile: 3 E
50th percentile: 3 E
55th percentile: 3 E
60th percentile: 3 E
65th percentile: 3 E
70th percentile: 3 E
75th percentile: 3 E
80th percentile: 4 E
85th percentile: 4 E
90th percentile: 4 E
95th percentile: 4 E
----------------------------------------------------------
Overall trust: E


Реальные звезды (контрольная группа):

Fetching contributions for 139 users up to year 2013
Building trust report...ok

Averages Score Trust
-------- ----- -----
Weighted contributions: 118821 A
Private contributions: 2407 A
Created issues: 72 A
Commits authored: 1300 A
Repositories: 74 A
Pull requests: 101 A
Code reviews: 69 A
Account age (days): 2538 A
5th percentile: 145 A
10th percentile: 711 A
15th percentile: 2726 A
20th percentile: 4144 A
25th percentile: 8535 A
30th percentile: 13650 A
35th percentile: 20728 A
40th percentile: 23322 A
45th percentile: 28244 A
50th percentile: 37636 A
55th percentile: 42536 A
60th percentile: 55776 A
65th percentile: 78956 A
70th percentile: 93676 A
75th percentile: 129164 A
80th percentile: 194463 A
85th percentile: 231380 A
90th percentile: 286798 A
95th percentile: 559934 A
----------------------------------------------------------
Overall trust: A


Жутковатая картина. Премиальные звезды получают неплохую оценку – B, а вот дешевые вытянули только на самый низкий балл – E. Кто знает, может быть, где-то есть суперпремиальный сервис по закупке звезд, который оценили бы на высший балл A?

Вынесенные уроки


Как книгу не судят по обложке, так и о проектах с открытым кодом не стоит делать выводы на основе того, сколько человек оставили им звезды. Как мы убедились в этой статье, есть вероятность, что звезды заработаны незаконным путем. Как и в любой другой социальной сети, здесь существуют фальшивые аккаунты и фальшивые лайки.

Вместо этого поинтересуйтесь у своих коллег или сообщества на Twitter, почему они считают, что тот или иной проект больше заслуживает внимания, чем прочие. Также можно начинать новые обсуждения или создавать тикеты на GitHub, чтобы люди могли поделиться опытом. Если этого недостаточно, есть вариант ознакомиться с кодом проекта. Хотя все мы понимаем, что этот метод не на каждый день, он требует затрат времени и сил.

Выбрать проект с открытым кодом хорошего уровня бывает непростой задачей. Однако есть некоторые ключевые факторы, которые стоит учитывать, когда принимаешь решение. Вся структура The Guild выстроена с прицелом на то, чтобы доводить до готовности долгосрочные проекты с открытым кодом, поэтому у нас по ходу дела выработалось представление о том, как выявлять хорошие проекты с открытым кодом исходя из их жизнеспособности в долгосрочной перспективе и обмена идеями между участниками.

Советуем обращать внимание на следующие вещи:

  1. Жизнеспособность на длинных отрезках времени. Ищите проекты, по которым видно, что участники вовлечены в непрерывную разработку или поддержку. Тут хорошо начинать с вкладки Contributors на странице GitHub – там отображается полная хроника работы над проектом. Скажем, над GraphQL Mesh и GraphQL Codegen ведется постоянная работа уже много лет. У Hive активность возрастает постепенно и неуклонно. У GraphQL Yoga можно проследить, как проект зародился, потом оказался заброшен, а потом пережил мощное возрождение, после того как The Guild занялись поддержкой вместо предыдущей команды. У проекта Nextra активность также значительно возросла, когда мы присоединились к работе по поддержке второй версии.
  2. Вовлеченность сообщества. Оцените, насколько активно ведется совместная работа у участников внутри проекта. Здесь можно взглянуть на вкладку с обсуждениями или график с динамикой сообщества.
  3. Качество кода. Оцените качество кодовой базы, включая читабельность, простоту поддержки и следование лучшим практикам.
  4. Готовность к отклику. Посмотрите, насколько оперативно те, кто поддерживает проект, реагируют на тикеты, pull request-ы, обратную связь от сообщества. В этом может помочь вкладка Pulse на GitHub.
  5. Популярность и репутация. Проверьте, какая репутация сложилась у проекта в сообществе. Сюда входят количество сделавших вклад, число звезд и положительные отзывы.

Следуя этим правилам, вы можете повысить вероятность того, что остановитесь на достойном проекте с открытым кодом. Команда The Guild также старается претворять эти принципы в жизнь в своей работе и создавать продукты, которые эффективны, жизнеспособны и прослужат долгое время.

На этом всё. А если вы собрали сколько-то денег для своего стартапа и не знаете, на что их потратить, лучше инвестируйте в качество продукта. Об этом вы точно не пожалеете.

Комментарии (5)


  1. N-Cube
    09.06.2023 08:52
    +12

    Не стоит априори считать ботами пользователей с нулевым вкладом - многие регистрируются только для того, чтобы иметь возможность создавать тикеты и получать поддержку.


    1. mitasov-ra
      09.06.2023 08:52

      На таких площадках как GH любая активность, в том числе комментарии и тикеты, расценивается как контрибьюшн.

      То есть аккаунт человека вообще без единой строки кода, но с тикетами, комментами, реакциями и тд инструмент из статьи думаю расценит всё же как настоящий.


      1. KvanTTT
        09.06.2023 08:52
        +3

        Тикеты - да, а комментарии не являются контрибьюшенами, на графе не отображаются.


  1. Thomas_Hanniball
    09.06.2023 08:52
    +6

    Как мы убедились в этой статье, есть вероятность, что звезды заработаны незаконным путем. Как и в любой другой социальной сети, здесь существуют фальшивые аккаунты и фальшивые лайки. Вместо этого поинтересуйтесь у своих коллег или сообщества на Twitter, почему они считают, что тот или иной проект больше заслуживает внимания, чем прочие.

    Какой смысл интересоваться у коллег или сообщества, если большинство из них так же ориентируются на количество звёзд.


    Взять, например, React.js и его 207 000 звезд против Angular с его жалкими 88 000. Мы можем заключить, что из этих двух фреймворков лучше React.js. – Бен Эвад

    Так оно и есть. React.js популярнее Angular. Но даже если вы будете использовать Angular, то ничего плохого не произойдёт. Это тоже популярный фреймворк, у которого большое комьюнити. Выбирая между отличным и хорошим продуктом, вы всегда будете в выигрыше не зависимо от того, какой их них был вами выбран.


    1. baldr
      09.06.2023 08:52
      +10

      вы всегда будете в выигрыше не зависимо от того, какой их них был вами выбран.

      До тех пор пока, случайно опечатавшись, не установите себе какой-нибудь Agulnar. У которого будет, может быть, и не 88к звезд, но тоже достаточно убедительное количество. И который с удовольствием установит вам пару нескучных троянов.