
Создание продуктов на основе FreeBSD
Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.
товарные знаки
FreeBSD является зарегистрированным товарным знаком Фонда FreeBSD.
Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве товарных знаков. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о товарном знаке, к обозначению добавляется знак “™” или “®”.
Содержание
Аннотация
Проект FreeBSD — это всемирный, основанный на добровольцах и совместной работе проект, разрабатывающий переносимую и высококачественную операционную систему. Проект FreeBSD распространяет исходный код своего продукта под либеральной лицензией с целью поощрения использования своего кода. Сотрудничество с проектом FreeBSD может помочь организациям сократить время выхода на рынок, снизить инженерные затраты и улучшить качество своих продуктов.
В этой статье рассматриваются вопросы использования кода FreeBSD в устройствах и программных продуктах. В ней подчеркиваются характеристики FreeBSD, которые делают её отличной основой для разработки продуктов. В заключение статьи предлагаются несколько «лучших практик» для организаций, сотрудничающих с проектом FreeBSD.
1. Введение
Современный FreeBSD известен как высокопроизводительная серверная операционная система. Он развернут на миллионах веб-серверов и хостов, доступных из интернета, по всему миру. Код FreeBSD также является неотъемлемой частью множества продуктов — от устройств, таких как сетевые маршрутизаторы, межсетевые экраны и системы хранения данных, до персональных компьютеров. Части FreeBSD также использовались в коммерческом коробочном программном обеспечении (см. FreeBSD как набор строительных блоков).
В этой статье мы рассматриваем проект FreeBSD как ресурс для разработки программного обеспечения — как набор строительных блоков и процессов, которые можно использовать для создания продуктов.
Хотя исходный код FreeBSD распространяется свободно, чтобы в полной мере воспользоваться преимуществами работы проекта, организациям необходимо сотрудничать с ним. В последующих разделах этой статьи мы обсудим эффективные способы взаимодействия с проектом и подводные камни, которых следует избегать при этом.
Предупреждение для читателя. Автор считает, что перечисленные в этой статье характеристики проекта FreeBSD были в основном верны на момент написания статьи (2005 год). Однако читателю следует учитывать, что практики и процессы, используемые сообществами открытого исходного кода, могут меняться со временем, поэтому информацию в этой статье следует рассматривать как ориентировочную, а не нормативную.
1.1. Целевая аудитория
Этот документ может быть интересен следующим широким группам людей:
Принимающие решения в продуктовых компаниях, ищущие способы повысить качество своего продукта, сократить время выхода на рынок и снизить инженерные затраты в долгосрочной перспективе.
Консультанты по технологиям, ищущие передовые методы использования "открытого исходного кода".
Заинтересованные в понимании динамики проектов с открытым исходным кодом представители отрасли.
Разработчики программного обеспечения, желающие использовать FreeBSD и ищущие способы внести свой вклад.
1.2. Цели статьи
Прочитав эту статью, вы должны:
Понимание целей проекта FreeBSD и его организационной структуры.
Понимание модели разработки и процессов выпуска релизов.
Понимание того, как традиционные корпоративные процессы разработки программного обеспечения отличаются от используемых в проекте FreeBSD.
Осведомленность о каналах связи, используемых проектом, и уровне прозрачности, который вы можете ожидать.
Осознание оптимальных способов работы с проектом — как лучше всего снизить инженерные затраты, ускорить выход на рынок, управлять уязвимостями безопасности и сохранить будущую совместимость с вашим продуктом по мере развития проекта FreeBSD.
1.3. Структура статьи
Остальная часть статьи структурирована следующим образом:
FreeBSD как набор строительных блоков представляет проект FreeBSD, исследует его организационную структуру, ключевые технологии и процессы разработки релизов.
Сотрудничество с FreeBSD описывает способы взаимодействия с проектом FreeBSD. В нём рассматриваются типичные проблемы, с которыми сталкиваются компании при работе с добровольными проектами, такими как FreeBSD.
Заключение завершает.
2. FreeBSD как набор строительных блоков
FreeBSD представляет собой отличную основу для создания продуктов:
Исходный код FreeBSD распространяется под либеральной лицензией BSD, что способствует его использованию в коммерческих продуктах Почему следует использовать лицензию в стиле BSD для вашего открытого проекта с минимальными сложностями.
Проект FreeBSD обладает превосходными инженерными практиками, которые можно использовать.
Проект обеспечивает исключительную прозрачность своей работы, позволяя организациям, использующим его код, эффективно планировать будущее.
Культура проекта FreeBSD, унаследованная от Исследовательской группы по информатике Калифорнийского университета в Беркли Двадцать лет Berkeley Unix: от собственности AT&T до свободного распространения, способствует созданию высококачественных продуктов. Некоторые функции FreeBSD задают современный уровень развития технологий.
Инновации происходят в другом месте: открытое ПО как бизнес-стратегия подробно рассматривает бизнес-причины использования открытого ПО. Для организаций преимущества использования компонентов FreeBSD в своих продуктах включают сокращение времени выхода на рынок, снижение затрат на разработку и уменьшение рисков разработки.
2.1. Сборка с FreeBSD
Вот несколько способов, как организации использовали FreeBSD:
В качестве вышестоящего источника для проверенного кода библиотек и утилит.
Будучи "нисходящими" по отношению к проекту, организации используют новые функции, исправления ошибок и тестирование, которые получает вышестоящий код.
Как встроенная ОС (например, для OEM-маршрутизаторов и устройств с межсетевым экраном). В этой модели организации используют настроенное ядро FreeBSD и набор прикладных программ вместе с проприетарным уровнем управления для своего устройства. OEM-производители получают выгоду от добавления поддержки нового оборудования проектом FreeBSD на уровне вышестоящего кода, а также от тестирования, которое проходит базовая система.
FreeBSD поставляется с автономной средой разработки, которая позволяет легко создавать подобные конфигурации.
Как совместимая с Unix среда для функций управления высокопроизводительными устройствами хранения данных и сетевого оборудования, работающая на отдельном процессорном "лезвии".
FreeBSD предоставляет инструменты для создания выделенных образов ОС и прикладных программ. Его реализация API BSD Unix является зрелой и проверенной. FreeBSD также может обеспечить стабильную среду кросс-разработки для других компонентов высокопроизводительных устройств.
Как средство для получения широкого тестирования и поддержки от международной команды разработчиков для некритичной "интеллектуальной собственности".
В этой модели организации вносят полезные инфраструктурные фреймворки в проект FreeBSD (например, см. netgraph(3)). Широкое распространение кода помогает быстро выявлять проблемы производительности и ошибки. Участие высококлассных разработчиков также приводит к полезным расширениям инфраструктуры, от которых выигрывает и сама организация-вкладчик.
Как среда разработки, поддерживающая кросс-разработку для встраиваемых ОС, таких как RTEMS и eCOS.
В обширной коллекции портированных приложений и пакетов FreeBSD, насчитывающей 36000 элементов, доступно множество полноценных сред разработки.
В качестве способа поддержки Unix-подобного API в проприетарной ОС, повышая её привлекательность для разработчиков приложений.
В этой части ядра FreeBSD и прикладных программ "портированы" для работы вместе с другими задачами в проприетарной ОС. Наличие стабильной и хорошо протестированной реализации Unix™ API может сократить усилия, необходимые для переноса популярных приложений на проприетарную ОС. Поскольку FreeBSD поставляется с качественной документацией по своей внутренней структуре и имеет эффективные процессы управления уязвимостями и выпуска релизов, затраты на поддержание актуальности остаются низкими.
2.2. Технологии
В проекте FreeBSD поддерживается большое количество технологий. Ниже приведен их выбор:
Полная система, способная самостоятельно осуществлять кросс-хостинг для множества архитектур:
Модульное симметричное многопроцессорное ядро с загружаемыми модулями и гибкой, удобной системой настройки.
Поддержка эмуляции бинарных файлов Linux™ и SVR4 с почти нативной скоростью. Поддержка бинарных сетевых драйверов Windows™ (NDIS).
Библиотеки для множества задач программирования: архиваторы, поддержка FTP и HTTP, поддержка потоков, а также полноценная среда программирования, аналогичная POSIX™.
Безопасность: Принудительное управление доступом (mac(9)), клетки (jail(2)), ACL и поддержка криптографических устройств в ядре.
Сетевые возможности: работа с межсетевым экраном, управление QoS, высокопроизводительные TCP/IP сети с поддержкой множества расширений.
Встроенная в FreeBSD система Netgraph (netgraph(4)) позволяет гибко соединять модули сетевого ядра между собой.
Поддержка технологий хранения данных: Fibre Channel, SCSI, программный и аппаратный RAID, ATA и SATA.
FreeBSD поддерживает множество файловых систем, а его родная файловая система UFS2 поддерживает мягкие обновления, снимки и очень большие размеры файловых систем (16TB на файловую систему) Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem.
Встроенная в ядро FreeBSD система GEOM (geom(4)) позволяет гибко комбинировать модули хранения данных.
Более 36000 портированных приложений, как коммерческих, так и с открытым исходным кодом, управляемых через коллекцию портов FreeBSD.
2.3. Организационная структура
Организационная структура FreeBSD не является иерархической.
Существует два основных типа участников FreeBSD: обычные пользователи FreeBSD и разработчики с правом записи (известные в жаргоне как коммиттеры) в исходную базу.
В первой группе участвуют тысячи разработчиков; подавляющее большинство вкладов в FreeBSD поступает от участников этой группы. Права на коммит (доступ на запись) в репозиторий предоставляются тем, кто регулярно вносит вклад в проект. Права на коммит связаны с дополнительными обязанностями, и новым коммиттерам назначаются наставники, чтобы помочь им освоиться.

