О проекте
Проектная документация этой книги: как она собрана, как её собирать и проверять и где находится источник истины. Саму книгу смотрите в оглавлении.
Карта проекта
- Книга: публикуется в четырёх локалях в
locales/; см. spec/locales.md. Эта локаль,en-gb-oxendict/topics/(63 файла),en-gb-oxendict/front-matter/и приложения в части 9 это рукописный источник;en-001,en-gbиen-usвыводятся из него. - Источник истины:
spec/в корне репозитория (не публикуется на сайте). Структура объявлена вspec/structure.md, правила письма вspec/conventions.md, а орфография вspec/oxford-spelling.md. Всё остальное строится так, чтобы соответствовать. - Инструменты:
tools/localize.pyвыводит остальные три локали;tools/gen_nav.pyгенерирует навигацию;tests/validate.pyпроверяет соблюдение спецификации;justfileсвязывает их. - Руководство для участников:
AGENTS.mdв корне репозитория и руководства в разделе об участии.
Сборка и проверка
Набор проверок работает на Python 3 без других зависимостей и без доступа к сети. Задачи запускаются через just.
just test # validate structure, style, links, and spec-vs-disk
just nav # regenerate the generated navigation files
just check # nav, then test
just stats # topic and word counts Этот репозиторий хранит содержание и спецификацию книги. В веб-сайт её превращает отдельный репозиторий software-engineering-metrics.github.io.
Как здесь работает разработка, управляемая спецификацией
Спецификация идёт первой. spec/structure.md объявляет, какие темы существуют и как они нумеруются. spec/conventions.md объявляет, как нужно писать темы.
Темы пишутся так, чтобы удовлетворять обоим. tools/gen_nav.py выводит навигацию из тем, а tests/validate.py проверяет результат на соответствие спецификации.
Если тема и спецификация когда-нибудь разойдутся, тест упадёт, и это сигнал выровнять их снова.
Так дрейф остаётся снаружи: изменение «закончено» только тогда, когда спецификация, темы, сгенерированная навигация и тесты все согласны.
Проектные решения, которые стоит знать
- Плоские темы с десятичной нумерацией. Файлы называются
locales/<locale>/topics/PP-CC-slug.md, слаг один и тот же во всех локалях. Части это целые числа; темы это десятичные дроби; N.0 это введение части. Так идентификаторы остаются стабильными, а инструменты могут сортировать и группировать без дерева каталогов. - Одна рукописная локаль, три производных.
en-gb-oxendictэто оксфордская орфография, фирменный стиль большинства международных органов по стандартизации (см.spec/oxford-spelling.md);en-001,en-gbиen-usмеханически выводятся из неё, поэтому переводы никогда не расходятся с источником. - Сгенерированная навигация. Оглавление, страницы содержания и указатель тем генерируются, поэтому они никогда не расходятся с темами.
- Офлайн-тесты без зависимостей. Набор использует только стандартную библиотеку, поэтому работает где угодно, включая CI и pre-commit-хуки.
- Перекрёстные ссылки остаются простым текстом. Проза ссылается на темы по десятичному номеру («см. тему 2.1»), как требует спецификация; сайт, который рендерит, отвечает за превращение этих ссылок в гиперссылки.
- Без длинных тире, по правилу и по тесту. Сознательный стилистический выбор, который проверяется, чтобы оставаться верным по мере роста книги.
- Каждое семейство метрик называет собственный путь манипулирования. Это единственное правило шаблона, не имеющее аналога в родственном проекте
software-engineering-guide: оно существует потому, что вся тема этой книги измерение, а значит, риск самого измерения должен быть первоклассным, а не подразумеваемым.
Что почитать дальше
- Создание тем : написание и редактирование тем.
- Навигация : как работают сгенерированные файлы.
- Тестирование : что проверяют тесты и как исправлять сбои.
- Примеры : небольшие конкретные примеры.
- Журнал изменений : история заметных изменений.