Определитель: кто встречался в коммитсах
Люди и проекты из разборов — по поступкам, датам и ссылкам. Как определитель птиц: не оценивает, а помогает узнать, кого встретил
miki/opredelitel-kto-vstrechalsya-v-kommitsah · v5
Люди и проекты из разборов — по поступкам, датам и ссылкам. Как определитель птиц: не оценивает, а помогает узнать, кого встретил
Не оценивает, а помогает узнать, кого встретил. Карточки копятся из разборов-коммитсов: каждый раз, когда человек появляется в кадре, к нему добавляется строка.
Правила, по которым это собрано:
- Черта называется только вместе с поступком. Не «упорный», а «вернулся через два месяца после того, как задачу закрыли». С датой и ссылкой.
- Это наблюдение, а не диагноз. Что человек сделал и написал, а не какой он. «Похоже, выгорел» — запрещено.
- Ник — главный, имя — уточнение. Имя проверено по профилю, а не транслитерировано из логина. Нет имени в профиле — только ник.
- Только профессиональный след. Коммиты, PR, переписка, документация. Город, работодатель, личная жизнь — не наша плоскость, даже когда публичны.
- Фотографий и аватарок здесь нет и не будет: цитировать текст и публиковать лицо — разные права.
- Просьба убрать выполняется без спора. Мягкая ступень: имя гасится ником, разбор остаётся. Напишите — уберём.
Собрано по состоянию на 01.09.2026, из девяти разборов.
Люди
curl, пишет его с 1998 года.
В PR #8805 — 50 комментариев из 283:
- 06.05.2022 — ответил на следующий день после открытия;
- 10.07.2022 — закрыл по неактивности со словами «Feel free to reopen when things move again»;
- 27.07.2022 — трижды за один день сказал «нет», ни разу не смягчив формулировку;
- 07.08.2022 — сам предложил
--ipfs-gateway, решение, снявшее его же возражение; - 23.09.2023 — сам влил работу, которую полтора года не пускал.
Закрывая, приглашает вернуться — дверь закрыта, но не заперта. За полтора года несогласия ни одной грубости.
Разбор: «Две даты одного коммита».
curl, ffmpeg.
- 27.03.2022 — написал коммит поддержки
ipfs://иipns://, 21 файл; - 05.05.2022 — открыл PR;
- 17.07.2022 — вернулся после того, как PR закрыли по неактивности, с извинением;
- 26.07.2022 — просил открыть свой же PR обратно: «I apparently don't have the permission for it»;
- 27.07.2022 — переписал разбор адресов целиком после замечания;
- 23.09.2023 — коммит влит. Восемнадцать месяцев между датой авторства и датой вливания.
82 комментария из 283 — больше, чем у всех остальных вместе взятых. Ту же идею параллельно вёл в ffmpeg.
Protocol Labs / IPFS.
29.07.2022, один комментарий, переломивший спор. Шлюз его собственной команды предлагали вшить в curl по умолчанию — он пришёл и сказал, что так делать не надо:
hardcoding a specific gateway in a low level tool like
curlmakes me uncomfortable too
Принёс два готовых варианта отказа, в которых ошибка учит пользователя поднять свой шлюз.
Свидетельство против собственного интереса — самое редкое, что встречается в чужих обсуждениях.
В ветке curl — посторонний.
28.07.2022, в самом разгаре спора, зашёл со словами «A wild idea» и предложил компромисс: падать с ошибкой, но показывать человеку, что можно включить самому. Приняли в итоге именно эту линию.
curl. 25.09.2023, через два дня после вливания IPFS, починил путь к логам в его тестах. Тот, кто приходит подметать после праздника.
Cal.com, сооснователь.
- 26.01.2023 — «can you try again? we made a hotfix». В тот же день выяснилось, что хотфикс не помог;
- 22.05.2023 — назвал цену вслух: «this is a really low hanging plus hard to fix issue».
Одна фраза, в которой честно умещается весь класс задач: снаружи мелочь, внутри модель.
Cal.com, в команде.
21.12.2022 — PR #6137 «Add 23:59 as a valid availability select option»: открыт в 05:05, влит в 16:13 того же дня. Одиннадцать часов от идеи до прода. Закрыл жалобу на потерянные четырнадцать минут — и не закрыл ту, что была про модель.
Репортёр, Cal.com. Работает по ночам — отсюда и обе его задачи.
- 18.11.2022 — #5587: в списке часов промежуток 23:46–23:59 «gets totally wasted»;
- 07.01.2023 — #6323: вернулся с той же болезнью и сам приложил ссылку на починку, которая ему не помогла.
Пострадавший, сопоставивший обе половины раньше всех.
Cal.com. 08.12.2022 — #5929: показал ту же болезнь с другой стороны: смена с 20:00 до 03:00 записывается двумя строками с дырой посредине.
graphile-worker, PostGraphile.
- 29.06.2022 — коммит
Add a few strategies: сто строк без описания, вся документация — комментарием внутри, и не про устройство кода, а про то, что показали замеры; - там же — вариант с подписью «probably unsafe. Don't use it», оставленный в коде с предупреждением, и отвергнутый SQL с эпитафией «presumably due to the lack of lock/skip locked» — догадка помечена догадкой;
- 14.11.2023 — коммит
Go back to the old way of doing it: минус 267 строк. Своё же решение полуторагодичной давности отменено.
Saleor, мейнтейнер.
15.02.2023 — завела #12040 на свой же движок: скидка округляется вниз, и покупатель платит на копейку больше. Починили за два дня. Заметил не покупатель, а свой же разработчик.
Saleor. 20.07.2021 — #7663: объяснил, что в Бангладеш дробную сумму курьеру заплатить нечем — таких монет нет в обращении. Честно написал: «I don't have any» — решения у меня нет.
Saleor. 05.07.2024 — #16273: поставила ноль в настройку с говорящим именем и получила неработающую корзину. Её вопрос «то есть мне нельзя?» остался без ответа.
Better Auth. 17.11.2025 — #6035: описал не только поведение, но и расхождение с документацией: «документация обещает 10 запросов в сутки, а на самом деле сброс через сутки после последней попытки». Жалоба на обещание, а не только на код.
Better Auth. Август 2026 — PR #10747: вторая попытка починить то, что не влилось с марта. Прямо написал, что заменяет предыдущий PR, и что требуется миграция схемы.
Medusa. Август 2026 — PR #16347: блокировка счёта от двойного списания в плагине лояльности.
Medusa, имени в профиле нет. 03.08.2026 — #16292: нашёл, что повтор списания после сбоя провайдера шлёт другой ключ идемпотентности. Отметил галочку «хочу починить сам».
Medusa. 13.02.2026 — #14757: «корзина уже оформляется другим запросом». Отметил, что похожие сообщения раньше закрывали без решения. Задачу закрыли в тот же день.
ERPNext, один из основных разработчиков.
11.08.2026 — PR #57980, первая фраза описания: «found while auditing every SLE/Bin write path». Не починил очередной случай, а обошёл все места записи.
В том же PR удалил мёртвую функцию, которую никто не вызывает, с обоснованием «would only invite accidental resurrection as a second Bin write path», и переименовал update_qty в update_qty_from_sle — чтобы имя само говорило, откуда берётся число.
ERPNext.
- 05.07.2026 — закрыл гонки lock-then-read в подборке и резерве товара;
- 16.07.2026 — PR #57202: показал, что правильность держалась на побочном свойстве MariaDB и ломалась на Postgres. Отдельной строкой в описании: «MariaDB code paths are byte-identical» — починил чужую базу, не тронув свою.
ERPNext. 20.12.2021 — починил остаток на движениях задним числом. Первый из пятерых, кто подошǑл к этой трещине.
ERPNext. 04.07.2022 — починила ту же трещину с другой стороны: не прошлое портит число, а пересчёт стоимости портит будущие остатки. Полтора года спустя после первого.
ERPNext, со стороны пользователя, а не сопровождения. 25.08.2026 — PR #58362: удалили все движения, а число осталось. Закрыл последний известный случай пятилетней цепочки.
CybroAddons (Odoo-модуль auto_database_backup), со стороны.
18.06.2026 — issue #421: не «у меня не работает», а разбор на две страницы: два бага, замеры с боевого сервера (17 дней молчаливых отказов, 90 ГБ осиротевших файлов) и готовый PR. Подписал: «Reported and fixed by NIQERA».
Спустя два с половиной месяца ему не ответили ни разу.
CybroAddons. 15.07.2026 — коммит «[FIX] Bug Fixed» в тот же файл, о котором шёл отчёт, но про другое: в release notes — «Fixed the issue while generating Nextcloud backup».
CybroAddons. 20.07.2026 — рефакторинг на 35 файлов, внутри которого тихо появляется values['generated_exception'] = False — первый баг из отчёта закрыт, вместе с тестом. В задаче об этом не сказано.
Vercel AI SDK, ведёт его разработку.
В #309, открытом два года:
- 12.07.2024 — пришёл через год с ответом «the AI SDK functions support a
abortSignaloption» — верным и не про то, о чём спрашивали; - 17.09.2024 — на предложение xl0 ответил в тот же день: объяснил, почему предложенная форма плоха («because of typesafety»), и тут же предложил свою: «I would prefer something like
onAbort— would that work for you?»; - 18.07.2025 — сам принёс PR #7394 с
onAbort, закрыв и #309, и #6699.
Спроектировал решение за один день и выпускал его десять месяцев.
Vercel AI SDK. 10.07.2023 — #309: спросил не про удобство, а про деньги: «I want to know how many tokens are generated when the user cancels the stream». Задача прожила два года и восемь дней.
Vercel AI SDK. 03.08.2024 — через три недели после ответа мейнтейнера переспросил: «It is not at all clear to me how I would go about implementing it». Переспрос, показавший, что ответили на соседний вопрос.
Vercel AI SDK. 17.09.2024 — предложил конкретное устройство («abortSignal должен вызывать onFinish»). Предложение отклонили, но именно оно сдвинуло задачу с мёртвой точки.
Люди, приходившие по одному с одним и тем же за два года: lassegit (Lasse, 31.08.2023 — «I need a callback to be able to track token usage»), GorvGoyl (Gourav Goyal, 18.10.2023 — «what are some current workarounds till the team fixes the issue?»), yvngjordi (Jordan, 20.01.2024 — «guess Vercel SDK is just limited»), winddpan (12.03.2024 — «hope Vercel can solve it»), hassanbazzi (25.07.2023 — «this is very important»).
Двадцать четыре комментария, и почти каждый — про учёт расхода.
Проекты
У проекта тоже есть повадки: как принимает чужаков, что делает с неудобными просьбами, пишет ли в коде, почему решил так. Подробные карточки — отдельными списками.
Спорит открыто и отказ объясняет абзацами, а не ярлыком. Закрывает по неактивности — с приглашением вернуться. Требует документацию и тесты раньше, чем судит о коде. Хранит авторские даты через десятки ребейзов. За полтора года несогласия в ветке #8805 — ни одной грубости.
Документация живёт в комментариях рядом с кодом и описывает замеры, а не устройство. Отвергнутые варианты не удаляются, а остаются с надписью «пробовали, плохо». Цена решения честно написана в документации для пользователей: «выдернули шнур — задача ждёт четыре часа».
Отвечает быстро и симптом чинит за часы (PR про 23:59 — одиннадцать часов от открытия до вливания). Задачу же, которая требует поменять модель, держит десять месяцев и закрывает со статусом not planned. При этом цену называет вслух — «low hanging plus hard to fix».
Последователен до жёсткости: округление задаёт валюта, а не магазин. Три человека за три года просили одного и того же и получили один ответ; последняя задача закрыта not planned через три месяца тишины. При этом свои же ошибки находит сам и чинит за два дня.
Чинит быстро и много: одну строку правили трижды за три дня разные люди. Задачи пользователей при этом закрывает в тот же день со статусом not planned — и автор одной из таких задач заметил, что похожие закрывали так же.
Правку, требующую миграции у тысяч установок, держит открытой девять месяцев и две попытки. Осторожность объяснена в самом PR: новое поле — это миграция у каждого.
Чинит случай, пока случай виден, и переходит к устройству, когда случаев набирается много: между первой точечной правкой (2021) и решением «свести все записи в одну точку» (2026) — пять лет и пятеро людей.
Правки под чужую базу делает так, чтобы не тронуть свою: «MariaDB code paths are byte-identical». Мёртвый код удаляет профилактически — не за то, что мешает, а за то, что может воскреснуть второй дверью. Имена функций правит так, чтобы они говорили, откуда берётся число.
Сотни модулей в одном репозитории и поток правок по всем сразу. Сообщения коммитов однотипные и неинформативные («[FIX] Bug Fixed»), что именно починили — в release notes.
Внешние отчёты попадают в тот же поток наравне со всем: половина двухстраничного разбора была тихо закрыта внутри рефакторинга, вторая жива, автору не ответили.
Отвечает по существу и проектное решение согласовывает за один день — а выпускает его через десять месяцев. Между вопросом и ответом в #309 — два года и восемь дней.
Цена осторожности названа устройством: новый обратный вызов в библиотеке, на которую опираются десятки тысяч, — это изменение контракта, а не добавленная функция.
Related lists
Карточка вида: чем живёт, как принимает чужаков, кто в нём работает. Наблюдения по коду, переписке и тому, что проект пишет о себе сам
Найти в открытом проекте настоящую историю поломки, восстановить ход мысли по написанному и закончить проверкой своего кода
comlink-python: проверки на отказ стучались в адрес, который сервер не защищает, — и пять месяцев скрывали настоящую ошибку подписи
Better Auth: ограничение частоты считалось от последнего запроса, включая отклонённые, — и разблокировка не наступала никогда
Saleor: три человека за три года просят денег без копеек, потому что таких монет нет в обращении
graphile-worker: очередь на Postgres, замеры в комментариях и настройка, не пережившая полутора лет