Рисунок 1. Организация FreeBSD
Разрешение конфликтов осуществляется «Основной командой» из девяти человек, которая избирается из группы коммиттеров.
В FreeBSD нет "корпоративных" коммиттеров. Отдельные коммиттеры обязаны нести ответственность за изменения, которые они вносят в код. В Руководстве коммиттера FreeBSD Руководство коммиттера описаны правила и обязанности коммиттеров.
Модель проекта FreeBSD подробно рассматривается в Модель проекта для FreeBSD.
2.4. Процессы разработки релизов FreeBSD
Процессы разработки релизов FreeBSD играют важную роль в обеспечении высокого качества выпускаемых версий. В любой момент времени добровольцы FreeBSD поддерживают несколько линий кода (Ветви релизов FreeBSD):
Новые функции и критически важный код попадают в ветку разработки, также известную как ветка -CURRENT.
Ветви -STABLE представляют собой линии кода, ответвленные от HEAD через регулярные промежутки времени. В ветку -STABLE допускается только проверенный код. Новые функции добавляются только после их тестирования и стабилизации в ветке -CURRENT.
Ветви -RELEASE поддерживаются командой безопасности FreeBSD. На ветви -RELEASE допускаются только исправления ошибок для критических проблем.

Рисунок 2. Ветви выпусков FreeBSD
Строки кода поддерживаются до тех пор, пока есть интерес со стороны пользователей и разработчиков.
Архитектуры машин разделены на «уровни»: архитектуры Уровня 1 полностью поддерживаются командами разработки выпусков и безопасности проекта, архитектуры Уровня 2 поддерживаются по мере возможностей, а экспериментальные архитектуры составляют Уровень 3. Список поддерживаемых архитектур является частью коллекции документации FreeBSD.
Команда разработки релизов публикует дорожную карту будущих выпусков FreeBSD на веб-сайте проекта. Указанные в дорожной карте даты не являются крайними сроками; FreeBSD выпускается, когда его код и документация готовы.
Процессы разработки релизов FreeBSD описаны в Инженерия релизов FreeBSD.
3. Сотрудничество с FreeBSD
Проекты с открытым исходным кодом, такие как FreeBSD, предлагают готовый код очень высокого качества.
Хотя доступ к качественному исходному коду может снизить затраты на начальную разработку, в долгосрочной перспективе затраты на управление изменениями становятся преобладающими. По мере того как вычислительные среды меняются с годами и обнаруживаются новые уязвимости безопасности, ваш продукт также должен меняться и адаптироваться. Использование открытого исходного кода лучше рассматривать не как разовое мероприятие, а как непрерывный процесс. Лучшие проекты для сотрудничества — это те, которые активны; т.е. имеют активное сообщество, четкие цели и прозрачный стиль работы.
FreeBSD имеет активное сообщество разработчиков. На момент написания этого документа в мире насчитываются тысячи участников со всех обитаемых континентов, а также более 300 человек с правом записи в исходные репозитории проекта.
Цели проекта FreeBSD описаны в Участие в проекте FreeBSD:
Разработать высококачественную операционную систему для популярного компьютерного оборудования и,
Сделать нашу работу доступной для всех под либеральной лицензией.
FreeBSD придерживается открытой и прозрачной рабочей культуры. Почти все обсуждения в проекте происходят по электронной почте на публичных списках рассылки, которые также архивируются для потомков. Политики проекта документированы и поддерживаются в системе контроля версий. Участие в проекте открыто для всех.
3.1. Понимание культуры FreeBSD
Чтобы эффективно работать с проектом FreeBSD, необходимо понимать его культуру.
Добровольческие проекты работают по другим правилам, чем коммерческие компании. Частая ошибка, которую совершают компании, входя в мир открытого исходного кода, — недооценка этих различий.
Мотивация. Большинство вкладов в FreeBSD делается добровольно, без денежного вознаграждения. Факторы, мотивирующие людей, сложны и варьируются от альтруизма до интереса к решению задач, которые FreeBSD пытается решить. В таких условиях «элегантность никогда не бывает опциональной» Tutorial on Good Lisp Programming Style.
Долгосрочная перспектива. FreeBSD ведёт свою историю почти двадцать лет назад, к работе Исследовательской группы по информатике (Computer Science Research Group) в Университете Калифорнии, Беркли.[1] Некоторые из оригинальных разработчиков CSRG до сих пор связаны с проектом.
Проект ценит долгосрочные перспективы Научись программировать за десять лет. Часто встречающаяся в проекте аббревиатура — DTRT, что означает «Do The Right Thing» (сделай правильно).
Процессы разработки. Компьютерные программы — это инструменты для общения: на одном уровне программисты передают свои намерения, используя точную нотацию, инструменту (компилятору), который преобразует их инструкции в исполняемый код. На другом уровне та же нотация используется для передачи намерений между двумя программистами.
Формальные спецификации и проектные документы редко используются в проекте. Вместо них применяются понятный и хорошо написанный код, а также хорошо составленные журналы изменений (Пример записи в журнале изменений). Разработка FreeBSD происходит по принципу «грубого консенсуса и работающего кода» Архитектурные принципы Интернета.
r151864 | bde | 2005-10-29 09:34:50 -0700 (Sat, 29 Oct 2005) | 13 lines Changed paths: M /head/lib/msun/src/e_rem_pio2f.c Use double precision to simplify and optimize arg reduction for small and medium size args too: instead of conditionally subtracting a float 17+24, 17+17+24 or 17+17+17+24 bit approximation to pi/2, always subtract a double 33+53 bit one. The float version is now closer to the double version than to old versions of itself -- it uses the same 33+53 bit approximation as the simplest cases in the double version, and where the float version had to switch to the slow general case at |x| == 2^7*pi/2, it now switches at |x| == 2^19*pi/2 the same as the double version. This speeds up arg reduction by a factor of 2 for |x| between 3*pi/4 and 2^7*pi/4, and by a factor of 7 for |x| between 2^7*pi/4 and 2^19*pi/4.
Общение между программистами улучшается благодаря использованию общего стандарта кодирования style(9).
Каналы связи. Участники проекта FreeBSD живут в разных уголках мира. Электронная почта (и в меньшей степени IRC) — это предпочтительные способы общения в проекте.
3.2. Лучшие практики для сотрудничества с проектом FreeBSD
Теперь рассмотрим несколько лучших практик для наиболее эффективного использования FreeBSD в разработке продуктов.
- Планируйте на долгосрочную перспективу
Настройте процессы, которые помогают отслеживать разработку FreeBSD. Например:
Отслеживание исходного кода FreeBSD. Проект упрощает зеркалирование своего SVN-репозитория с помощью svnsync. Наличие полной истории исходного кода полезно при отладке сложных проблем и дает ценное понимание намерений оригинальных разработчиков. Используйте систему контроля версий, которая позволяет легко объединять изменения между основной кодовой базой FreeBSD и вашим внутренним кодом.
Аннотированный листинг исходного кода показывает часть аннотированного листинга файла, на который ссылается журнал изменений в Пример записи в журнале изменений. Происхождение каждой строки исходного кода чётко видно. Аннотированные листинги, показывающие историю каждого файла, входящего в состав FreeBSD, доступны в интернете.
#REV #WHO #DATE #TEXT 176410 bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) #include <sys/cdefs.h> 176410 bde 2008-02-19 07:42:46 -0800 (Tue, 19 Feb 2008) __FBSDID("$FreeBSD$"); 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) /* __ieee754_rem_pio2f(x,y) 8870 rgrimes 1995-05-29 22:51:47 -0700 (Mon, 29 May 1995) * 176552 bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008) * return the remainder of x rem pi/2 in *y 176552 bde 2008-02-25 05:33:20 -0800 (Mon, 25 Feb 2008) * use double precision for everything except passing x 152535 bde 2005-11-16 18:20:04 -0800 (Wed, 16 Nov 2005) * use __kernel_rem_pio2() for large x 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) */ 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) 176465 bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) #include <float.h> 176465 bde 2008-02-22 07:55:14 -0800 (Fri, 22 Feb 2008) 2116 jkh 1994-08-19 02:40:01 -0700 (Fri, 19 Aug 1994) #include "math.h"Используйте привратника. Назначьте привратника для отслеживания разработки FreeBSD, чтобы следить за изменениями, которые могут потенциально повлиять на ваши продукты.
Сообщайте об ошибках в вышестоящий проект. Если вы заметили ошибку в коде FreeBSD, который используете, заполните отчёт об ошибке. Этот шаг помогает гарантировать, что вам не придётся исправлять ошибку в следующий раз, когда вы получите обновление кода из вышестоящего проекта.
- Используйте преимущества разработки релизов FreeBSD
Используйте код из ветви разработки -STABLE FreeBSD. Эти ветви разработки официально поддерживаются инженерной командой выпуска и командой безопасности FreeBSD и содержат проверенный код.
- Пожертвуйте код для снижения затрат
Основная часть затрат, связанных с разработкой продуктов, приходится на их поддержку. Пожертвовав некритичный код проекту, вы получаете выгоду в виде гораздо более широкого распространения вашего кода, чем это было бы возможно иначе. В свою очередь, это приводит к выявлению большего количества ошибок и уязвимостей безопасности, а также к обнаружению и исправлению аномалий производительности.
- Получайте эффективную поддержку
Для продуктов с жёсткими сроками рекомендуется нанять или заключить консультационное соглашение с разработчиком или компанией, имеющими опыт работы с FreeBSD. Список рассылки FreeBSD, посвящённый найму на работу является полезным каналом связи для поиска специалистов. Проект FreeBSD поддерживает галерею консультантов и консалтинговых компаний, занимающихся работой с FreeBSD. Группа сертификации BSD предлагает сертификацию для всех основных ОС, производных от BSD.
Для менее критичных задач вы можете обратиться за помощью в списки рассылки проекта. Полезное руководство о том, как правильно задавать вопросы, приведено в Как правильно задавать вопросы.
- Распространите информацию о вашем участии
Вы не обязаны афишировать своё использование FreeBSD, но это поможет как вашему делу, так и проекту.
Позволяя сообществу FreeBSD узнать, что ваша компания использует FreeBSD, вы повышаете шансы привлечь высококвалифицированных специалистов. Большой список поддержки FreeBSD также означает большее внимание среди разработчиков. Это, в свою очередь, создает более устойчивую основу для вашего будущего.
- Поддержите разработчиков FreeBSD
Иногда самый прямой способ получить нужную функциональность в FreeBSD — это поддержать разработчика, который уже занимается связанной проблемой. Помощь может варьироваться от пожертвования оборудования до прямой финансовой поддержки. В некоторых странах пожертвования проекту FreeBSD имеют налоговые льготы. У проекта есть специальный представитель по пожертвованиям, который помогает донорам. Также проект поддерживает веб-страницу, где разработчики указывают свои потребности.
В соответствии с политикой проекта FreeBSD, о всех полученных вкладах в любой форме на его веб-сайте делается запись с благодарностью.
4. Заключение
Цели проекта FreeBSD — создание и бесплатное распространение исходного кода высококачественной операционной системы. Сотрудничая с проектом FreeBSD, вы можете сократить затраты на разработку и ускорить вывод продукта на рынок в различных сценариях разработки.
Мы рассмотрели характеристики проекта FreeBSD, которые делают его отличным выбором для включения в продуктовую стратегию организации. Затем мы изучили преобладающую культуру проекта и рассмотрели эффективные способы взаимодействия с его разработчиками. В завершение статьи был приведён список лучших практик, которые могут помочь организациям в сотрудничестве с проектом.
Библиография
[Carp1996] The Architectural Principles of the Internet B. Carpenter. The Internet Architecture Board.The Internet Architecture Board. Copyright® 1996 год.
[ComGuide] Committer’s Guide The FreeBSD Project. Copyright® 2005 год.
[GoldGab2005] Innovation Happens Elsewhere: Open Source as Business Strategy Ron Goldman. Richard Gabriel. Copyright® 2005 год. Morgan-Kaufmann.
[Hub1994] Contributing to the FreeBSD Project Jordan Hubbard. Copyright® 1994-2005 гг. The FreeBSD Project.
[McKu1999] Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem Kirk McKusick. Gregory Ganger. Copyright® 1999 год.
[McKu1999-1] Twenty Years of Berkeley Unix: From AT&T-Owned to Freely Redistributable Marshall Kirk McKusick. Open Sources: Voices from the Open Source Revolution O’Reilly Inc.. Copyright® 1993 год.
[Mon2005] Why you should use a BSD style license for your Open Source Project Bruce Montague. The FreeBSD Project. Copyright® 2005 год.
[Nik2005] A project model for the FreeBSD Project Niklas Saers. Copyright® 2005 год. The FreeBSD Project.
[Nor1993] Tutorial on Good Lisp Programming Style Peter Norvig. Kent Pitman. Copyright® 1993 год.
[Nor2001] Teach Yourself Programming in Ten Years Peter Norvig. Copyright® 2001 год.
[Ray2004] How to ask questions the smart way Eric Steven Raymond. Copyright® 2004 год.
[RelEngDoc] FreeBSD Release Engineering Murray Stokely. Copyright® 2001 год. The FreeBSD Project.
1. Исходный репозиторий FreeBSD содержит историю проекта с момента его создания, а также доступны CD-ROM с более ранним кодом от CSRG.
Изменено: 8 ноября 2025 г. by Vladlen Popolitov