Создание продуктов на основе 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 поступает от участников этой группы. Права на коммит (доступ на запись) в репозиторий предоставляются тем, кто регулярно вносит вклад в проект. Права на коммит связаны с дополнительными обязанностями, и новым коммиттерам назначаются наставники, чтобы помочь им освоиться.

freebsd organization
Рисунок 1. Организация FreeBSD

Разрешение конфликтов осуществляется «Основной командой» из девяти человек, которая избирается из группы коммиттеров.

В FreeBSD нет "корпоративных" коммиттеров. Отдельные коммиттеры обязаны нести ответственность за изменения, которые они вносят в код. В Руководстве коммиттера FreeBSD Руководство коммиттера описаны правила и обязанности коммиттеров.

Модель проекта FreeBSD подробно рассматривается в Модель проекта для FreeBSD.

2.4. Процессы разработки релизов FreeBSD

Процессы разработки релизов FreeBSD играют важную роль в обеспечении высокого качества выпускаемых версий. В любой момент времени добровольцы FreeBSD поддерживают несколько линий кода (Ветви релизов FreeBSD):

  • Новые функции и критически важный код попадают в ветку разработки, также известную как ветка -CURRENT.

  • Ветви -STABLE представляют собой линии кода, ответвленные от HEAD через регулярные промежутки времени. В ветку -STABLE допускается только проверенный код. Новые функции добавляются только после их тестирования и стабилизации в ветке -CURRENT.

  • Ветви -RELEASE поддерживаются командой безопасности FreeBSD. На ветви -RELEASE допускаются только исправления ошибок для критических проблем.

freebsd branches
Рисунок 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"
Аннотированный листинг исходного кода, сгенерированный с использованием svn blame

Используйте привратника. Назначьте привратника для отслеживания разработки 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 год.

[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