Skip to content

Compare versions

From:To:
+3~12
# Terraform
Terraform

Что это. Инструмент, который описывает инфраструктуру файлами и сам приводит её к описанному. Сам проект описывает себя так: «Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool…» — с 2023 года код открыт для чтения, но лицензия BSL, не открытая.

Возраст. Репозиторий на GitHub заведён 13 марта 2014 года. Проект ведёт компания HashiCorp.

Размер. 49 600 звёзд, 10 600 форков на сентябрь 2026. Документация в 2025-м переехала из репозитория в отдельный web-unified-docs.

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

Terraform держит правила в .github/CONTRIBUTING.md; рядом — шаблон PR, шаблоны задач, CODEOWNERS и каталог docs/ с архитектурными заметками для тех, кто собрался менять код. Главная мысль документа: сначала обсуждение в задаче, потом код.

Код без предварительного «добро» могут не смотреть вовсе:

Participating in this discussion and getting the go-ahead from a core maintainer is the only way to ensure your code is reviewed for inclusion with the project.

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

Про сроки проект честен заранее: по большим предложениям «we are unlikely to be able to give prompt feedback».

Есть целые области, куда правки не берут. Новые бэкенды хранения состояния: «The Terraform team is not merging PRs for new state storage backends». Инструментные провижионеры объявлены устаревшими: «we will not be accepting PRs for these areas of the codebase». И даже мелочи: «we do not normally accept minor changes in comments or help text». А метка Good First Issue здесь для новичков внутренней команды, не для внешних.

Об ИИ написан отдельный раздел — с требованием раскрывать его использование в описании PR:

AI is a tool, not a seperate contributor. The responsibility for changes submitted lies entirely with you, the human opening the PR.

ИИ — инструмент, а не отдельный контрибьютор. Ответственность за присланные изменения целиком лежит на вас, человеке, открывшем PR.

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

Отвечают быстро и по-честному: мейнтейнер в день обращения объясняет механизм и сам говорит, что документацию стоило бы улучшить. А дальше задача про документацию лежит четыре года открытой.

Объяснения живут в комментариях задач, а не в справочнике: исчерпывающий ответ на вопрос был написан за полтора месяца до самого вопроса — в соседней задаче, среди ста тридцати восьми комментариев. Переработка справочника в 2025-м сделала спорную формулировку категоричнее, а не точнее. Задача про документацию осталась там, где документации больше нет.

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

CHANGELOG.md руками не правят. Запись создаётся командой npx changie new в каталоге .changes/v1.XX/ под версию из version/VERSION; если правка не видна пользователю — ставится метка no-changelog-needed. Бот проверяет и то, и другое, а на прямую правку файла отвечает:

Please don't edit the CHANGELOG.md manually. We use changie to control the Changelog generation…

Пожалуйста, не правьте CHANGELOG.md вручную. Генерацией changelog управляет changie…

Сама запись — от лица пользователя, «not describe implementation details».

Обновление зависимостей — отдельным коммитом, сообщение которого повторяет команду: git commit -m "go get github.com/hashicorp/hcl/v2@2.0.0". Copyleft и проприетарные лицензии у зависимостей не принимаются; свои — MPL 2, MIT и BSD.

Бэкпорт — через метку вида 1.11-backport; бот сам открывает черновой PR в ветку релиза. Файл изменения кладут в каталог самой ранней из версий.

Машинные проверки: make fmtcheck importscheck vetcheck copyright generate staticcheck exhaustive protobuf; если после них рабочее дерево не чисто, CI падает.

Стать мейнтейнером участка можно одним PR:

you may simply make a PR against our CODEOWNERS file with your github handle attached to the approriate area.

просто откройте PR в наш файл CODEOWNERS, приписав свой github-ник к нужной области.

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

Всё ниже — из .github/CONTRIBUTING.md, шаблона PR и workflow-файлов в .github/workflows/, а не из наших догадок.

При первом PR попросят подписать CLA. Дальше — юнит- и приёмочные тесты, проверка change-файлов и внутренний Vercel, который у внешних не работает: «We are aware of this and work around it for external contributions». Шаблон PR просит целевой релиз, план отката и изменения в средствах безопасности.

Смотрит основная команда, когда найдёт время; просить конкретного человека нельзя:

When time permits Terraform's core team members will look over your contribution… It may take some time for us to respond… We kindly ask that you do not target specific team members.

Когда позволит время, члены основной команды посмотрят ваш вклад… Ответ может занять время… Просим не адресовать запросы конкретным членам команды.

Если у участка есть сторонний мейнтейнер из CODEOWNERS, сначала ждут его одобрения, и срок не обещают: «There is no expectation on response time for our maintainers».

Доводить PR до готовности — работа автора:

While reviewers are happy to give guidance, it is unsustainable for us to perform the coding work necessary to get a PR into a mergeable state.

Ревьюеры с радостью подскажут, но делать за автора работу по доведению PR до готовности к слиянию — для нас неподъёмно.

PR с красными тестами могут не открыть вообще: «we may not review pull requests which aren't passing our tests». Правки от бот-аккаунтов не принимают: «All PRs must be submitted by a real, human-owned account».

Боты: новый комментарий снимает метки stale и waiting-reply; через 30 дней после закрытия тред запирается — «I'm going to lock this pull request because it has been closed for 30 days».

## Кто в кадреMoved
Кто в кадре

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

jbardin — James Bardin

В команде HashiCorp. 21.04.2022 — ответил в день обращения: объяснил, что ключевое слово в спорном абзаце — «safely», признал, что движок такое разрешает ради обратной совместимости, и сам сказал: «Perhaps the documentation could be improved here».

Согласие с критикой без обещания починить — честнее, чем обещание.

jesseschalken — Jesse Schalken

Со стороны пользователя.

th0masb — Thomas Ball

21.04.2022 — открыл #30910: не «у меня не работает», а цитата документации рядом с работающим примером, который ей противоречит. Через два дня принёс готовый текст нового абзаца — человек, впервые пришедший в проект, пишет за проект документацию.

alexsomesan — Alex Somesan

Сопровождает провайдер Kubernetes.

04.03.2022 — в задаче #2430 написал точный механизм — каким ресурсам нужен доступ к кластеру при планировании, а каким нет. Это был ответ на вопрос, который зададут через полтора месяца в соседней задаче.

28.04.2022 — показал, что у kubernetes_manifest требование расписано ясно. На вопрос «а где про остальные?» ответа не последовало.

RubenSandwich — Ruben Nic

02.07–05.09.2025 — PR #530 в web-unified-docs: переработка справочника, 357 файлов, +25 671/−16 695. Спорный абзац переписан: вместо двусмысленного «safely» — прямое «cannot».

LeonxLJX

Имени в профиле нет. 01.09.2026 — первое сообщение в теме за четыре года: «I'd like to take this one… I'll look into the root cause and follow up with a PR».

## Разборы, где встречаетсяChanged
Разборы, где встречается
  • «Слово сильнее правды» — документация говорит «нельзя», код разрешает, и четыре года никто не переписывает абзац, хотя мейнтейнер согласился в первый же день.

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