Mkimage-profiles/style
Рекомендации по стилю mkimage-profiles
строгое обращение с потоками данных
Желательно направление движения значений переменных и действий короткими шагами «сверху вниз» — без выдёргивания значений из соседних каталогов или путешествий сверху в самый низ различным образом).
Построение списков пакетов «на лету» обдумывается, но не подобными хаками, а скорее такими (см. создание .base; также реализована выборка пакаджлистов по произвольным булевым выражениям, включающим теги).
унификация
Крайне желательно неразведение зоопарка аналогов (например, методов макроподстановки). Если вводятся новые практики или концепции, лучше предварительно обсудить задумку или реализацию в своём бранче next до того, как на новосделанное будет завязано много ценного. Если возникают конфликты мнений — давайте постараемся их разрешать, а не форкаться без планов на мерж.
повторное использование вместо дублирования
Если совсем какая-то специфика, но может пригодиться и другим (косясь на mithraen@ и asterisk-1.6.[012] в m-p-d) — может иметь смысл завести «свой» namespace для списков/фич.
выбор уровня воздействия
При сквозном наследовании стоит тщательно выбирать место, где уже нужно сконфигурировать то или иное свойство образа. Например, включение icewm в live-icewm.iso следует произвести на этапе конфигурации дистрибутива в conf.d/live.mk, а не, скажем, на этапе конфигурации фичи в features.in/live/config.mk; при этом если крупный фрагмент конфигурации является реюзабельным, может иметь смысл вынести его в отдельную фичу.
построение вместо урезания
При возможности следует выбирать подход «построить из нужного», чем «добавить всякое и выбросить ненужное»: он гораздо лучше ложится на идею mkimage-profiles (создание из кусочков и минимизация непрозрачных хаков). Это позволяет надеяться на трассируемость процесса построения дистрибутива.
Вынужденным исключением на сейчас являются:
- фича install2 с зачисткой излишних модулей ядра и файлов в компактном livecd-корне инсталятора;
- фича cleanup, подготавливающая постинсталяционную зачистку лишних пакетов в свежеустановленной системе.