From:To:
11¶ # graphile-worker
22
33 **Что это.** Очередь задач на 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)».
44
55 **Возраст.** Репозиторий на GitHub заведён 1 марта 2019 года. Ведёт Benjie Gillam, он же — автор PostGraphile.
66
77 **Размер.** 2 400 звёзд, 124 форка на сентябрь 2026 — небольшой проект с одним основным автором.
8+¶ ## Привычки, описанные им самим
9+
10+ Отдельного CONTRIBUTING в репозитории нет: правила живут на сайте, в [website/docs/contributing.md](https://github.com/graphile/worker/blob/main/website/docs/contributing.md), а шаблоны PR и задач graphile-worker берёт из общего репозитория организации [graphile/.github](https://github.com/graphile/.github/blob/master/PULL_REQUEST_TEMPLATE.md). Записано немного, зато по делу.
11+
12+ **Прежде чем делать большое — поговорить:**
13+
14+ > 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!
15+
16+ *Мы любим правки от сообщества, но, пожалуйста: если задумали что-то большое, сначала поговорите с нами. Graphile Worker довольно упрям и ставит производительность выше многого другого, так что есть риск, что мы не захотим вашу функцию в ядре, а мы не хотим, чтобы вы потратили время зря.*
17+
18+ **Проект честно называет, чего мейнтейнер сам не проверяет,** и просит помощи именно там:
19+
20+ > 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.
21+
22+ *Некоторые ведут разработку в Docker Compose. Если это про вас, присылайте исправления для этой конфигурации: ведущий мейнтейнер ею не пользуется.*
823¶ ## Привычки, видные по переписке
924
1025 Документация живёт в комментариях рядом с кодом и описывает замеры, а не устройство. Отвергнутые варианты не удаляются, а остаются с надписью «пробовали, плохо». Цена решения честно написана в документации для пользователей: «выдернули шнур — задача ждёт четыре часа».
26+¶ ## Мелкие правила, по которым узнаётся свой
27+
28+ **Форматирование отдано машине.** Prettier с `trailingComma: "all"` и `proseWrap: "always"` — переносы строк в markdown-документации тоже правит форматер. ESLint требует сортировку импортов (`simple-import-sort`) и `import type` для типов. Перед отправкой — `yarn lint:fix`, и это правило одно для кода и для сайта с документацией.
29+
30+ **Чеклист PR** короткий и целиком про проверяемое:
31+
32+ > - [ ] My code matches the project's code style and `yarn lint:fix` passes.
33+ > - [ ] I've added tests for the new feature, and `yarn test` passes.
34+ > - [ ] I have detailed the new feature in the relevant documentation.
35+ > - [ ] I have added this feature to 'Pending' in the `RELEASE_NOTES.md` file (if one exists).
36+ > - [ ] If this is a breaking change I've explained why.
37+
38+ *Стиль и `yarn lint:fix`; тесты и `yarn test`; документация; запись в «Pending» файла `RELEASE_NOTES.md`; если изменение ломающее — объяснено почему.*
39+
40+ **Запись в release notes защищена скриптом:** `preversion` в `package.json` откажется выпускать версию, пока в `RELEASE_NOTES.md` остался раздел `### Pending` — «Cannot publish with 'Pending' in RELEASE_NOTES».
41+
42+ **Миграция базы — только вместе с дампом схемы:** «New database migrations must be accompanied by an updated db dump». Отдельная задача CI пересобирает дамп и падает, если он разошёлся с кодом.
43+
44+ **Метки задачам ставят шаблоны:** bug, feature, question, feedback; без шаблона задачу не завести. Как получить права коммитера — не записано.
45+¶ ## Чего ждать, если придёте со своей правкой
46+
47+ Всё ниже — из [website/docs/contributing.md](https://github.com/graphile/worker/blob/main/website/docs/contributing.md), шаблонов организации [graphile/.github](https://github.com/graphile/.github) и CI-конфига самого проекта, а не из наших догадок.
48+
49+ **Сроков ревью нигде не обещано.** Единственная цифра — в политике безопасности, и она про уязвимости, о которых просят писать приватно, на почту:
50+
51+ > …typically within 2 working days, and will discuss the future steps.
52+
53+ *…обычно в течение двух рабочих дней, и обсудит дальнейшие шаги.*
54+
55+ **CLA, DCO и подпись коммитов не упоминаются** ни в шаблоне, ни в документации. Ботов у репозитория нет, единственный workflow — `ci.yml`: тесты на Node 22 против Postgres 12–15, отдельный прогон с нестандартной схемой, линтер и проверка дампа базы.
56+
57+ **Незаконченное — только как черновик:**
58+
59+ > If this PR is work in progress, please open it as a "Draft PR".
60+
61+ *Если PR ещё в работе, откройте его как черновик.*
62+
63+ **Идея проходит фильтр «кто это будет делать».** Шаблон запроса функции спрашивает о вашем участии:
64+
65+ > - [ ] am interested in building this feature myself
66+ > - [ ] am interested in collaborating on building this feature
67+ > - [ ] am willing to help testing this feature before it's released
68+ > - [ ] am willing to write a test-driven test suite for this feature (before it exists)
69+
70+ *Готов сделать сам; готов делать вместе; готов тестировать до релиза; готов написать тесты заранее, до того как функция появится.*
71+
72+ **Отзыв могут закрыть без видимых действий** — и предупреждают об этом в самом шаблоне:
73+
74+ > …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.
75+
76+ *…задачи с отзывами иногда закрываются без видимых действий. Если у вас один конкретный вопрос — лучше сообщите об ошибке или задайте вопрос.*
1177¶ ## Кто в кадре
1278
1379 Люди, встреченные в наших разборах этого проекта. Черта называется только вместе с поступком — с датой и ссылкой. Ник — главный, имя — из профиля; нет имени в профиле — только ник.
1480
1581 ### Benjie — Benjie Gillam
1682
1783 **graphile-worker**, **PostGraphile**.
1884
1985 - 29.06.2022 — [коммит `Add a few strategies`](https://github.com/graphile/worker/blob/ad21f2a17bc5/src/sql/getJob.ts#L28-L52): сто строк без описания, вся документация — комментарием внутри, и не про устройство кода, а про то, что показали замеры;
2086 - там же — вариант с подписью «probably unsafe. Don't use it», оставленный в коде с предупреждением, и отвергнутый SQL с эпитафией «**presumably** due to the lack of lock/skip locked» — догадка помечена догадкой;
2187 - 14.11.2023 — [коммит `Go back to the old way of doing it`](https://github.com/graphile/worker/commit/e56613e94283): минус 267 строк. Своё же решение полуторагодичной давности отменено.
2288¶ ## Разборы, где встречается
2389
2490 - **«Четыре стратегии и один откат»** — четыре способа брать задачу из очереди, замеры в комментариях и настройка, не пережившая полутора лет.
2591
2692 ---
2793
28− *Карточка собрана 02.09.2026 из открытых источников: репозиторий и переписка в PR и задачах. Правила проекта (CONTRIBUTING и подобные) в карточку ещё не разобраны — раздел «Привычки, описанные им самим» появится, когда будут. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.*
94+ *Карточка собрана 02.09.2026 из открытых источников: репозиторий, документация проекта, переписка в PR и задачах. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.*