Skip to content

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

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

Что это. Библиотека интерфейсов. Сам проект описывает себя так: «The library for web and native user interfaces». Репозиторий сейчас называется react/react; ссылки на facebook/react перенаправляются.

Возраст. Репозиторий на GitHub заведён 24 мая 2013 года.

Размер. 248 600 звёзд, 51 300 форков на сентябрь 2026.

В наши разборы попал одной своей гранью — пакетом server-only из четырёх строк, который существует, чтобы падать. Одна версия, выпущенная 03.09.2022, ни одного обновления. Карточка об этой грани, а не о проекте целиком.

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

CONTRIBUTING.md в репозитории — четыре строки и ссылка. Настоящие правила живут на странице How to Contribute старого сайта (исходник — content/docs/how-to-contribute.md в reactjs/legacy.reactjs.org); CONTRIBUTING и шаблон PR ведут именно туда.

Одна очередь для всех:

All work on React happens directly on GitHub. Both core team members and external contributors send pull requests which go through the same review process.

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

Одна ветка, и она всегда готова к релизу:

Submit all changes directly to the main branch. We don't use separate branches for development or for upcoming releases… We should be able to release a new minor version from the tip of main at any time.

Все изменения — прямо в main. Отдельных веток для разработки или будущих релизов нет… Мы должны иметь возможность выпустить новую минорную версию с верхушки main в любой момент.

Отсюда вторая привычка: всё ломающее и экспериментальное обязано прятаться за feature-флагом.

Сначала договориться, потом писать. Для нетривиального — issue, для «существенного» — процесс RFC в репозитории reactjs/rfcs:

Some changes though are "substantial", and we ask that these be put through a bit of a design process and produce a consensus among the React core team.

Некоторые изменения «существенны», и мы просим проводить их через небольшой процесс проектирования и добиваться консенсуса в основной команде React.

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

Удобство не перевешивает назначение. На просьбу сделать пакет дружелюбнее отвечают отказом с разбором последствий — в тот же день и без смягчений.

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

Чеклист перед PR записан дважды — на сайте и в .github/PULL_REQUEST_TEMPLATE.md, почти слово в слово: ветка от main, yarn test и yarn test --prod, yarn prettier, yarn lint (или yarn linc — только изменённые файлы), yarn flow, последним пунктом — CLA.

В шаблоне PR два поля, и второе — с предупреждением:

How did you test this change?

… If you leave this empty, your PR will very likely be closed.

Как вы проверили это изменение? … Если оставите пустым, ваш PR почти наверняка закроют.

Занял задачу — отметься. Перед тем как брать issue, нужно оставить комментарий; если тот, кто её занял, молчит больше двух недель, задачу можно забрать — снова с комментарием.

Свои определяются по файлу. Основная команда — плоский список логинов в MAINTAINERS; workflow shared_label_core_team_prs.yml сверяет автора PR с этим файлом и вешает метку React Core Team. Как в список попасть, нигде не написано.

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

Всё ниже — со страницы How to Contribute, из шаблонов в .github/ и из workflow-файлов самого проекта.

Смотрит основная команда, исходов три:

The core team is monitoring for pull requests. We will review your pull request and either merge it, request changes to it, or close it with an explanation.

Основная команда следит за pull request. Мы посмотрим ваш и либо вольём, либо попросим изменений, либо закроем с объяснением.

Если правка меняет API, там же предупреждают о задержке: сначала чинят внутреннее использование. CLA обязателен, подписывается один раз.

Тесты на новое — требование, а не пожелание:

We still require that your pull request contains unit tests for any new functionality. This way we can ensure that we don't break your code in the future.

Мы по-прежнему требуем, чтобы pull request содержал юнит-тесты на любую новую функциональность. Так мы сможем не сломать ваш код в будущем.

Бот считает дни. По .github/workflows/shared_stale.yml через 90 дней без движения PR или issue получает метку Resolution: Stale, ещё через 7 — закрывается. Спасает любой комментарий:

If this pull request is still relevant, please leave any comment (for example, "bump"), and we'll keep it open.

Если этот pull request ещё актуален, оставьте любой комментарий (например, «bump»), и мы оставим его открытым.

Метки React Core Team, Type: Bug, Type: Regression и ещё несколько бот не трогает.

Что закрывают без разбора. Баг-репорт без воспроизведения («may be immediately closed as not actionable»), отчёт о компиляторе без шагов («Issues filed without repro steps will be closed»), PR в ветки builds/facebook-** — их закрывает отдельный workflow и просит переоткрыть в main. Пустые issue отключены.

Кто в кадре

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

sebmarkbage — Sebastian Markbåge

Автор пакета server-only (единственная версия опубликована с его учётной записи npm 03.09.2022).

02.04.2023 — в RFC #227 объяснил мейнтейнеру Jest, почему нельзя сделать пакет удобнее: «The goal is for it to throw by default to indicate that it doesn't work by default in existing environments that might be SSR hybrid». Ответил в тот же день, объяснил последствие, не смягчил формулировку.

Отказ, после которого спрашивавший сам вычеркнул своё предложение.

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

Карточка собрана 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