graphile-worker: проект и люди
Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам
miki/graphile-worker-proekt-i-lyudi · v2
Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам
Что это. Очередь задач на Node.js поверх PostgreSQL: задачи лежат в таблице, воркеры берут их запросом. Сам проект описывает себя так: «High performance Node.js/PostgreSQL job queue (also suitable for getting jobs generated by PostgreSQL triggers/functions out into a different work queue)».
Возраст. Репозиторий на GitHub заведён 1 марта 2019 года. Ведёт Benjie Gillam, он же — автор PostGraphile.
Размер. 2 400 звёзд, 124 форка на сентябрь 2026 — небольшой проект с одним основным автором.
Отдельного CONTRIBUTING в репозитории нет: правила живут на сайте, в website/docs/contributing.md, а шаблоны PR и задач graphile-worker берёт из общего репозитория организации graphile/.github. Записано немного, зато по делу.
Прежде чем делать большое — поговорить:
We love contributions from the community; but please: if you are planning to do something big, talk to us first. Graphile Worker is quite opinionated and prioritizes performance over many other things, so there is a risk that we may not want your feature in core, and we do not want you to waste your time!
Мы любим правки от сообщества, но, пожалуйста: если задумали что-то большое, сначала поговорите с нами. Graphile Worker довольно упрям и ставит производительность выше многого другого, так что есть риск, что мы не захотим вашу функцию в ядре, а мы не хотим, чтобы вы потратили время зря.
Проект честно называет, чего мейнтейнер сам не проверяет, и просит помощи именно там:
Some people run their Graphile Worker development environments in Docker Compose. If this is you, please contribute back fixes to the setup, because our lead maintainer does not use it.
Некоторые ведут разработку в Docker Compose. Если это про вас, присылайте исправления для этой конфигурации: ведущий мейнтейнер ею не пользуется.
Документация живёт в комментариях рядом с кодом и описывает замеры, а не устройство. Отвергнутые варианты не удаляются, а остаются с надписью «пробовали, плохо». Цена решения честно написана в документации для пользователей: «выдернули шнур — задача ждёт четыре часа».
Форматирование отдано машине. Prettier с trailingComma: "all" и proseWrap: "always" — переносы строк в markdown-документации тоже правит форматер. ESLint требует сортировку импортов (simple-import-sort) и import type для типов. Перед отправкой — yarn lint:fix, и это правило одно для кода и для сайта с документацией.
Чеклист PR короткий и целиком про проверяемое:
- My code matches the project's code style and
yarn lint:fixpasses.- I've added tests for the new feature, and
yarn testpasses.- I have detailed the new feature in the relevant documentation.
- I have added this feature to 'Pending' in the
RELEASE_NOTES.mdfile (if one exists).- If this is a breaking change I've explained why.
Стиль и yarn lint:fix; тесты и yarn test; документация; запись в «Pending» файла RELEASE_NOTES.md; если изменение ломающее — объяснено почему.
Запись в release notes защищена скриптом: preversion в package.json откажется выпускать версию, пока в RELEASE_NOTES.md остался раздел ### Pending — «Cannot publish with 'Pending' in RELEASE_NOTES».
Миграция базы — только вместе с дампом схемы: «New database migrations must be accompanied by an updated db dump». Отдельная задача CI пересобирает дамп и падает, если он разошёлся с кодом.
Метки задачам ставят шаблоны: bug, feature, question, feedback; без шаблона задачу не завести. Как получить права коммитера — не записано.
Всё ниже — из website/docs/contributing.md, шаблонов организации graphile/.github и CI-конфига самого проекта, а не из наших догадок.
Сроков ревью нигде не обещано. Единственная цифра — в политике безопасности, и она про уязвимости, о которых просят писать приватно, на почту:
…typically within 2 working days, and will discuss the future steps.
…обычно в течение двух рабочих дней, и обсудит дальнейшие шаги.
CLA, DCO и подпись коммитов не упоминаются ни в шаблоне, ни в документации. Ботов у репозитория нет, единственный workflow — ci.yml: тесты на Node 22 против Postgres 12–15, отдельный прогон с нестандартной схемой, линтер и проверка дампа базы.
Незаконченное — только как черновик:
If this PR is work in progress, please open it as a "Draft PR".
Если PR ещё в работе, откройте его как черновик.
Идея проходит фильтр «кто это будет делать». Шаблон запроса функции спрашивает о вашем участии:
- am interested in building this feature myself
- am interested in collaborating on building this feature
- am willing to help testing this feature before it's released
- am willing to write a test-driven test suite for this feature (before it exists)
Готов сделать сам; готов делать вместе; готов тестировать до релиза; готов написать тесты заранее, до того как функция появится.
Отзыв могут закрыть без видимых действий — и предупреждают об этом в самом шаблоне:
…feedback issues can sometimes be closed without visible action. If your issue is a single actionable topic please report a bug or ask a question instead.
…задачи с отзывами иногда закрываются без видимых действий. Если у вас один конкретный вопрос — лучше сообщите об ошибке или задайте вопрос.
Люди, встреченные в наших разборах этого проекта. Черта называется только вместе с поступком — с датой и ссылкой. Ник — главный, имя — из профиля; нет имени в профиле — только ник.
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 строк. Своё же решение полуторагодичной давности отменено.
- «Четыре стратегии и один откат» — четыре способа брать задачу из очереди, замеры в комментариях и настройка, не пережившая полутора лет.
Карточка собрана 02.09.2026 из открытых источников: репозиторий, документация проекта, переписка в PR и задачах. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.
Related lists
graphile-worker: очередь на Postgres, замеры в комментариях и настройка, не пережившая полутора лет
Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам
Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам
Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам
Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам
Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам
