Skip to content

Compare versions

From:To:
+641
11¶ # Terraform
22
33 **Что это.** Инструмент, который описывает инфраструктуру файлами и сам приводит её к описанному. Сам проект описывает себя так: «Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool…» — с 2023 года код открыт для чтения, но лицензия BSL, не открытая.
44
55 **Возраст.** Репозиторий на GitHub заведён 13 марта 2014 года. Проект ведёт компания HashiCorp.
66
77 **Размер.** 49 600 звёзд, 10 600 форков на сентябрь 2026. Документация в 2025-м переехала из репозитория в отдельный `web-unified-docs`.
8+¶ ## Привычки, описанные им самим
9+
10+ Terraform держит правила в [.github/CONTRIBUTING.md](https://github.com/hashicorp/terraform/blob/main/.github/CONTRIBUTING.md); рядом — шаблон PR, шаблоны задач, CODEOWNERS и каталог `docs/` с архитектурными заметками для тех, кто собрался менять код. Главная мысль документа: сначала обсуждение в задаче, потом код.
11+
12+ **Код без предварительного «добро» могут не смотреть вовсе:**
13+
14+ > 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.
15+
16+ *Участие в этом обсуждении и одобрение от основного мейнтейнера — единственный способ гарантировать, что ваш код будет рассмотрен для включения в проект.*
17+
18+ Про сроки проект честен заранее: по большим предложениям «we are unlikely to be able to give prompt feedback».
19+
20+ **Есть целые области, куда правки не берут.** Новые бэкенды хранения состояния: «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` здесь для новичков внутренней команды, не для внешних.
21+
22+ **Об ИИ написан отдельный раздел** — с требованием раскрывать его использование в описании PR:
23+
24+ > AI is a tool, not a seperate contributor. The responsibility for changes submitted lies entirely with you, the human opening the PR.
25+
26+ *ИИ — инструмент, а не отдельный контрибьютор. Ответственность за присланные изменения целиком лежит на вас, человеке, открывшем PR.*
827¶ ## Привычки, видные по переписке
928
1029 Отвечают быстро и по-честному: мейнтейнер в день обращения объясняет механизм и сам говорит, что документацию стоило бы улучшить. А дальше задача про документацию лежит четыре года открытой.
1130
1231 Объяснения живут в комментариях задач, а не в справочнике: исчерпывающий ответ на вопрос был написан за полтора месяца до самого вопроса — в соседней задаче, среди ста тридцати восьми комментариев. Переработка справочника в 2025-м сделала спорную формулировку категоричнее, а не точнее. Задача про документацию осталась там, где документации больше нет.
32+¶ ## Мелкие правила, по которым узнаётся свой
33+
34+ **CHANGELOG.md руками не правят.** Запись создаётся командой `npx changie new` в каталоге `.changes/v1.XX/` под версию из `version/VERSION`; если правка не видна пользователю — ставится метка `no-changelog-needed`. Бот проверяет и то, и другое, а на прямую правку файла отвечает:
35+
36+ > Please don't edit the CHANGELOG.md manually. We use changie to control the Changelog generation…
37+
38+ *Пожалуйста, не правьте CHANGELOG.md вручную. Генерацией changelog управляет changie…*
39+
40+ Сама запись — от лица пользователя, «not describe implementation details».
41+
42+ **Обновление зависимостей — отдельным коммитом**, сообщение которого повторяет команду: `git commit -m "go get github.com/hashicorp/hcl/v2@2.0.0"`. Copyleft и проприетарные лицензии у зависимостей не принимаются; свои — MPL 2, MIT и BSD.
43+
44+ **Бэкпорт — через метку** вида `1.11-backport`; бот сам открывает черновой PR в ветку релиза. Файл изменения кладут в каталог самой ранней из версий.
45+
46+ **Машинные проверки:** `make fmtcheck importscheck vetcheck copyright generate staticcheck exhaustive protobuf`; если после них рабочее дерево не чисто, CI падает.
47+
48+ **Стать мейнтейнером участка можно одним PR:**
49+
50+ > you may simply make a PR against our CODEOWNERS file with your github handle attached to the approriate area.
51+
52+ *просто откройте PR в наш файл CODEOWNERS, приписав свой github-ник к нужной области.*
53+¶ ## Чего ждать, если придёте со своей правкой
54+
55+ Всё ниже — из [.github/CONTRIBUTING.md](https://github.com/hashicorp/terraform/blob/main/.github/CONTRIBUTING.md), шаблона PR и workflow-файлов в `.github/workflows/`, а не из наших догадок.
56+
57+ **При первом PR попросят подписать CLA.** Дальше — юнит- и приёмочные тесты, проверка change-файлов и внутренний Vercel, который у внешних не работает: «We are aware of this and work around it for external contributions». Шаблон PR просит целевой релиз, план отката и изменения в средствах безопасности.
58+
59+ **Смотрит основная команда, когда найдёт время; просить конкретного человека нельзя:**
60+
61+ > 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.**
62+
63+ *Когда позволит время, члены основной команды посмотрят ваш вклад… Ответ может занять время… Просим не адресовать запросы конкретным членам команды.*
64+
65+ Если у участка есть сторонний мейнтейнер из CODEOWNERS, сначала ждут его одобрения, и срок не обещают: «There is no expectation on response time for our maintainers».
66+
67+ **Доводить PR до готовности — работа автора:**
68+
69+ > 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.
70+
71+ *Ревьюеры с радостью подскажут, но делать за автора работу по доведению PR до готовности к слиянию — для нас неподъёмно.*
72+
73+ **PR с красными тестами могут не открыть вообще:** «we may not review pull requests which aren't passing our tests». Правки от бот-аккаунтов не принимают: «All PRs must be submitted by a real, human-owned account».
74+
75+ **Боты:** новый комментарий снимает метки `stale` и `waiting-reply`; через 30 дней после закрытия тред запирается — «I'm going to lock this pull request because it has been closed for _30 days_».
1376¶ ## Кто в кадре
1477
1578 Люди, встреченные в наших разборах этого проекта. Черта называется только вместе с поступком — с датой и ссылкой. Ник — главный, имя — из профиля; нет имени в профиле — только ник.
1679
1780 ### jbardin — James Bardin
1881
1982 В команде HashiCorp. 21.04.2022 — [ответил в день обращения](https://github.com/hashicorp/terraform/issues/30910#issuecomment-1105549310): объяснил, что ключевое слово в спорном абзаце — «safely», признал, что движок такое разрешает ради обратной совместимости, и сам сказал: «Perhaps the documentation could be improved here».
2083
2184 Согласие с критикой без обещания починить — честнее, чем обещание.
2285
2386 ### jesseschalken — Jesse Schalken
2487
2588 Со стороны пользователя.
2689
2790 - 22.04.2022 — [спросил не «почему нельзя», а «как понять, что мне можно»](https://github.com/hashicorp/terraform/issues/30910#issuecomment-1105936271): «How can someone know if they are in the “works just fine” category?»;
2891 - 23.04.2022 — [сформулировал претензию к слову](https://github.com/hashicorp/terraform/issues/30910#issuecomment-1107445968): «It is **not** “unsafe”, the safety depends on the resource and provider in question»;
2992 - 22.06.2022 — [последнее сообщение в теме на четыре года](https://github.com/hashicorp/terraform/issues/30910#issuecomment-1162901011), вопрос про отсутствие: «where are the docs saying that the other resources don't?»
3093
3194 ### th0masb — Thomas Ball
3295
3396 21.04.2022 — [открыл #30910](https://github.com/hashicorp/terraform/issues/30910): не «у меня не работает», а цитата документации рядом с работающим примером, который ей противоречит. Через два дня [принёс готовый текст нового абзаца](https://github.com/hashicorp/terraform/issues/30910#issuecomment-1107442537) — человек, впервые пришедший в проект, пишет за проект документацию.
3497
3598 ### alexsomesan — Alex Somesan
3699
37100 Сопровождает провайдер Kubernetes.
38101
39102 04.03.2022 — [в задаче #2430](https://github.com/hashicorp/terraform/issues/2430#issuecomment-1058693140) написал точный механизм — каким ресурсам нужен доступ к кластеру при планировании, а каким нет. Это был ответ на вопрос, который зададут через полтора месяца в соседней задаче.
40103
41104 28.04.2022 — [показал](https://github.com/hashicorp/terraform/issues/30910#issuecomment-1111909242), что у `kubernetes_manifest` требование расписано ясно. На вопрос «а где про остальные?» ответа не последовало.
42105
43106 ### RubenSandwich — Ruben Nic
44107
45108 02.07–05.09.2025 — [PR #530 в web-unified-docs](https://github.com/hashicorp/web-unified-docs/pull/530): переработка справочника, 357 файлов, +25 671/−16 695. Спорный абзац переписан: вместо двусмысленного «safely» — прямое «cannot».
46109
47110 ### LeonxLJX
48111
49112 Имени в профиле нет. 01.09.2026 — [первое сообщение в теме за четыре года](https://github.com/hashicorp/terraform/issues/30910#issuecomment-5494238304): «I'd like to take this one… I'll look into the root cause and follow up with a PR».
50113¶ ## Разборы, где встречается
51114
52115 - **«Слово сильнее правды»** — документация говорит «нельзя», код разрешает, и четыре года никто не переписывает абзац, хотя мейнтейнер согласился в первый же день.
53116
54117 ---
55118
56 *Карточка собрана 02.09.2026 из открытых источников: репозиторий и переписка в PR и задачах. Правила проекта (CONTRIBUTING и подобные) в карточку ещё не разобраны — раздел «Привычки, описанные им самим» появится, когда будут. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.*
119+ *Карточка собрана 02.09.2026 из открытых источников: репозиторий, документация проекта, переписка в PR и задачах. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.*