Skip to content

Compare versions

From:To:
+621
11¶ # ERPNext
22
33 **Что это.** Открытая ERP: бухгалтерия, склад, продажи, производство — на фреймворке Frappe. Сам проект описывает себя так: «Free and Open Source Enterprise Resource Planning (ERP)».
44
55 **Возраст.** Репозиторий на GitHub заведён 8 июня 2011 года. Проект ведёт компания Frappe.
66
77 **Размер.** 38 800 звёзд, 12 700 форков на сентябрь 2026. Форков к звёздам — треть: ERPNext ставят себе и правят под себя.
8+¶ ## Привычки, описанные им самим
9+
10+ Правила ERPNext лежат в двух местах. В репозитории — короткий [.github/CONTRIBUTING.md](https://github.com/frappe/erpnext/blob/develop/.github/CONTRIBUTING.md), и он только про задачи: как писать баг-репорт и запрос функции. Всё про правки — в [вики](https://github.com/frappe/erpnext/wiki/Contribution-Guidelines): страницы Contribution-Guidelines, Pull-Request-Checklist, Coding-Standards.
11+
12+ **Проект честно предупреждает, что правку придётся переделывать:**
13+
14+ > Most probably you might have to go back and change a few things… **So be prepared for some back and forth.**
15+
16+ *Скорее всего, придётся вернуться и кое-что поправить… Так что готовьтесь к переписке туда-сюда.*
17+
18+ **Автоматические правки запрещены — и правило написано для чужих, не для своих:**
19+
20+ > Do NOT send pull requests based on changes generated using automated tools. … Using AI/LLMs/generative models for completely automated changesets that you have not seriously reviewed. … Exemption: This rule is not enforced on existing maintainers.
21+
22+ *Не присылайте правки, сделанные автоматическими инструментами. … Включая сгенерированные ИИ изменения, которые вы сами всерьёз не просмотрели. … Исключение: на действующих мейнтейнеров правило не распространяется.*
23+
24+ **Новую функцию просят сначала обсудить, а потом переспать с ней:**
25+
26+ > Don't start developing on the same day. Prepare a note and sleep over your thoughts for at least one day.
27+
28+ *Не начинайте писать код в тот же день. Набросайте заметку и дайте мыслям отлежаться хотя бы сутки.*
829¶ ## Привычки, видные по переписке
930
1031 Чинит случай, пока случай виден, и переходит к устройству, когда случаев набирается много: между первой точечной правкой (2021) и решением «свести все записи в одну точку» (2026) — пять лет и пятеро людей.
1132
1233 Правки под чужую базу делает так, чтобы не тронуть свою: «MariaDB code paths are byte-identical». Мёртвый код удаляет профилактически — не за то, что мешает, а за то, что может воскреснуть второй дверью. Имена функций правит так, чтобы они говорили, откуда берётся число.
34+¶ ## Мелкие правила, по которым узнаётся свой
35+
36+ **Коммиты и заголовки PR — Conventional Commits.** `commitlint.config.js` разрешает типы `build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test`; workflow `semantic-commits.yml` проверяет каждый коммит. Заголовок с `chore`, `ci`, `style`, `test`, `refactor` получает метку `skip-release-notes` и выпадает из релизных заметок.
37+
38+ **Ветки:** новое — только в `develop`, исправления — в старшую затронутую версию, бэкпорты — в `version-16-hotfix` и `version-15-hotfix`, по метке `backport version-XX-hotfix`. И:
39+
40+ > Please don't send a Pull Request to all branches.
41+
42+ *Пожалуйста, не шлите один PR во все ветки.*
43+
44+ **Линтеры — через `pre-commit`:** ruff, prettier и eslint, запрет коммитов прямо в `develop`, свой скрипт против SQL, который сломается на Postgres; в CI сверху semgrep с правилами `frappe/semgrep-rules`. Отступы — табы: «Please don't ask why, this has been the legacy».
45+
46+ **Метки ставит бот** по каталогам (`stock`, `accounts`…), а `needs-tests` — на любой PR, где тронут Python без файлов `test*.py`. PR с организационных форков не принимают — там нельзя включить правки мейнтейнера.
47+¶ ## Чего ждать, если придёте со своей правкой
48+
49+ Всё ниже — из вики ERPNext, файлов `.github/` и задачи `frappe/frappe#38145`, на которую вики ссылается.
50+
51+ **Сначала главное: дверь прикрыта.** Вики открывается предупреждением:
52+
53+ > NOTE: Some repositories have temporarily [disabled community contributions](https://github.com/frappe/frappe/issues/38145).
54+
55+ *Примечание: некоторые репозитории временно отключили приём правок от сообщества.*
56+
57+ Это решение организации Frappe, не одного ERPNext; причины — поток PR, доля сгенерированных ИИ, нехватка ревьюеров. Обходной путь оттуда же:
58+
59+ > We are still accepting small, easy to review/merge fixes. … Those who have enough such fixes are invited to the repository.
60+
61+ *Мы по-прежнему принимаем небольшие, легко проверяемые исправления. … Кто накопил достаточно таких, того приглашают в репозиторий.*
62+
63+ Порядок: подробный баг-репорт, вопрос, готовы ли мейнтейнеры принять исправление, ветка в своём форке — PR откроет мейнтейнер. Список «поручившихся» `.github/VOUCHED.td` есть только у фреймворка Frappe, в ERPNext его нет.
64+
65+ **Кто смотрит:** `CODEOWNERS` раздаёт каталоги по модулям. **Что требуют:** тесты; для `feat` — ссылку на документацию, иначе проверка `Documentation Required` красная; для интерфейса — GIF; при смене схемы — патч миграции.
66+
67+ > Important to add test cases, even if its a very simple one that just calls the function. … If tests are failing due to your fixes, please fix your fixes.
68+
69+ *Важно добавить тесты, пусть даже простейший, который просто вызывает функцию. … Если тесты падают из-за ваших исправлений — исправьте исправления.*
70+
71+ **Без рассмотрения** — только стиль или только обновление зависимостей: «Contributions including Style only and Requirements update fixes will not be directly entertained».
72+
73+ **Боты:** через 15 дней тишины PR помечается `inactive`, ещё через 3 дня закрывается («it only takes a comment to keep a contribution alive»); черновики и `hotfix` не трогают. Закрытые треды запираются через 14 дней. Бэкпорты делает `frappe/backport`; вики ещё поминает mergify, но workflow уже другой. О CLA и DCO в скачанных файлах ни слова.
1374¶ ## Кто в кадре
1475
1576 Люди, встреченные в наших разборах этого проекта. Черта называется только вместе с поступком — с датой и ссылкой. Ник — главный, имя — из профиля; нет имени в профиле — только ник.
1677
1778 ### nabinhait — Nabin Hait
1879
1980 Один из основных разработчиков.
2081
2182 11.08.2026 — [PR #57980](https://github.com/frappe/erpnext/pull/57980), первая фраза описания: «found while auditing **every** SLE/Bin write path». Не починил очередной случай, а обошёл все места записи.
2283
2384 В том же PR удалил **мёртвую** функцию, которую никто не вызывает, с обоснованием «would only invite accidental resurrection as a second Bin write path», и переименовал `update_qty` в `update_qty_from_sle` — чтобы имя само говорило, откуда берётся число.
2485
2586 ### mihir-kandoi — Mihir Kandoi
2687
2788 - 05.07.2026 — [закрыл гонки lock-then-read](https://github.com/frappe/erpnext/commit/db58858c68) в подборке и резерве товара;
2889 - 16.07.2026 — [PR #57202](https://github.com/frappe/erpnext/pull/57202): показал, что правильность держалась на побочном свойстве MariaDB и ломалась на Postgres. Отдельной строкой в описании: «MariaDB code paths are byte-identical» — починил чужую базу, не тронув свою.
2990
3091 ### ankush — Ankush Menat
3192
3293 20.12.2021 — [починил остаток на движениях задним числом](https://github.com/frappe/erpnext/commit/ff9a6e8e89). Первый из пятерых, кто подошёл к этой трещине.
3394
3495 ### marination — Marica
3596
3697 04.07.2022 — [починила ту же трещину с другой стороны](https://github.com/frappe/erpnext/commit/7a5fd71a6c): не прошлое портит число, а пересчёт стоимости портит будущие остатки. Полтора года спустя после первого.
3798
3899 ### Sudharsanan11 — Sudharsanan Ashok
39100
40101 Со стороны пользователя, а не сопровождения. 25.08.2026 — [PR #58362](https://github.com/frappe/erpnext/pull/58362): удалили все движения, а число осталось. Закрыл последний известный случай пятилетней цепочки.
41102¶ ## Разборы, где встречается
42103
43104 - **«Пять лет до одной двери»** — пятеро по очереди чинили одну трещину в складских остатках, и никто не ошибался, пока один не спросил, почему это вообще работает.
44105
45106 ---
46107
47 *Карточка собрана 02.09.2026 из открытых источников: репозиторий и переписка в PR и задачах. Правила проекта (CONTRIBUTING и подобные) в карточку ещё не разобраны — раздел «Привычки, описанные им самим» появится, когда будут. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.*
108+ *Карточка собрана 02.09.2026 из открытых источников: репозиторий, документация проекта, переписка в PR и задачах. Фотографий и личных данных здесь нет и не будет. Нашли неточность или хотите, чтобы вас убрали, — напишите, поправим без вопросов.*