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



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

Репозиторий

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

Почему это репозиторий Github, а не общедоступный документ? Не имею представления. Возможно, EpicGames хотели упростить разработчикам обновление одного файла readme. Возможно, EpicGames наняла кого-то, кто знает, как реверсировать связанный список, но не знает, как управлять общедоступными репозиториями Github. Я честно не знаю.

Предыдущие запросы на включение

Для репозитория с файлом readme можно подумать, что коммитов не так много, и что это довольно упрощенно. Удивительно, но пулл-реквестов целых 22.

При ближайшем рассмотрении видно, что многие из этих запросов являются спамом.

Некоторые из них добавляют пустые файлы или удаляют существующие файлы. Довольно просто понять, что это такое.

Тогда есть тролли.

Итак, к этому моменту вы, вероятно, задаетесь вопросом о том же, что и я, а именно о том, как выглядят объединенные запросы на вытягивание, которые прошли проверку? Что ж, ни одного пул-реквеста, который был бы слит, не было, и история коммитов показывает это.

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

Давайте взглянем на запрос на вытягивание, которому сейчас посвящена эта статья.

Запрос на слияние

С самого начала, взглянув на заголовок пулл-реквеста, вы понимаете, что вас ждет дикая поездка. PR называется «Хорошо выглядит».

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

Идеально подходит для великолепной внешности, можно отправить как можно скорее @EpicGames/artv2-admin @EpicGames/developers @EpicTeamAdmin

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

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

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

@EpicTeamAdmin Проверьте запрос на вытягивание и слейте как можно скорее

Именно здесь я хотел бы немного отвлечься и выяснить, что именно потребует внесения изменений в README как можно скорее. Почему спешка?

Изменения

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

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

Итак, что рецензенты предоставили в качестве отзыва? Что-то конструктивное? Подумайте еще раз.

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

Комментарий-покалипсис

Помните, как я упоминал, что пользователи получают уведомление каждый раз, когда происходит изменение или комментарий? Что ж, в этом запросе на включение была беседа со 155 элементами.

Я предполагаю, что эти люди были не слишком довольны, когда проверяли свою электронную почту.

Это были полезные комментарии? Конечно, нет.

К концу дня участников было несколько сотен.

В конце концов, вечеринка должна была закончиться, а разговор с запросом на включение был заблокирован EpicGames как спам.

Итак, кто виноват?

Хотя вы можете обвинить разработчика, который сделал PR с целью заполнения резюме, или троллей, я считаю, что вина лежит на EpicGames, которая сделала теги доступными, чтобы люди могли рассылать спам сотнями электронных писем и Github, у которого должен быть более умный способ справиться с таким сценарием.

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

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

Последствия

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

Для тех, кто страдает от электронных писем, были комментарии относительно того, что можно сделать.

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

Заключительные комментарии

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

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

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

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