Иногда может быть необходимо включить некоторый нежелатеьный для нас файл в дерево исходных текстов FreeBSD. Например, если устройство требует загрузки в него некоторого маленького двоичного кода перед тем, как устройство заработает, и мы не имеем исходных текстов этого кода, то говорится, что двоичный файл является нежелательным. Для включения нежелательных файлов в дерево исходных текстов FreeBSD имеются следующие соглашения.
Любой файл, интерпретируемый или выполняемый системным(и) CPU, не в форме исходного кода, является нежелательным.
Любой файл с лицензией, ограничивающей более, чем BSD или GNU, является нежелательным.
Файл, содержащий загружаемые двоичные данные, используемые аппаратным обеспечением, не являются нежелательными, если только к нему не применимы условия (1) или (2). Он должен быть сохранен в нейтральном к архитектуре формате ASCII (рекомендуется применить утилиты file2c или uuencode).
Люой нежелательный файл требует особое согласие со стороны основной команды разработчиков до того, как он будет добавлен в хранилище CVS.
Нежелательные файлы помещаются в каталог src/contrib или src/sys/contrib.
Части одного модуля должны храниться вместе. Нет необходимости разбивать их, если только нет совместного использования с кодом, не являющимся нежелательным.
Объектные файлы именуются arch/filename.o.uu>.
Файлы ядра;
Должны всегда упоминаться в conf/files.* (для упрощения построения).
Должны всегда присутствовать в LINT, но основная команда разработчиков решает в каждом конкретном случае, должны ли они быть раскомментированы или нет. Конечно, позже основная команда разработчиков может изменить свое решение.
Вопрос о вхождении в состав релиза решается инженером, ответственным за релиз.
Файлы уровня пользователя;
Основная команда разработчиков решает, должен ли код стать частью выполнения команды make world.
Релиз-инженер решает, войдут ли они в релиз.