Skip to content

Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам

v2 0 stars 0 forks 0 watchers 1 branch 0 runs Public
Добавлены разделы по правилам проекта: описанные им самим, мелкие правила, чего ждатьv2
Jest

Что это. Инструмент для тестов на JavaScript. Сам проект описывает себя так: «Delightful JavaScript Testing».

Возраст. Репозиторий на GitHub заведён 10 декабря 2013 года; с 2022 года проект под OpenJS Foundation, репозиторий — jestjs/jest.

Размер. 45 500 звёзд, 6 700 форков на сентябрь 2026.

Привычки, описанные им самим

Правила Jest лежат в CONTRIBUTING.md в корне репозитория, устройство власти — в коротком GOVERNANCE.md. Первый в основном про сборку и тесты, но несколько абзацев там о том, как проект живёт.

Ядро и посторонние идут одной дорогой:

Both core team members and external contributors send pull requests which go through the same review process.

И участники основной команды, и внешние контрибьюторы присылают pull request, и те проходят одинаковое ревью.

Ветка main честно названа небезопасной:

We will do our best to keep main in good shape, with tests passing at all times. But in order to move fast, we will make API changes that your application might not be compatible with.

Мы постараемся держать main в порядке, чтобы тесты всегда проходили. Но ради скорости будем менять API так, что ваше приложение может оказаться несовместимым.

Мейнтейнер в GOVERNANCE.md записан один, и путь к этой роли — через количество и качество работы:

Promoting contributors to maintainers is done by a maintainer after a significant number of high-quality PRs.

Контрибьютора повышает до мейнтейнера мейнтейнер — после значительного числа качественных PR.

Привычки, видные по переписке

На вопрос отвечают по существу и с чужим package.json в руках; просят воспроизведение и разбирают его. Но саму задачу ведёт робот: тридцать дней тишины — метка «протухла», ещё тридцать — закрытие, ещё месяц — блокировка обсуждения с припиской, что трекер не форум поддержки. Задачу закрыли за три месяца до того, как приехала правка.

Мелкие правила, по которым узнаётся свой

Формата коммитов у Jest нет — ни в CONTRIBUTING, ни в конфигах репозитория такого правила не записано. Зато записан стиль кода, и последний пункт списка написан сокращениями:

  • 2 spaces for indentation (no tabs).
  • 80 character line length is strongly preferred. …
  • Avd abbr wrds.

Два пробела на отступ, без табов. 80 символов в строке очень желательно. … Избегайте сокращённых слов.

Changelog пишет автор правки, а проверяет машина:

All changes that add a feature to or fix a bug in any of Jest's packages require a changelog entry containing the names of the packages affected, a description of the change, and the number of and link to the pull request.

Любое изменение, добавляющее возможность или чинящее ошибку в любом пакете Jest, требует записи в changelog: затронутые пакеты, описание, номер PR и ссылка на него.

Механика — в .github/workflows/require-changelog.yml: если PR трогает packages/, бот вешает метку require-changelog, а check-changelog.yml проверяет, что в разделе ## main файла CHANGELOG.md есть ссылка именно на этот PR.

Шаблон PR — два обязательных поля: Summary (какую проблему решаем) и Test plan (точные команды и их вывод). Линтер — yarn lint на ESLint, тесты — yarn jest, yarn test запускает оба.

Чего ждать, если придёте со своей правкой

Всё ниже — из CONTRIBUTING.md, шаблонов задач и workflow-файлов в .github/ самого проекта.

Сначала CLA, и проведёт вас бот:

In order to accept your pull request, we need you to submit a CLA. You only need to do this once… If you are submitting a pull request for the first time, a bot will verify and guide you on how to sign it.

Чтобы принять ваш PR, нам нужно, чтобы вы подписали CLA. Это делается один раз… Если присылаете PR впервые, бот проверит и подскажет, как подписать.

Сроков ревью не обещают, но срок жизни без ответа известен. По close-stale.yml PR без активности 90 дней получает метку stale и предупреждение:

This PR is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 30 days.

Этот PR устарел: он открыт 90 дней без активности. Снимите метку или напишите комментарий, иначе он будет закрыт через 30 дней.

Черновики и PR с меткой Pinned исключены. Закрытые задачи и PR через 30 дней блокируются для комментариев (lock.yml).

Баг без воспроизведения закроют, вопрос — тоже. Задачи без шаблона отключены (blank_issues_enabled: false), а шаблон бага предупреждает:

Bug reports without a minimal reproduction will be rejected.

Отчёты об ошибках без минимального воспроизведения будут отклонены.

Метка Needs Reproduction закрывает задачу автоматически, метка Question — тоже:

The issue tracker is not a help forum.

Трекер задач — не форум помощи.

Не всякая идея годится в ядро. Шаблон предложения заранее перечисляет, что обычно не берут:

Common proposals that do not typically make it to core:

  • New matchers…
  • Changes to the default reporter…
  • Changes to node/jsdom test environments…

Что обычно не попадает в ядро: новые матчеры, изменения стандартного репортера, изменения тестовых окружений node/jsdom.

Кто в кадре

Люди, встреченные в наших разборах этого проекта. Черта называется только вместе с поступком — с датой и ссылкой. Ник — главный, имя — из профиля; нет имени в профиле — только ник.

mrazauskas — Tom Mrazauskas

Три сотни влитых PR в Jest.

felipedeboni — Felipe K. De Boni

28.02.2023 — jest#13967: открыл задачу, с которой началась история, и сразу перечислил, что уже пробовал.

TxHawks — Jonathan Pollak

01–02.04.2023 — сказал, что обход с заглушкой у него не работает, и на просьбу дать пример принёс целый репозиторий с воспроизведением.

timfee — Tim Feeley

14.03.2023 — первый предложил обход: подменить server-only пустым модулем. Обход, который работал не у всех и прятал причину.

Разборы, где встречается
  • «Пакет, который ломается нарочно»server-only падает в тестах; мейнтейнер разбирает чужой package.json, робот закрывает задачу за три месяца до починки.

Карточка собрана 02.09.2026 из открытых источников: репозиторий, документация проекта, переписка в PR и задачах. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.

Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам

v2Public 0 0
updated Sep 2, 2026

Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам

v2Public 0 0
updated Sep 2, 2026

Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам

v2Public 0 0
updated Sep 2, 2026

Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам

v2Public 0 0
updated Sep 2, 2026

Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам

v2Public 0 0
updated Sep 2, 2026

Как проект живёт и принимает чужие правки, и кто в нём встречался в разборах — по поступкам, датам и ссылкам

v2Public 0 0
updated Sep 2, 2026