diff options
author | Vladlen Popolitov <vladlen@FreeBSD.org> | 2025-09-20 11:39:29 +0000 |
---|---|---|
committer | Vladlen Popolitov <vladlen@FreeBSD.org> | 2025-09-20 11:39:29 +0000 |
commit | c6955b11122c42c882c4c402411b1f82cee0a4eb (patch) | |
tree | 963338899fe25ef814fba58e0aef2d43b5f8aae2 | |
parent | e845221809bc347c37505da6f1bd936f3009ba4f (diff) |
-rw-r--r-- | documentation/content/ru/books/dev-model/_index.adoc | 903 | ||||
-rw-r--r-- | documentation/content/ru/books/dev-model/_index.po | 3865 |
2 files changed, 4768 insertions, 0 deletions
diff --git a/documentation/content/ru/books/dev-model/_index.adoc b/documentation/content/ru/books/dev-model/_index.adoc new file mode 100644 index 0000000000..a23147d91c --- /dev/null +++ b/documentation/content/ru/books/dev-model/_index.adoc @@ -0,0 +1,903 @@ +--- +authors: + - + author: 'Niklas Saers' +bookOrder: 45 +copyright: '2002-2005 Niklas Saers' +description: 'Формальное исследование организации проекта FreeBSD' +layout: single +tags: ["model", "project model", "FreeBSD"] +title: 'Проектная модель для проекта FreeBSD' +trademarks: ["freebsd", "ibm", "ieee", "adobe", "intel", "linux", "microsoft", "opengroup", "sun", "netbsd", "general"] +--- + +//// +Copyright (c) 2002-2005 Niklas Saers +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +//// + += Проектная модель для проекта FreeBSD +:doctype: book +:toc: macro +:toclevels: 2 +:icons: font +:sectnums: +:sectnumlevels: 6 +:partnums: +:source-highlighter: rouge +:experimental: +:images-path: books/dev-model/ + +ifdef::env-beastie[] +ifdef::backend-html5[] +:imagesdir: ../../../images/{images-path} +include::shared/authors.adoc[] +include::shared/mirrors.adoc[] +include::shared/releases.adoc[] +include::shared/attributes/attributes-{{% lang %}}.adoc[] +include::shared/{{% lang %}}/teams.adoc[] +include::shared/{{% lang %}}/mailing-lists.adoc[] +include::shared/{{% lang %}}/urls.adoc[] +endif::[] +ifdef::backend-pdf,backend-epub3[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] +endif::[] + +ifndef::env-beastie[] +include::../../../../../shared/asciidoctor.adoc[] +endif::[] + +''' + +toc::[] + +[[foreword]] +[.abstract-title] +Предисловие + +До настоящего момента проект FreeBSD выпустил ряд описанных методик для выполнения различных частей работы. Однако, из-за растущего числа участников проекта, необходима модель проекта, обобщающая его структуру. footnote:[Это согласуется с законом Брукса, согласно которому добавление нового человека в задерживающийся проект сделает его ещё более задержанным, поскольку увеличит потребность в коммуникации. Модель проекта — это инструмент для снижения потребности в коммуникации.] Данная статья предоставляет такую модель проекта и передаётся в проект документации FreeBSD, где она может развиваться вместе с проектом, чтобы в любой момент времени отражать способ его работы. Она основана на [crossref:dev-model[диссертации, Saers,2003]]. + +Я хотел бы поблагодарить следующих людей за то, что они нашли время объяснить мне непонятные моменты и проверить документ. + +* Andrey A. Chernov mailto:ache@freebsd.org[ache@freebsd.org] +* Bruce A. Mah mailto:bmah@freebsd.org[bmah@freebsd.org] +* Dag-Erling Smørgrav mailto:des@freebsd.org[des@freebsd.org] +* Giorgos Keramidas mailto:keramida@freebsd.org[keramida@freebsd.org] +* Ingvil Hovig mailto:ingvil.hovig@skatteetaten.no[ingvil.hovig@skatteetaten.no] +* Jesper Holck mailto:jeh.inf@cbs.dk[jeh.inf@cbs.dk] +* John Baldwin mailto:jhb@freebsd.org[jhb@freebsd.org] +* John Polstra mailto:jdp@freebsd.org[jdp@freebsd.org] +* Kirk McKusick mailto:mckusick@freebsd.org[mckusick@freebsd.org] +* Mark Linimon mailto:linimon@freebsd.org[linimon@freebsd.org] +* Marleen Devos +* Niels Jørgenssen mailto:nielsj@ruc.dk[nielsj@ruc.dk] +* Nik Clayton mailto:nik@freebsd.org[nik@freebsd.org] +* Poul-Henning Kamp mailto:phk@freebsd.org[phk@freebsd.org] +* Simon L. Nielsen mailto:simon@freebsd.org[simon@freebsd.org] + +[[overview]] +== Обзор +Модель проекта — это способ снижения накладных расходов на коммуникации в проекте. Как показано в [crossref:dev-model[brooks, Brooks, 1995]], увеличение числа участников проекта приводит к экспоненциальному росту коммуникаций в проекте. За последние годы FreeBSD значительно увеличил как количество активных пользователей, так и коммиттеров, что соответственно привело к росту коммуникаций. Данная модель проекта поможет снизить эти накладные расходы за счёт предоставления актуального описания проекта. + +Во время выборов в Core в 2002 году Марк Мюррей заявил: «Я против длинного свода правил, так как это удовлетворяет склонности к юриспруденции и противоречит техноцентричности, в которой проект так нуждается.» [crossref:dev-model[bsd-election2002, FreeBSD, 2002B]]. Эта модель проекта не предназначена для того, чтобы оправдывать создание ограничений для разработчиков, а служит инструментом для облегчения координации. Она призвана описывать проект, давая обзор того, как выполняются различные процессы. Это введение в то, как работает проект FreeBSD. + +Модель проекта FreeBSD будет описана по состоянию на 1 июля 2004 года. Она основана на работе Нильса Йоргенсена [crossref:dev-model[jorgensen2001, Jørгенсен, 2001]], официальных документах FreeBSD, обсуждениях в списках рассылки FreeBSD и интервью с разработчиками. + +После определения используемых терминов в этом документе будет описана организационная структура (включая описания ролей и линии коммуникации), рассмотрена модель методологии, а после представления инструментов, используемых для контроля процессов, будут описаны определенные процессы. В заключение будут представлены основные подпроекты проекта FreeBSD. + +[crossref:dev-model[freebsd-developer-handbook, FreeBSD, 2002A]] Разделы 1.2 и 1.3 описывают видение и архитектурные принципы проекта. Видение сформулировано как: "Создать наилучший пакет операционной системы, подобной UNIX®, с должным уважением к оригинальной идеологии программных инструментов, а также к удобству использования, производительности и стабильности." Архитектурные принципы помогают определить, находится ли проблема, которую кто-то хочет решить, в рамках проекта + +[[definitions]] +== Определения + +[[ref-activity]] +=== Активность + +"Активность" — это элемент работы, выполняемый в ходе проекта [crossref:dev-model[ref-pmbok, PMI, 2000]]. У неё есть результат, который ведёт к достижению цели. Такой результат может быть либо входом для другой активности, либо частью поставки процесса. + +[[def-process]] +=== Процесс + +Процесс — это ряд действий, ведущих к определенному результату. Процесс может состоять из одного или нескольких подпроцессов. Примером процесса является проектирование программного обеспечения. + +[[ref-hat]] +=== Роль (hat) + +"Hat" (шляпа) является синонимом роли. Роль имеет определенные обязанности в процессе и ответственность за результат процесса. Роль выполняет действия. Четко определено, по каким вопросам участники проекта и люди вне проекта должны обращаться к ответственному, выполняющему эту роль. + +[[ref-outcome]] +=== Результат + +«Результат» — это конечный продукт процесса. Это синоним понятия «поставляемый результат», который определяется как «любой измеримый, осязаемый, проверяемый результат, итог или элемент, который должен быть произведён для завершения проекта или его части. Часто используется в более узком смысле в отношении внешнего поставляемого результата, который подлежит утверждению спонсором проекта или заказчиком» согласно [crossref:dev-model[ref-pmbok, PMI, 2000]]. Примерами результатов являются программное обеспечение, принятое решение или написанный отчёт. + +[[ref-freebsd]] +=== FreeBSD + +Говоря "FreeBSD", мы подразумеваем UNIX-подобную операционную систему FreeBSD, основанную на BSD, тогда как говоря "Проект FreeBSD", мы подразумеваем организацию проекта. + +[[model-orgstruct]] +== Организационная структура + +Хотя никто не является владельцем FreeBSD, организация FreeBSD разделена на ядро, коммиттеров и участников и является частью сообщества FreeBSD, которое существует вокруг неё. + +Структура проекта FreeBSD (в порядке убывания полномочий) + +[.informaltable] +[cols="1,1", options="header"] +|=== +| Группа +| Количество людей + +|Основные участники +|9 + +|Коммиттеры +|318 + +|Участники +|~3000 +|=== + +Количество коммиттеров было определено путем анализа журналов CVS с 1 января 2004 года по 31 декабря 2004 года, а список участников — путем просмотра перечня внесенных изменений и отчетов о проблемах. + +Основной ресурс сообщества FreeBSD — это его разработчики: коммиттеры и контрибьюторы. Именно их вклад позволяет проекту развиваться. Обычные разработчики называются участниками (контрибьюторами). По состоянию на 1 января 2003 года в проекте насчитывается около 5500 контрибьюторов. + +Коммиттеры — это разработчики, обладающие привилегией вносить изменения. Обычно это наиболее активные разработчики, которые готовы тратить своё время не только на интеграцию собственного кода, но и на интеграцию кода, предоставленного разработчиками без такой привилегии. Они также выбирают основную команду и имеют доступ к закрытым обсуждениям. + +Проект можно разделить на четыре отдельные части, и большинство разработчиков сосредоточат своё участие на одной из частей FreeBSD. Эти четыре части — разработка ядра, разработка пользовательского пространства, порты и документация. Под базовой системой подразумеваются как ядро, так и пользовательское пространство. + +Это разделение изменяет нашу таблицу следующим образом: + +Структура проекта FreeBSD с участниками, имеющими права на запись, по категориям + +[.informaltable] +[cols="1,1,1", options="header"] +|=== +| Группа +| Категория +| Количество людей + +|Основные участники +| +|9 + +|Коммиттеры +|Базовый +|164 + +| +|Docs +|45 + +| +|Порты +|166 + +| +|Total +|374 + +|Участники +| +|~3000 +|=== + +Количество коммиттеров по областям было определено путем анализа журналов CVS с 1 января 2004 года по 31 декабря 2004 года. Обратите внимание, что многие коммиттеры работают в нескольких областях, поэтому общее число больше реального количества коммиттеров. Общее количество активных уникальных коммиттеров на июнь 2022 года составляло 317. + +Коммиттеры делятся на три группы: коммиттеры, занимающиеся только одной областью проекта (например, файловыми системами), коммиттеры, участвующие только в одном подпроекте, и коммиттеры, вносящие изменения в разные части кода, включая подпроекты. Поскольку некоторые коммиттеры работают над разными частями, общее количество в разделе коммиттеров таблицы выше, чем в предыдущей таблице. + +Ядро является основным строительным блоком FreeBSD. Хотя пользовательские приложения защищены от сбоев в других пользовательских приложениях, вся система уязвима от ошибок в ядре. Это, в сочетании с огромным количеством зависимостей в ядре и тем, что нелегко увидеть все последствия изменения ядра, требует от разработчиков относительно полного понимания ядра. Множественные усилия по разработке в ядре также требуют более тесной координации, чем пользовательские приложения. + +Основные утилиты, известные как пользовательское окружение (userland), предоставляют интерфейс, который определяет FreeBSD, включая пользовательский интерфейс, общие библиотеки и внешние интерфейсы для подключения клиентов. В настоящее время 162 человека участвуют в разработке и поддержке пользовательского окружения, многие из которых являются сопровождающими (maintainers) для своей части кода. Вопросы сопровождения будут рассмотрены в разделе crossref:dev-model[role-maintainer,Сопровождение]. + +Документация обрабатывается crossref:dev-model[sub-project-documentation, Проектом документации FreeBSD] и включает все документы, связанные с проектом FreeBSD, включая веб-страницы. В течение 2004 года 101 человек внесли изменения в Проект документации FreeBSD. + +Порты — это коллекция метаданных, необходимых для корректной сборки программных пакетов в FreeBSD. Например, порт для веб-браузера Mozilla содержит информацию о том, откуда загружать исходный код, какие патчи применять и как, а также как пакет должен быть установлен в системе. Это позволяет автоматизированным инструментам загружать, собирать и устанавливать пакеты. На момент написания доступно более 12600 портов footnote:[Статистика получена подсчётом количества записей в файле, загруженном portsdb на 1 апреля 2005 года. portsdb является частью порта sysutils/portupgrade.], начиная от веб-серверов и игр до языков программирования и большинства типов приложений, используемых на современных компьютерах. Порты подробно рассматриваются в разделе crossref:dev-model[sub-project-ports, Подпроект Ports]. + +[[methodology-model]] +== Методологическая модель + +[[development-model]] +=== Модель разработки + +Не существует определенной модели того, как люди пишут код в FreeBSD. Однако Нильс Йоргенссен предложил модель того, как написанный код интегрируется в проект. + +Модель Йоргенссена для интеграции изменений + +[.informaltable] +[cols="1,1,1", options="header"] +|=== +| Этап +| Следующий, если успешно +| Следующий, если неудачно + +|программирование +|рецензирование +| + +|рецензирование +|предварительная проверка перед коммитом +|программирование + +|предварительная проверка перед коммитом +|релиз для разработки +|программирование + +|релиз для разработки +|параллельная отладка +|программирование + +|параллельная отладка +|релиз для производства +|программирование + +|релиз для производства +| +|программирование +|=== + +"Релиз для разработки" — это ветка FreeBSD-CURRENT ("-CURRENT"), а "релиз для производства" — ветка FreeBSD-STABLE ("-STABLE") [crossref:dev-model[jorgensen2001, Jørgensen, 2001]]. + +Это модель для одного изменения, которая показывает, что после написания кода разработчики ищут рецензирование сообщества и пытаются интегрировать это изменение в свои собственные системы. После интеграции изменения в версию разработки, называемую FreeBSD-CURRENT, оно тестируется многими пользователями и разработчиками сообщества FreeBSD. После достаточного тестирования оно объединяется с производственной версией, называемой FreeBSD-STABLE. Если каждая стадия не завершена успешно, разработчику необходимо вернуться, внести изменения в код и перезапустить процесс. Интеграция изменения в -CURRENT или -STABLE называется выполнением коммита. + +Йоргенсен обнаружил, что большинство разработчиков FreeBSD работают индивидуально, то есть эта модель используется параллельно многими разработчиками в различных текущих процессах разработки. Разработчик также может работать над несколькими изменениями одновременно, поэтому, ожидая рецензирования или тестирования одного или нескольких своих изменений, он может писать другое изменение. + +Поскольку каждый коммит представляет собой инкрементальное изменение, это модель с очень высокой степенью инкрементальности. Коммиты происходят настолько часто, что за один год footnote:[Для получения этого числа был исследован период с 1 января 2004 года по 31 декабря 2004 года.], было сделано 85427 коммитов, что составляет в среднем 233 коммита в день. + +В рамках "программирования" в модели Йоргенсена, каждый программист имеет свой собственный стиль работы и следует своим собственным моделям разработки. Этот этап вполне мог бы называться "разработкой", так как он включает сбор и анализ требований, системное и детальное проектирование, реализацию и проверку. Однако, единственным результатом этих подэтапов являются исходный код или документация системы. + +С точки зрения пошаговой модели (такой как каскадная модель), остальные этапы можно рассматривать как дальнейшую проверку и интеграцию системы. Эта интеграция системы также важна для определения того, будет ли изменение принято сообществом. До момента фиксации кода разработчик волен выбирать, насколько активно он будет обсуждать его с остальными участниками проекта. Чтобы -CURRENT мог выполнять роль буфера (позволяя откатывать идеи, которые оказались с невыявленными недостатками), минимальный срок, в течение которого изменения должны оставаться в -CURRENT перед слиянием в -STABLE, составляет 3 дня. Такое слияние называется MFC (Merge From Current). + +Важно обратить внимание на слово "изменение". Большинство коммитов не содержат радикально новых функций, а представляют собой обновления для поддержки. + +Единственными исключениями из этой модели являются исправления безопасности и изменения в функциях, объявленных устаревшими в ветке -CURRENT. В этих случаях изменения могут быть внесены напрямую в ветку -STABLE. + +В дополнение к множеству людей, работающих над проектом, существует множество связанных проектов в рамках FreeBSD. Это могут быть проекты, разрабатывающие совершенно новые функции, подпроекты или проекты, результаты которых интегрируются в FreeBSD footnote:[Например, разработка стека Bluetooth начиналась как подпроект, пока не была признана достаточно стабильной для включения в ветку -CURRENT. Теперь это часть основной системы FreeBSD.]. Эти проекты вписываются в FreeBSD так же, как и обычные разработки: они создают код, который интегрируется с проектом FreeBSD. Однако некоторые из них (например, Ports и Documentation) имеют привилегию применяться к обеим веткам или коммитить напрямую как в -CURRENT, так и в -STABLE. + +Не существует стандартов по выполнению проектирования, также как и централизованного репозитория для хранения проектов. Основной дизайн взят из 4.4BSD. footnote:[По словам Кирка Маккузика, после 20 лет разработки операционных систем UNIX, интерфейсы в основном уже определены. Поэтому нет необходимости в большом количестве проектирования. Однако новые применения системы и новое оборудование приводят к тому, что некоторые реализации становятся более выгодными по сравнению с ранее предпочитаемыми. Одним из примеров является появление веб-браузинга, который превратил обычное TCP/IP-соединение в короткие всплески данных, а не в устойчивый поток за более длительный период времени.] Поскольку проектирование является частью этапа "Программирование" в модели Йоргенсена, каждый разработчик или подпроект сам решает, как это должно выполняться. Даже если проектирование должно храниться в централизованном репозитории, результаты этапов проектирования будут иметь ограниченную полезность, так как различия в методологиях сделают их плохо совместимыми, если вообще совместимыми. Для общего проектирования проекта, проект полагается на подпроекты, которые договариваются о совместимых интерфейсах между собой, а не на диктат интерфейсов. + +[[release-branches]] +=== Ветви релизов + +Версии FreeBSD лучше всего иллюстрируются деревом с множеством ветвей, где каждая основная ветвь представляет основную версию. Минорные версии представлены ветвями основных ветвей. + +В следующем дереве релизов стрелки, следующие друг за другом в определенном направлении, представляют ветку. Прямоугольники со сплошными линиями и ромбы обозначают официальные релизы. Прямоугольники с пунктирными линиями представляют ветку разработки на тот момент. Ветки безопасности обозначены овалами. Ромбы отличаются от прямоугольников тем, что они представляют развилку, то есть место, где ветка разделяется на две ветки, одна из которых становится подветкой. Например, на 4.0-RELEASE ветка 4.0-CURRENT разделилась на 4-STABLE и 5.0-CURRENT. На 4.5-RELEASE ветка разветвилась на ветку безопасности под названием RELENG_4_5. + +.Дерево релизов FreeBSD +image::branches.png["Обратитесь к таблице ниже для удобной версии для экранных дикторов."] + +[.informaltable] +[cols="1,1,1", options="header"] +|=== +| Основные выпуски +| Форкнут из +| Следующие минорные выпуски + +|... +| +| + +|3.0 Current (ветка разработки) +| +|Ветки Releng 3: выпуски с 3.0 Release по 3.5 Release, ведущие к выпуску 3.5.1 Release и последующей ветке 3 Stable + +|4.0 Current (ветка разработки) +|Релиз 3.1 +|Ветви Releng 4: релизы с 4.1 по 4.6 (и релиз 4.6.2), затем релизы с 4.7 по 4.11 (все, начиная с релиза 4.3, также ведущие к ветви Releng_4_n), и последующая ветвь релиза 4 + +|5.0 Current (ветка разработки) +|Релиз 4.0 +|Ветви Releng 5: Релизы с 5.0 до 5.4 (за исключением 5.0 и 5.3, которые также ведут к ветке Releng_5_n), и последующая ветка релиза 5 + +|6.0 Current (ветка разработки) +|Релиз 5.3 +| + +|... +| +| + +|=== + +Последняя версия -CURRENT всегда обозначается как -CURRENT, а последний релиз -STABLE всегда обозначается как -STABLE. На этом рисунке -STABLE относится к 4-STABLE, а -CURRENT относится к 5.0-CURRENT после 5.0-RELEASE. [crossref:dev-model[freebsd-releng, FreeBSD, 2002E]] + +«Основной выпуск» всегда создаётся из ветки -CURRENT. Однако ветка -CURRENT не обязательно должна разветвляться в этот момент, а может сосредоточиться на стабилизации. Примером этого является то, что после 3.0-RELEASE, 3.1-RELEASE также был продолжением ветки -CURRENT, и -CURRENT не стал настоящей веткой разработки до тех пор, пока не был выпущен этот релиз и не была создана ветка 3-STABLE. Когда -CURRENT снова становится веткой разработки, за ним может следовать только основной выпуск. Ожидается, что ветка 5-STABLE будет отделена от 5.0-CURRENT примерно на момент выпуска 5.3-RELEASE. Только после отделения 5-STABLE ветка разработки получит название 6.0-CURRENT. + +"Минорный релиз" создается из ветки -CURRENT после основного релиза или из ветки -STABLE. + +Начиная с версии 4.3-RELEASE footnote:[Первым релизом, для которого это действительно произошло, был 4.5-RELEASE, но ветки безопасности были созданы одновременно для 4.3-RELEASE и 4.4-RELEASE.], когда выпускается минорный релиз, он становится «веткой безопасности». Это предназначено для организаций, которые не хотят следовать ветке -STABLE и потенциальным новым/изменённым функциям, которые она предлагает, но вместо этого требуют абсолютно стабильной среды, обновляемой только для внедрения исправлений безопасности. footnote:[Здесь вы видите терминологическое пересечение со словом «стабильный», что приводит к некоторой путанице. Ветка -STABLE по-прежнему является веткой разработки, цель которой — быть полезной для большинства пользователей. Если для системы неприемлемо получать изменения, которые не были объявлены на момент её развёртывания, такая система должна работать на ветке безопасности.] + +Каждое обновление в ветке безопасности называется "уровнем исправления" (patchlevel). Для каждого выполненного улучшения безопасности номер уровня исправления увеличивается, что позволяет легко отслеживать, какие улучшения безопасности были реализованы. В случаях особенно серьезных уязвимостей безопасности может быть выпущен полностью новый релиз из ветки безопасности. Примером этого является 4.6.2-RELEASE. + +[[model-summary]] +=== Сводка модели + +Для подведения итогов, модель разработки FreeBSD можно представить в виде следующего дерева: + +.Общая модель разработки +image::freebsd-code-model.png["Обратитесь к параграфам ниже для версии, удобной для экранных дикторов."] + +Дерево разработки FreeBSD с текущими усилиями по разработке и непрерывной интеграцией. + +Дерево символизирует версии выпусков, где основные версии порождают новые главные ветви, а второстепенные версии являются версиями главной ветви. Верхняя ветвь — это ветвь -CURRENT, в которую интегрируется вся новая разработка, а ветвь -STABLE находится непосредственно под ней. Под ветвью -STABLE находятся старые, неподдерживаемые версии. + +Проект находится в тумане постоянной разработки, и разработчики выбирают модели разработки, которые считают подходящими. Результаты их работы затем интегрируются в -CURRENT, где проходят параллельную отладку, и наконец объединяются из -CURRENT в -STABLE. Исправления безопасности объединяются из -STABLE в ветки безопасности. + +Многие коммиттеры имеют специальную область ответственности. Эти роли называются "hats" (шляпами). Эти роли могут быть либо проектными ролями, например, офицер по связям с общественностью, либо сопровождающим определённой части кода. Поскольку это проект, где люди добровольно уделяют своё свободное время, люди с назначенными ролями не всегда доступны. Поэтому они должны назначить заместителя, который может выполнять эту роль в их отсутствие. Другой вариант — передать роль группе. + +Многие из этих ролей не формализованы. Формализованные роли имеют устав, в котором указаны точные цели, привилегии и обязанности. Написание таких уставов — новая часть проекта, поэтому оно ещё не завершено для всех ролей. Эти описания ролей не являются формализацией, а скорее представляют собой краткое описание роли со ссылками на устав, где он доступен, и контактными адресами. + +[[sect-hats]] +== Ответственные + +[[general-hats]] +=== Стандартные роли + +[[role-contributor]] +==== Участник (контрибьютор) + +Участник вносит вклад в проект FreeBSD в качестве разработчика, автора, отправляя отчеты о проблемах или другими способами способствуя прогрессу проекта. Участник не имеет особых привилегий в проекте FreeBSD. [crossref:dev-model[freebsd-contributors, FreeBSD, 2002F]] + +[[role-committer]] +==== Коммиттер + +Человек, обладающий необходимыми привилегиями для добавления своего кода или документации в репозиторий. Коммиттер совершил коммит в течение последних 12 месяцев. [crossref:dev-model[freebsd-developer-handbook, FreeBSD, 2000A]] Активный коммиттер — это коммиттер, который в среднем совершал один коммит в месяц в течение этого времени. + +Стоит отметить, что нет технических препятствий, которые могли бы помешать кому-либо, получившему права на коммиты в основном или подпроекте, делать коммиты в частях исходного кода проекта, для которых у коммиттера нет явного разрешения на изменение. Однако, при желании внести изменения в части, с которыми коммиттер ранее не работал, следует изучить логи, чтобы понять, что происходило в этой области ранее, а также прочитать файл MAINTAINERS, чтобы узнать, есть ли у сопровождающего этой части какие-либо особые требования к внесению изменений в код. + +[[role-core]] +==== Основная команда (Core Team) + +Основная команда избирается коммиттерами из числа коммиттеров и выполняет функции совета директоров проекта FreeBSD. Она повышает активных участников до коммиттеров, назначает людей на четко определенные роли (hats) и является окончательным арбитром при принятии решений о направлении развития проекта. На 1 июля 2004 года в состав основной команды входило 9 членов. Выборы проводятся каждые два года. + +[[role-maintainer]] +==== Сопровождение + +Сопровождение означает, что человек ответственен за то, что допускается в определённую часть кода, и имеет решающее слово в случае разногласий по поводу кода. Это включает в себя как активную работу, направленную на стимулирование участников (контрибьюторов), так и реактивную работу по рецензированию коммитов. + +В исходном коде FreeBSD есть файл MAINTAINERS, содержащий краткое описание того, как каждый сопровождающий предпочитает получать вклады. Наличие этого уведомления и контактной информации позволяет разработчикам сосредоточиться на разработке, а не застревать в медленной переписке, если сопровождающий будет недоступен в течение некоторого времени. + +Если сопровождающий недоступен в течение неоправданно долгого времени, и другие люди выполняют значительный объем работы, сопровождение может быть передано без согласия сопровождающего. Это основано на позиции, что сопровождение должно быть продемонстрировано, а не заявлено. + +Сопровождение определенного участка кода — это роль, которая не осуществляется коллективно. + +[[official-hats]] +=== Официальные Роли + +Официальные роли в проекте FreeBSD — это более или менее формализованные и в основном административные должности. Они обладают полномочиями и ответственностью в своей области. В следующем списке показаны направления ответственности и дано описание каждой роли, включая информацию о том, кто её занимает. + +[[role-doc-manager]] +==== Менеджер проекта документации + +Архитектор crossref:dev-model[sub-project-documentation, Проекта документации FreeBSD] отвечает за определение и контроль целей документации для коммиттеров в проекте Документации, за которым они присматривают. + +Роль поддерживается: Командой DocEng mailto:doceng@FreeBSD.org[doceng@FreeBSD.org]. https://www.freebsd.org/internal/doceng/[Устав DocEng]. + +[[role-postmaster]] +==== Postmaster + +Postmaster отвечает за корректную доставку почты на адреса электронной почты коммиттеров. Также он отвечает за работоспособность почтовых рассылок и должен принимать меры против возможных сбоев в работе почты, таких как троллинг-, спам- и вирус-фильтры. + +Текущий руководитель: Команда почтовых серверов mailto:postmaster@FreeBSD.org[postmaster@FreeBSD.org]. + +[[role-release-coordination]] +==== Координация выпусков + +Обязанности команды выпуска релизов включают + +* Установка, публикация и соблюдение графика выпуска официальных релизов +* Документирование и формализация процедур выпуска релизов +* Создание и поддержка веток кода +* Согласование с командами Ports и Documentation для выпуска обновленного набора пакетов и документации вместе с новыми релизами +* Координация с командой безопасности для того, чтобы готовящиеся выпуски не были затронуты недавно обнаруженными уязвимостями. + +Дополнительная информация о процессе разработки доступна в разделе crossref:dev-model[process-release-engineering, Выпуск релизов]. + +[[role-releng]] +Роль поддерживается: командой выпуск релизов (Release Engineering) mailto:re@FreeBSD.org[re@FreeBSD.org]. https://www.freebsd.org/releng/charter/[ Устав Release Engineering]. + +[[role-pr-cr]] +==== Отношения с общественностью и корпоративные связи + +Обязанности отдела по связям с общественностью и корпоративным отношениям включают: + +* Публиковать пресс-релизы при возникновении событий, важных для проекта FreeBSD. +* Быть официальным контактным лицом для корпораций, тесно сотрудничающих с проектом FreeBSD. +* Принимать меры для продвижения FreeBSD как в сообществе Open Source, так и в корпоративном мире. +* Обрабатывать список рассылки "freebsd-advocacy". + +Эта роль в настоящее время не занята. + +[[role-security-officer]] +==== Ответственный за безопасность (Security Officer) + +Основная обязанность Ответственного за безопасность — координировать обмен информацией с сообществом безопасности и проектом FreeBSD. Ответственный за безопасность также принимает меры при поступлении сообщений о проблемах безопасности и способствует активному развитию в области безопасности. + +Из-за опасений, что информация об уязвимостях может попасть к злоумышленникам до выпуска исправления, только Ответственный за безопасность, включающий руководителя, заместителя и двух членов crossref:dev-model[role-core, Core Team], получает конфиденциальную информацию о проблемах безопасности. Однако для создания или внедрения исправления Ответственный за безопасность может обратиться к команде mailto:security-team@FreeBSD.org[security-team@FreeBSD.org] для помощи в выполнении работы. + +[[role-repo-manager]] +==== Менеджер репозитория исходного кода + +Менеджер репозитория исходного кода — единственный, кому разрешено напрямую изменять репозиторий без использования инструмента crossref:dev-model[tool-git, Git]. В его обязанности входит оперативное решение технических проблем, возникающих в репозитории. Менеджер репозитория исходного кода имеет право отменять коммиты, если это необходимо для устранения технических проблем с Git. + +Роль принадлежит: Менеджеру репозитория исходного кода mailto:clusteradm@FreeBSD.org[clusteradm@FreeBSD.org]. + +[[role-election-manager]] +==== Менеджер выборов + +Менеджер выборов отвечает за процесс crossref:dev-model[process-core-election,выборов Core Team]. Он отвечает за проведение и поддержание системы выборов, а также является окончательной инстанцией в случае незначительных непредвиденных событий в процессе выборов. Крупные непредвиденные события должны обсуждаться с crossref:dev-model[role-core,Core Team] + +Роль выполняется только во время выборов. + +[[role-webmaster]] +==== Управление веб-сайтом + +Роль управления веб-сайтом отвечает за координацию развертывания обновленных веб-страниц на зеркалах по всему миру, за общую структуру основного веб-сайта и систему, на которой он работает. Управление должно согласовывать содержимое с crossref:dev-model[документацией подпроекта, Документационный проект FreeBSD] и выступает в роли сопровождающего для дерева "www". + +Роль поддерживается: веб-мастеры FreeBSD mailto:www@FreeBSD.org[www@FreeBSD.org]. + +[[role-ports-manager]] +==== Менеджер портов + +Менеджер портов выступает в роли связующего звена между crossref:dev-model[sub-project-ports, Подпроектом портов] и основным проектом, и все запросы от проекта должны направляться менеджеру портов. + +Роль принадлежит: Команде управления портами mailto:portmgr@FreeBSD.org[portmgr@FreeBSD.org]. https://www.freebsd.org/portmgr/charter/[Устав Portmgr]. + +[[role-standards]] +==== Стандарты + +Роль стандартов отвечает за обеспечение соответствия FreeBSD стандартам, которым система следует, отслеживает развитие этих стандартов и уведомляет разработчиков FreeBSD о важных изменениях. Это позволяет разработчикам действовать проактивно и сокращать время между обновлением стандартов и достижением соответствия в FreeBSD. + +Текущий ответственный: Garrett Wollman mailto:wollman@FreeBSD.org[wollman@FreeBSD.org]. + +[[role-core-secretary]] +==== Секретарь Core Team + +Основная обязанность Секретаря Core Team — составление черновиков и публикация окончательных отчётов Core Team. Секретарь также ведёт повестку Core Team, гарантируя, что ни один вопрос не останется без решения. + +Ответственный в настоящее время: {rene}. + +[[role-bugmeister]] +==== Ответственный за ошибки (Bugmeister) + +Ответственный за ошибки (Bugmeister) отвечает за поддержание базы данных по обслуживанию в рабочем состоянии, за корректную категоризацию записей и отсутствие недействительных записей. Они курируют исправителей ошибок (bugbusters). + +Текущий ответственный: команда Bugmeister Team mailto:bugmeister@FreeBSD.org[bugmeister@FreeBSD.org]. + +[[role-donations]] +==== Представитель по привлечению пожертвований + +Задача представителя по привлечению пожертвований — связывать разработчиков, которым что-то нужно, с людьми или организациями, готовыми сделать пожертвование. + +Роль поддерживается: Отделом по привлечению пожертвований mailto:donations@FreeBSD.org[donations@FreeBSD.org]. https://www.freebsd.org/donations/[ Устав Отдела по привлечению пожертвований]. + +[[role-admin]] +==== Администратор (Admin) + +(Также называется "Администратор кластера FreeBSD") + +Команда администраторов состоит из людей, ответственных за администрирование компьютеров, которые проект использует для распределённой работы и синхронизации коммуникации. В основном в неё входят те, кто имеет физический доступ к серверам. + +Роль поддерживается: командой администраторов mailto:admin@FreeBSD.org[admin@FreeBSD.org]. + +[[proc-depend-hats]] +=== Процессозависимые роли + +[[role-problem-originator]] +==== Инициатор отчета + +Лицо, изначально ответственное за подачу отчета о проблеме. + +[[role-bugbuster]] +==== Исправитель ошибок (Bugbuster) + +Человек, который либо найдет подходящего специалиста для решения проблемы, либо закроет PR, если он является дубликатом или по другим причинам не представляет интереса. + +[[role-mentor]] +==== Наставник (Mentor) + +Наставник — это коммиттер, который берет на себя задачу ознакомить нового коммиттера с проектом. Это включает в себя проверку корректности настройки окружения нового коммиттера, обучение доступным инструментам, необходимым для работы, а также разъяснение ожидаемого поведения. + +[[role-vendor]] +==== Поставщик + +Лицо (лица) или организация, от которых поступает внешний код и которым отправляются исправления. + +[[role-reviewer]] +==== Рецензенты + +Люди из списка рассылки, куда отправлен запрос на рецензирование. + +Следующий раздел описывает установленные процессы проекта. Вопросы, не охваченные этими процессами, решаются по мере возникновения, исходя из сложившейся практики в аналогичных случаях. + +[[model-processes]] +== Процессы + +[[proc-addrem-committer]] +=== Добавление новых и удаление старых коммиттеров + +Основная команда (Core Team) отвечает за предоставление и отзыв прав на коммит для участников. Это может быть сделано только через голосование в списке рассылки Core Team. Подпроекты ports и documentation могут предоставлять права на коммит людям, работающим над этими проектами, но на данный момент не отзывали такие права. + +Обычно кандидата в коммиттеры основной команде (Core Team) рекомендуют коммиттеры. Для участников или посторонних обращаться в Core Team с просьбой стать коммиттером считается неблагоразумным и такая просьба, как правило, отклоняется. + +Если область, представляющая особый интерес для разработчика, потенциально пересекается с зоной ответственности других сопровождающих, запрашивается мнение этих сопровождающих. Однако часто именно этот сопровождающий рекомендует разработчика. + +Когда участнику предоставляется статус коммиттера, ему назначается наставник. В общем случае коммиттер, который рекомендовал нового коммиттера, берет на себя обязанности наставника для нового коммиттера. + +Когда участнику предоставляется право коммита (commit bit), отправляется подписанное с помощью crossref:dev-model[tool-pgp, Pretty Good Privacy] письмо от crossref:dev-model[role-core-secretary, Секретаря Core Team], crossref:dev-model[role-ports-manager, Менеджера портов] или nik@freebsd.org на адреса admins@freebsd.org, назначенного наставника, нового коммиттера и Core Team, подтверждая одобрение новой учётной записи. Затем наставник собирает строку пароля, crossref:dev-model[tool-ssh2, Secure Shell] открытый ключ и PGP-ключ от нового коммиттера и отправляет их crossref:dev-model[role-admin, Администратору]. Когда новая учётная запись создана, наставник активирует право коммита и проводит нового коммиттера через остальные этапы начального процесса. + +.Процесс вкратце: добавление нового коммиттера +image::proc-add-committer.png["Обратитесь к абзацу ниже для версии, совместимой с программами чтения с экрана."] + +Когда участник отправляет фрагмент кода, принимающий коммиттер может предложить предоставить этому участнику права на коммит. Если он рекомендует это основной команде (Core Team), команда проводит голосование по этой рекомендации. Если голосование завершается в пользу предложения, новому коммиттеру назначается наставник, и новый коммиттер должен отправить свои данные администраторам для создания учётной записи. После этого новый коммиттер готов сделать свой первый коммит. По традиции, это делается путём добавления своего имени в список коммиттеров. + +Recall that a committer is considered to be someone who has committed code during the past 12 months. However, it is not until after 18 months of inactivity have passed that commit privileges are eligible to be revoked. [crossref:dev-model[freebsd-expiration-policy, FreeBSD, 2002H]] There are, however, no automatic procedures for doing this. For reactions concerning commit privileges not triggered by time, see crossref:dev-model[process-reactions,section 1.5.8]. + +.Процесс: удаление коммиттера +image::proc-rm-committer.png["Обратитесь к абзацу ниже для версии, совместимой с программами чтения с экрана."] + +Когда Основная команда (Core Team) принимает решение очистить список коммиттеров, они проверяют, кто не делал коммитов за последние 18 месяцев. Коммиттеры, которые этого не сделали, лишаются прав на коммит, и их учетные записи удаляются администраторами. + +Также возможно для коммиттеров запросить отзыв их права на коммит, если по какой-то причине они больше не будут активно участвовать в проекте. В этом случае, право может быть восстановлено позже по запросу коммиттера. + +Роли в этом процессе: + +. crossref:dev-model[role-core, Основная команда (Core Team)] +. crossref:dev-model[role-contributor, Участник (контрибьютор)] +. crossref:dev-model[role-committer, Коммиттер] +. crossref:dev-model[role-maintainer, Сопровождение] +. crossref:dev-model[role-mentor, Наставник (Mentor)] + +[crossref:dev-model[freebsd-bylaws, FreeBSD, 2000A]] [crossref:dev-model[freebsd-expiration-policy, FreeBSD, 2002H]] [crossref:dev-model[freebsd-new-account, FreeBSD, 2002I]] + +[[committing]] +=== Коммит кода + +Добавление нового или изменённого кода — один из наиболее частых процессов в проекте FreeBSD и обычно происходит несколько раз в день. Фиксация кода может быть выполнена только "коммиттером". Коммиттеры фиксируют либо код, написанный ими самими, либо код, переданный им, либо код, отправленный через crossref:dev-model[model-pr,отчёт о проблеме]. + +Когда разработчик пишет нетривиальный код, он должен запросить рецензирование кода у сообщества. Это делается путём отправки письма в соответствующий список рассылки с просьбой о рецензировании. Перед отправкой кода на проверку разработчик должен убедиться, что он корректно компилируется со всем деревом исходного кода и что все соответствующие тесты выполняются. Это называется "предварительной проверкой перед коммитом". Когда получен вклад в виде кода, коммиттер должен просмотреть его и протестировать таким же образом. + +Когда изменение фиксируется в части исходного кода, которая была получена от внешнего crossref:dev-model[role-vendor,поставщика], сопровождающий должен убедиться, что патч передан обратно поставщику. Это соответствует философии открытого исходного кода и упрощает синхронизацию с внешними проектами, так как патчи не придётся применять заново при каждом новом выпуске. + +После того как код был доступен для рецензирования и дальнейшие изменения не требуются, код вносится в ветку разработки -CURRENT. Если изменение применимо и для ветки -STABLE, или других веток, коммиттер устанавливает отсчёт времени для "слияния из текущей" ("MFC"). После того как пройдёт количество дней, выбранное коммиттером при установке MFC, автоматически будет отправлено письмо коммиттеру с напоминанием внести изменения в ветку -STABLE (а также, возможно, в ветки безопасности). В ветки безопасности следует сливать только критические изменения, связанные с безопасностью. + +Откладывание коммита в -STABLE и другие ветки позволяет проводить "параллельную отладку", когда закоммиченный код тестируется на широком спектре конфигураций. Это приводит к тому, что изменения в -STABLE содержат меньше ошибок, что и даёт ветке её название. + +.Процесс вкратце: коммиттер делает коммит кода +image::proc-commit.png["Обратитесь к абзацу ниже для версии, совместимой с программами чтения с экрана."] + +Когда коммиттер написал часть кода и хочет его закоммитить, он сначала должен определить, достаточно ли он тривиален, чтобы попасть в репозиторий без предварительной рецензии, или ему сначала следует сделать рецензию в сообществе разработчиков. Если код тривиален или был отрецензирован, и коммиттер не является сопровождающим, он должен проконсультироваться с сопровождающим перед тем, как продолжить. Если код предоставлен внешним поставщиком, сопровождающий должен создать патч, который отправляется обратно поставщику. Затем код коммитится и развертывается пользователями. Если они обнаружат проблемы с кодом, это будет сообщено, и коммиттер может вернуться к написанию патча. Если затронут поставщик, он может выбрать реализацию или игнорирование патча. + +.Процесс вкратце: Участник делает коммит кода +image::proc-contrib.png["Обратитесь к абзацам выше и ниже для версии, совместимой с программами чтения с экрана."] + +Разница, когда участник вносит код, заключается в том, что он отправляет код через интерфейс Bugzilla. Этот отчёт забирает сопровождающий, который просматривает код и делает ему коммит. + +Роли, задействованные в этом процессе: + +. crossref:dev-model[role-committer, Коммиттер] +. crossref:dev-model[role-contributor, Участник (контрибьютор)] +. crossref:dev-model[role-vendor, Поставщик] +. crossref:dev-model[role-reviewer, Рецензенты] + +[crossref:dev-model[freebsd-committer, FreeBSD, 2001]] [crossref:dev-model[jorgensen2001, Jørgensen, 2001]] + +[[process-core-election]] +=== Выборы основной команды (Core Team) + +Выборы Core Team проводятся не реже чем раз в два года. footnote:[Первые выборы Core Team состоялись в сентябре 2000 года] Избираются девять участников Core Team. Новые выборы проводятся, если количество участников Core Team становится меньше семи. Новые выборы также могут быть проведены, если этого потребуют как минимум 1/3 активных коммиттеров. + +Когда должны состояться выборы, Core Team объявляет об этом как минимум за 6 недель и назначает менеджера выборов для их проведения. + +Только коммиттеры могут быть избраны в состав основной команды (Core Team). Кандидаты должны подать свои заявки как минимум за одну неделю до начала выборов, но могут уточнять свои заявления до начала голосования. Они представлены в http://election.uk.freebsd.org/candidates.html[списке кандидатов]. При составлении своих предвыборных заявлений кандидаты должны ответить на несколько стандартных вопросов, предоставленных организатором выборов. + +Во время выборов строго соблюдается правило, что коммиттер должен был сделать коммит в течение последних 12 месяцев. Только эти коммиттеры имеют право голосовать. + +При голосовании коммиттер может проголосовать один раз в поддержку до девяти номинантов. Голосование проводится в течение четырёх недель, с напоминаниями, публикуемыми в рассылке "developers", доступной всем коммиттерам. + +Результаты выборов публикуются через неделю после их окончания, а новая основная команда вступает в должность через неделю после публикации результатов. + +В случае ничьей при голосовании, это будет разрешено новыми, однозначно избранными членами ядра. + +Голоса и заявления кандидатов архивируются, но архивы не являются общедоступными. + +.Процесс вкратце: Выборы основной команды (Core Team) +image::proc-elections.png["Обратитесь к абзацу ниже для версии, совместимой с программами чтения с экрана."] + +Core Team объявляет выборы и назначает руководителя выборов, который подготавливает процесс. Когда всё готово, кандидаты могут объявить о своей кандидатуре, представив заявления. Затем коммиттеры голосуют. После завершения голосования результаты выборов объявляются, и новая основная команда вступает в должность. + +Ответственный за выборы Core Team: + +* crossref:dev-model[role-core, Основная команда (Core Team)] +* crossref:dev-model[role-committer, Коммиттер] +* crossref:dev-model[role-election-manager, Менеджер выборов] + +[crossref:dev-model[freebsd-bylaws, FreeBSD, 2000A]] [crossref:dev-model[bsd-election2002, FreeBSD, 2002B]] [crossref:dev-model[freebsd-election, FreeBSD, 2002G]] + +[[new-features]] +=== Разработка новых функций + +В рамках проекта существуют подпроекты, работающие над новыми функциями. Эти проекты обычно выполняются одним человеком [crossref:dev-model[jorgensen2001, Йоргенсен, 2001]]. Каждый проект волен организовывать разработку так, как считает нужным. Однако, когда проект объединяется с ветвью -CURRENT, он должен следовать руководствам проекта. Когда код хорошо протестирован в ветви -CURRENT и признан достаточно стабильным и актуальным для ветви -STABLE, он объединяется с ветвью -STABLE. + +Требования проекта определяются пожеланиями разработчиков, запросами сообщества в виде прямых обращений по почте, отчетов о проблемах (Problem Reports), коммерческим финансированием разработки функциональности или вкладами научного сообщества. Пожелания, которые входят в зону ответственности разработчика, передаются этому разработчику, который расставляет приоритеты между запросом и своими собственными пожеланиями. Распространенный способ организации этого процесса — ведение списка задач (TODO-list), поддерживаемого проектом. Задачи, не входящие в чью-либо зону ответственности, собираются в списках TODO, пока кто-нибудь не возьмет на себя ответственность за их выполнение. Все запросы, их распределение и отслеживание обрабатываются с помощью инструмента crossref:dev-model[tool-bugzilla, Bugzilla]. + +Анализ требований происходит двумя способами. Поступившие запросы обсуждаются в почтовых рассылках, как в основном проекте, так и в подпроекте, к которому относится запрос или который создается этим запросом. Кроме того, отдельные разработчики подпроекта оценивают осуществимость запросов и определяют приоритеты между ними. Помимо архивов обсуждений, на этом этапе не создается никаких результатов, которые включаются в основной проект. + +Поскольку запросы приоритизируются отдельными разработчиками на основе того, что они считают интересным, необходимым или за что им платят, отсутствует общая стратегия или приоритезация того, какие запросы считать требованиями, и как контролировать их корректную реализацию. Однако большинство разработчиков разделяют общее видение того, какие вопросы являются более важными, и они могут запросить рекомендации у команды инженеров по выпуску релизов. + +Фаза проверки проекта состоит из двух этапов. Перед внесением кода в текущую ветку разработчики запрашивают рецензирование своего кода коллегами. Это рецензирование в основном проводится с помощью функционального тестирования, но также важна проверка кода. Когда код внесён в ветку, проводится более широкое функциональное тестирование, которое может привести к дополнительной проверке кода и отладке, если код ведёт себя не так, как ожидалось. Эта вторая форма проверки может рассматриваться как структурная верификация. Хотя сами подпроекты могут писать формальные тесты, такие как модульные тесты, они обычно не собираются основным проектом и чаще всего удаляются перед внесением кода в текущую ветку. footnote:[Однако всё больше тестов выполняется при сборке системы (make world). Эти тесты являются очень новым дополнением, и систематическая структура для них ещё не создана.] + +[[model-maintenance]] +=== Сопровождение + +Для проекта полезно, чтобы за каждую область исходного кода отвечал хотя бы один человек, который хорошо её знает. Некоторые части кода имеют назначенных сопровождающих. Другие имеют фактических сопровождающих, а некоторые части системы не имеют сопровождающих. Сопровождающий обычно является участником подпроекта, который написал и интегрировал код, или тем, кто портировал его с платформы, для которой он был написан. footnote:[sendmail и named — примеры кода, который был объединён с других платформ.] Задача сопровождающего — убедиться, что код синхронизирован с проектом, из которого он получен, если это сторонний код, а также применять патчи, предоставленные сообществом, или исправлять обнаруженные проблемы. + +Основной объем работы, вкладываемый в проект FreeBSD, связан с сопровождением. [crossref:dev-model[jorgensen2001, Jørgensen, 2001]] предоставляет схему, показывающую жизненный цикл изменений. + +Модель Йоргенссена для интеграции изменений + +[.informaltable] +[cols="1,1,1", options="header"] +|=== +| Этап +| Следующий, если успешно +| Следующий, если неудачно + +|программирование +|рецензирование +| + +|рецензирование +|предварительная проверка перед коммитом +|программирование + +|предварительная проверка перед коммитом +|релиз для разработки +|программирование + +|релиз для разработки +|параллельная отладка +|программирование + +|параллельная отладка +|релиз для производства +|программирование + +|релиз для производства +| +|программирование +|=== + +Здесь "релиз для разработки" относится к ветке -CURRENT, а "релиз для производства" — к ветке -STABLE. "Предварительная проверка перед коммитом" — это функциональное тестирование, проводимое коллегами-разработчиками по запросу или для проверки кода с целью определения состояния подпроекта. "Параллельная отладка" — это функциональное тестирование, которое может вызвать дополнительный обзор и отладку, когда код включён в ветку -CURRENT. + +На момент написания этого документа в проекте было 269 коммиттеров. Когда они вносят изменения в ветку, это создает новый выпуск. Очень часто пользователи в сообществе отслеживают определенную ветку. Мгновенное появление нового выпуска делает изменения широко доступными сразу же и позволяет быстро получать отзывы от сообщества. Это также дает сообществу ожидаемое время реакции на проблемы, которые важны для них. Это делает сообщество более вовлеченным, что, в свою очередь, позволяет получать больше и лучше отзывов, что снова стимулирует больше сопровождения и в конечном итоге должно создать лучший продукт. + +Прежде чем вносить изменения в код в частях дерева, история которых неизвестна коммиттеру, коммиттер обязан прочитать журналы коммитов, чтобы понять, почему определённые функции реализованы именно так, и избежать ошибок, которые уже были обдуманы или исправлены ранее. + +[[model-pr]] +=== Сообщение о проблеме + +До FreeBSD 10 в FreeBSD входил инструмент для отправки отчётов о проблемах под названием `send-pr`. Проблемы включают отчёты об ошибках, запросы функций, улучшения функций и уведомления о новых версиях внешнего программного обеспечения, включённого в проект. Хотя `send-pr` доступен, пользователям и разработчикам рекомендуется отправлять проблемы, используя нашу https://bugs.freebsd.org/submit/[форму отчёта о проблемах]. + +Отчёты о проблемах отправляются на электронный адрес, откуда они попадают в базу данных сопровождения отчётов о проблемах. crossref:dev-model[role-bugbuster, Исправитель ошибок (Bugbuster)] классифицирует проблему и направляет её соответствующей группе или сопровождающему в рамках проекта. После того, как кто-то берёт ответственность за отчёт, он анализируется. Этот анализ включает проверку проблемы и разработку решения. Часто требуется обратная связь от автора отчёта или даже от сообщества FreeBSD. Как только создаётся патч для устранения проблемы, автора отчета могут попросить его протестировать. В итоге рабочий патч интегрируется в проект и, если необходимо, документируется. Затем он проходит стандартный цикл сопровождения, как описано в разделе crossref:dev-model[model-maintenance, Сопровождение]. Отчёт о проблеме может находиться в следующих состояниях: открыт, анализируется, ожидает обратной связи, исправлен патчем, отложен и закрыт. Состояние "отложен" используется, когда дальнейшее продвижение невозможно из-за недостатка информации или когда задача требует столько работы, что в данный момент никто над ней не работает. + +.Сводка процесса: сообщение о проблеме +image::proc-pr.png["Обратитесь к абзацу ниже для версии, совместимой с программами чтения с экрана."] + +Проблема сообщается автором отчета. Затем она классифицируется ответственным за обработку ошибок и передается соответствующему сопровождающему. Он проверяет проблему и обсуждает её с автором отчёта до тех пор, пока не будет собрано достаточно информации для создания рабочего исправления. Это исправление затем фиксируется, и отчёт о проблеме закрывается. + +Роли, включенные в этот процесс: + +. crossref:dev-model[role-problem-originator, Инициатор отчета] +. crossref:dev-model[role-maintainer, Сопровождение] +. crossref:dev-model[role-bugbuster, Исправитель ошибок (Bugbuster)] + +[crossref:dev-model[freebsd-handle-pr, FreeBSD, 2002C]]. [crossref:dev-model[freebsd-send-pr, FreeBSD, 2002D]] + +[[process-reactions]] +=== Реагирование на неправильное поведение + +[crossref:dev-model[freebsd-committer, FreeBSD, 2001]] содержит ряд правил, которым должны следовать коммиттеры. Однако случается, что эти правила нарушаются. Следующие правила существуют для того, чтобы можно было реагировать на неподобающее поведение. Они определяют, какие действия приведут к приостановке привилегий коммиттера на тот или иной срок. + +* Совершение коммитов во время заморозки кода без одобрения команды Release Engineering — 2 дня +* Коммит изменений в ветку безопасности без одобрения - 2 дня +* Войны коммитов — 5 дней для всех участвующих сторон +* Невежливое или неподобающее поведение — 5 дней + +[crossref:dev-model[ref-freebsd-trenches, Lehey, 2002]] + +Для эффективности приостановок любой член основной команды (Core Team) может применить приостановку до обсуждения на почтовой рассылке "core". Повторные нарушители могут, при 2/3 голосов от основной команды, получить более строгие наказания, включая постоянное лишение прав на коммиты. (Однако последнее всегда рассматривается как крайняя мера из-за присущей ему склонности вызывать споры.) Все приостановки публикуются в почтовой рассылке "developers", доступной только коммиттерам. + +Важно, что вас не могут приостановить за технические ошибки. Все наказания связаны с нарушением социального этикета. + +Роли, участвующие в этом процессе: + +* crossref:dev-model[role-core, Основная команда (Core Team)] +* crossref:dev-model[role-committer, Коммиттер] + +[[process-release-engineering]] +=== Выпуск релизов + +Проект FreeBSD имеет команду инженеров по выпуску релизов с главным инженером, который отвечает за создание релизов FreeBSD для распространения среди пользователей через интернет или продажи в розничных магазинах. Поскольку FreeBSD доступна на нескольких платформах, а релизы для различных архитектур выпускаются одновременно, в команде есть ответственный за каждую архитектуру. Также в команде есть роли, отвечающие за координацию усилий по обеспечению качества, сборку набора пакетов и актуализацию документации. Под инженером по выпуску релизов подразумевается представитель команды инженеров по выпуску релизов. + +Когда готовится выпуск релиза, проект FreeBSD несколько меняет свою структуру. Составляется график выпуска, включающий заморозку функциональности и кода, выпуск промежуточных релизов и финального релиза. Заморозка функциональности означает, что новые функции не могут быть добавлены в ветку без явного согласия инженеров релиза. Заморозка кода означает, что изменения в коде (например, исправления ошибок) не могут быть добавлены без явного согласия инженеров релиза. Этот процесс заморозки функциональности и кода известен как стабилизация. В процессе выпуска релиза инженер релиза имеет полномочия откатываться к более старым версиям кода и, таким образом, "отменять" изменения, если они сочтут, что эти изменения не подходят для включения в релиз. + +Существует три различных вида выпусков: + +. .0 выпуски являются первым релизом основной версии. Они ветвятся от ветки -CURRENT и имеют значительно более длительный цикл разработки из-за нестабильного характера ветки -CURRENT +. .X релизы — это релизы ветки -STABLE. Они запланированы к выходу каждые 4 месяца. +. .X.Y — это выпуски с исправлениями уязвимостей, следующие за веткой .X. Они выходят только тогда, когда с момента последнего выпуска в этой ветке было объединено достаточное количество исправлений уязвимостей. Новые функции включаются редко, а команда безопасности участвует в этих выпусках гораздо активнее, чем в обычных. + +Для выпусков ветки -STABLE процесс выпуска начинается за 45 дней до предполагаемой даты релиза. В течение первой фазы, первых 15 дней, разработчики переносят изменения из -CURRENT, которые они хотят включить в релиз, в ветку выпуска. По окончании этого периода код входит в 15-дневный период заморозки, в течение которого допускаются только исправления ошибок, обновления документации, исправления, связанные с безопасностью, и незначительные изменения драйверов устройств. Эти изменения должны быть предварительно одобрены инженером выпуска. В начале последнего 15-дневного периода создается кандидат на выпуск для широкого тестирования. В этот период вероятность внесения изменений снижается, за исключением важных исправлений ошибок и обновлений безопасности. В этот заключительный период все выпуски считаются кандидатами на выпуск. По завершении процесса выпуска создается релиз с новым номером версии, включая бинарные дистрибутивы на веб-сайтах и создание образов CD-ROM. Однако релиз не считается «действительно выпущенным» до тех пор, пока на список рассылки freebsd-announce не будет отправлено сообщение, подписанное с помощью crossref:dev-model[tool-pgp, Pretty Good Privacy], в котором явно указано, что релиз состоялся; все, что обозначено как «релиз» до этого момента, может находиться в процессе доработки и изменяться до отправки PGP-подписанного сообщения. footnote:[Многие коммерческие поставщики используют эти образы для создания CD-ROM, которые продаются в розничных магазинах.]. + +Версии ветки -CURRENT (то есть все версии, оканчивающиеся на ".0"), очень похожи, но с вдвое большим временным промежутком. Процесс начинается за 8 недель до выпуска с объявления графика релиза. Через две недели после начала процесса выпуска вводится заморозка функциональности, и оптимизация производительности должна быть сведена к минимуму. За четыре недели до выпуска становится доступна официальная бета-версия. За две недели до выпуска код официально ветвится в новую версию. Этой версии присваивается статус релиз-кандидата, и, как и в случае с разработкой -STABLE, заморозка кода релиз-кандидата ужесточается. Однако разработка на основной ветке разработки может продолжаться. За исключением этих различий, процессы разработки релизов схожи. + +*.0 releases go into their own branch and are aimed mainly at early adopters. The branch then goes through a period of stabilisation, and it is not until the crossref:dev-model[role-releng, Release Engineering Team] decides the demands to stability have been satisfied that the branch becomes -STABLE and -CURRENT targets the next major version. While this for the majority has been with *.1 versions, this is not a demand. + +Большинство выпусков происходит по достижении даты, которая считается достаточно отдалённой от предыдущего выпуска. Установлена цель выпускать основные версии каждые 18 месяцев, а промежуточные — каждые 4 месяца. Сообщество пользователей чётко дало понять, что безопасность и стабильность не могут быть принесены в жертву из-за самостоятельно установленных сроков и целевых дат выпуска. Чтобы задержки не становились слишком длинными в вопросах безопасности и стабильности, требуется дополнительная дисциплина при внесении изменений в -STABLE. + +. Сделать график выпуска релизов +. Заморозить функциональность +. Заморозка кода +. Создать ветку +. Кандидат на выпуск +. Стабилизировать выпуск (при необходимости вернуться к предыдущему шагу; когда выпуск считается стабильным, перейти к следующему шагу) +. Собрать пакеты +. Предупредить сайты-зеркала +. Опубликовать выпуск + +// Keep the spaces around the external square bracket to avoid a warning in the +// PDF converter +[ crossref:dev-model[freebsd-releng, FreeBSD, 2002E] ] + +[[tools]] +== Инструменты + +Основные инструменты поддержки процесса разработки — это Bugzilla, Mailman и OpenSSH. Это инструменты, разработанные сторонними организациями, которые широко используются в мире открытого исходного кода. + +[[tool-git]] +=== Git + +Git — это система для управления несколькими версиями текстовых файлов, отслеживания внесённых изменений, их авторов и причин. Проект хранится в «репозитории», а разные версии считаются разными «ветками». + +[[tool-bugzilla]] +=== Bugzilla + +Bugzilla — это база данных для сопровождения, состоящая из набора инструментов для отслеживания ошибок на центральном сайте. Она поддерживает процесс отслеживания ошибок, включая отправку и обработку ошибок, а также запросы и обновление базы данных, а также редактирование отчётов об ошибках. Проект использует веб-интерфейс для отправки "Отчётов о проблемах" на центральный сервер Bugzilla проекта. У коммиттеров также есть веб- и командные клиенты. + +[[model-mailman]] +=== Mailman + +Mailman - это программа, которая автоматизирует управление почтовыми рассылками. Проект FreeBSD использует ее для ведения 16 общих рассылок, 60 технических рассылок, 4 ограниченных рассылок и 5 рассылок с логами коммитов Git. Она также используется для многих почтовых рассылок, созданных и используемых другими людьми и проектами в сообществе FreeBSD. Общие рассылки предназначены для широкой публики, технические рассылки в основном предназначены для разработки определенных областей интересов, а закрытые рассылки используются для внутренней коммуникации, не предназначенной для широкой публики. Большая часть всей коммуникации в проекте проходит через эти 85 рассылок [crossref:dev-model[ref-bsd-handbook, FreeBSD, 2003A], Приложение C]. + +[[tool-pgp]] +=== Pretty Good Privacy + +Pretty Good Privacy, более известный как PGP, — это криптосистема, использующая архитектуру открытого ключа, чтобы позволить пользователям подписывать и/или шифровать информацию цифровой подписью для обеспечения безопасной связи между двумя сторонами. Подпись используется при отправке информации множеству получателей, позволяя им убедиться, что информация не была изменена до того, как они её получили. В проекте FreeBSD это основной способ убедиться, что информация была написана тем, кто утверждает, что её создал, и не была изменена в процессе передачи. + +[[tool-ssh2]] +=== Secure Shell (SSH) + +Secure Shell - это стандарт безопасного входа в удалённую систему и выполнения команд на ней. Он позволяет устанавливать и защищать другие соединения, называемые туннелями, между двумя взаимодействующими системами. Этот стандарт существует в двух основных версиях, и только версия два используется в проекте FreeBSD. Наиболее распространённая реализация стандарта - OpenSSH, которая входит в основную дистрибуцию проекта. Поскольку её исходный код обновляется чаще, чем выпуски FreeBSD, последняя версия также доступна в дереве портов. + +[[sub-projects]] +== Подпроекты +Подпроекты создаются для уменьшения объема коммуникации, необходимой для координации группы разработчиков. Когда проблемная область достаточно изолирована, большая часть коммуникации происходит внутри группы, сосредоточенной на проблеме, что требует меньше общения с другими группами по сравнению с ситуацией, когда группа не изолирована. + +[[sub-project-ports]] +=== Подпроект Ports + +"Порт" — это набор метаданных и патчей, необходимых для загрузки, компиляции и корректной установки внешнего программного обеспечения в системе FreeBSD. Количество портов растёт с огромной скоростью, как показано на следующем рисунке. + +.Количество портов, добавленных между 1995 и 2022 годами +[[fig-ports]] +image::portsstatus.svg["Обратитесь к параграфам ниже для версии, удобной для экранных дикторов."] + +crossref:dev-model[fig-ports,image::portsstatus.svg] показывает количество портов, доступных для FreeBSD в период с 1995 по 2022 год. Похоже, что кривая сначала росла экспоненциально, а затем с середины 2001 до середины 2007 года росла линейно со скоростью около 2000 портов/год, после чего скорость роста снизилась. + +Поскольку внешнее программное обеспечение, описываемое портом, часто находится в стадии активной разработки, объем работы, необходимой для поддержки портов, уже велик и продолжает расти. Это привело к тому, что часть проекта FreeBSD, связанная с портами, получила более самостоятельную структуру и все больше становится подпроектом проекта FreeBSD. + +Порты имеют свою собственную основную команду с crossref:dev-model[role-ports-manager, Менеджером Портов] во главе, и эта команда может назначать коммиттеров без одобрения Основной команды FreeBSD (Core Team). В отличие от проекта FreeBSD, где активное сопровождение часто вознаграждается правом коммита, подпроект портов включает множество активных сопровождающих, не являющихся коммиттерами. + +В отличие от основного проекта, дерево портов не разветвляется. Каждый выпуск FreeBSD следует текущей коллекции портов, что обеспечивает доступ к обновлённой информации о том, где найти программы и как их собрать. Однако это означает, что порт, зависящий от системы, может требовать изменений в зависимости от версии FreeBSD, на которой он запущен. + +С неразветвлённым репозиторием портов невозможно гарантировать, что любой порт будет работать на чём-либо, кроме -CURRENT и -STABLE, в частности на старых, минорных выпусках. Для этого нет ни инфраструктуры, ни времени волонтёров. + +Команды, зависящие от Ports, такие как команда выпуска релизов, для эффективности коммуникации имеют своих собственных представителей по портам. + +[[sub-project-documentation]] +=== Проект документации FreeBSD + +Проект документации FreeBSD был начат в январе 1995 года. От первоначальной группы, состоявшей из руководителя проекта, четырёх руководителей команд и 16 участников, сейчас общее число коммиттеров достигло 44. Список рассылки документации насчитывает чуть менее 300 участников, что указывает на довольно большое сообщество вокруг него. + +Цель проекта Документации — предоставить качественную и полезную документацию проекта FreeBSD, чтобы новые пользователи могли легче освоить систему, а также подробно описать расширенные функции для пользователей. + +Основные задачи проекта Documentation — работа над текущими проектами в "Наборе документации FreeBSD" и перевод документации на другие языки. + +Как и проект FreeBSD, документация разделена на те же ветви. Это сделано для того, чтобы для каждой версии всегда была обновлённая документация. В ветвях безопасности исправляются только ошибки в документации. + +Как и подпроект ports, проект Documentation может назначать коммиттеров документации без одобрения основной команды FreeBSD (Core Team). [crossref:dev-model[freebsd-doceng-charter, FreeBSD, 2003B]]. + +Проект документации включает в себя extref:{fdp-primer}[вводное руководство]. Оно используется как для ознакомления новых участников проекта со стандартными инструментами и синтаксисом, так и в качестве справочника при работе над проектом. + +:sectnums!: + +[bibliography] +[[bibliography]] +== Список литературы + +[[brooks]] +[Brooks, 1995] Фредерик П. Брукс. Авторское право © 1975, 1995 Pearson Education Limited. 0201835959. Addison-Wesley Pub Co. Мифический человекомесяц. Эссе о программной инженерии, юбилейное издание (2-е издание). + +[[thesis]] +[Saers, 2003] Никлас Саерс. Авторское право © 2003. Модель проекта для FreeBSD. Кандидатская диссертация. http://niklas.saers.com/thesis. + +[[jorgensen2001]] +[Йоргенсен, 2001] Нильс Йоргенсен. Copyright © 2001. _Putting it All in the Trunk. Incremental Software Development in the FreeBSD Open Source Project_. http://www.dat.ruc.dk/~nielsj/research/papers/freebsd.pdf. + +[[ref-pmbok]] +[PMI, 2000] Институт управления проектами. Copyright © 1996, 2000 Институт управления проектами. 1-880410-23-0. Институт управления проектами. Ньютаун Сквер, Пенсильвания, США. PMBOK Guide. A Guide to the Project Management Body of Knowledge (Руководство PMBOK. Руководство к своду знаний по управлению проектами), издание 2000 года. + +[[freebsd-bylaws]] +[FreeBSD, 2000A] Copyright © 2002 The FreeBSD Project. Core Bylaws. https://www.freebsd.org/internal/bylaws/. + +[[freebsd-developer-handbook]] +[FreeBSD, 2002A] Copyright © 2002 The FreeBSD Documentation Project. Руководство FreeBSD для разработчиков. extref:{developers-handbook}[Руководство FreeBSD для разработчиков]. + +[[bsd-election2002]] +[FreeBSD, 2002B] Copyright © 2002 Проект FreeBSD. Выборы состава основной команды (Core Team) 2002. http://election.uk.freebsd.org/candidates.html. + +[[freebsd-handle-pr]] +[FreeBSD, 2002C] Даг-Эрлинг Смёрграв и Хитен Пандья. Copyright © 2002 The FreeBSD Documentation Project. The FreeBSD Documentation Project. Рекомендации по работе с сообщениями о проблемах. extref:{pr-guidelines}[Рекомендации по работе с сообщениями о проблемах]. + +[[freebsd-send-pr]] +[FreeBSD, 2002D] Даг-Эрлинг Смёрграв. Copyright © 2002 Проект документации FreeBSD. Проект документации FreeBSD. Составление сообщений о проблеме во FreeBSD. extref:{problem-reports}[Составление сообщений о проблеме во FreeBSD]. + +[[freebsd-committer]] +[FreeBSD, 2001] Copyright © 2001 The FreeBSD Documentation Project. The FreeBSD Documentation Project. Справочник коммиттера. extref:{committers-guide}[Справочник коммиттера]. + +[[freebsd-releng]] +[FreeBSD, 2002E] Мюррей Стокли. Copyright © 2002 The FreeBSD Documentation Project. Проект документации FreeBSD. Подготовка релизов FreeBSD. extref:{releng}[Подготовка релизов FreeBSD]. + +[[ref-bsd-handbook]] +[FreeBSD, 2003A] Проект документации FreeBSD. Руководство FreeBSD. extref:{handbook}[Руководство FreeBSD]. + +[[freebsd-contributors]] +[FreeBSD, 2002F] Copyright © 2002 The FreeBSD Documentation Project. Проект документации FreeBSD. Участники проекта FreeBSD. extref:{contributors}[Участники проекта FreeBSD]. + +[[freebsd-election]] +[FreeBSD, 2002G] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. Выборы состава основной команды (Core Team) 2002. http://election.uk.freebsd.org. + +[[freebsd-expiration-policy]] +[FreeBSD, 2002H] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. Политика истечения срока действия битов коммитов. 2002/04/06 15:35:30. https://www.freebsd.org/internal/expire-bits/. + +[[freebsd-new-account]] +[FreeBSD, 2002I] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. Процедура создания нового аккаунта. 2002/08/19 17:11:27. https://www.freebsd.org/internal/new-account/. + +[[freebsd-doceng-charter]] +[FreeBSD, 2003B] Copyright © 2002 The FreeBSD Documentation Project. The FreeBSD Documentation Project. Устав команды разработчиков документации FreeBSD. 2003/03/16 12:17. https://www.freebsd.org/internal/doceng/. + +[[ref-freebsd-trenches]] +[Lehey, 2002] Грег Лехи. Copyright © 2002 Грег Лехи. Грег Лехи. Two years in the trenches. The evolution of a software project (Два года в окопах. Эволюция программного проекта). http://www.lemis.com/grog/In-the-trenches.pdf. diff --git a/documentation/content/ru/books/dev-model/_index.po b/documentation/content/ru/books/dev-model/_index.po new file mode 100644 index 0000000000..b619bee136 --- /dev/null +++ b/documentation/content/ru/books/dev-model/_index.po @@ -0,0 +1,3865 @@ +# SOME DESCRIPTIVE TITLE +# Copyright (C) YEAR The FreeBSD Project +# This file is distributed under the same license as the FreeBSD Documentation package. +# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025. +msgid "" +msgstr "" +"Project-Id-Version: FreeBSD Documentation VERSION\n" +"POT-Creation-Date: 2025-09-20 14:30+0300\n" +"PO-Revision-Date: 2025-09-20 04:45+0000\n" +"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n" +"Language-Team: Russian <https://translate-dev.freebsd.org/projects/" +"documentation/booksdev-model_index/ru/>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.17\n" + +#. type: Yaml Front Matter Hash Value: description +#: documentation/content/en/books/dev-model/_index.adoc:1 +#, no-wrap +msgid "A formal study of the organization of the FreeBSD project" +msgstr "Формальное исследование организации проекта FreeBSD" + +#. Copyright (c) 2002-2005 Niklas Saers +#. All rights reserved. +#. Redistribution and use in source and binary forms, with or without +#. modification, are permitted provided that the following conditions +#. are met: +#. 1. Redistributions of source code must retain the above copyright +#. notice, this list of conditions and the following disclaimer. +#. 2. Redistributions in binary form must reproduce the above copyright +#. notice, this list of conditions and the following disclaimer in the +#. documentation and/or other materials provided with the distribution. +#. THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +#. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +#. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +#. ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +#. FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +#. DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +#. OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +#. HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +#. LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +#. OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +#. SUCH DAMAGE. +#. type: Title = +#: documentation/content/en/books/dev-model/_index.adoc:1 +#: documentation/content/en/books/dev-model/_index.adoc:39 +#, no-wrap +msgid "A project model for the FreeBSD Project" +msgstr "Проектная модель для проекта FreeBSD" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:72 +msgid "'''" +msgstr "'''" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:78 +msgid "Foreword" +msgstr "Предисловие" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:84 +msgid "" +"Up until now, the FreeBSD project has released a number of described " +"techniques to do different parts of work. However, a project model " +"summarising how the project is structured is needed because of the " +"increasing amount of project members. footnote:[This goes hand-in-hand with " +"Brooks' law that adding another person to a late project will make it later " +"since it will increase the communication needs . A project model is a tool " +"to reduce the communication needs.] This paper will provide such a project " +"model and is donated to the FreeBSD Documentation project where it can " +"evolve together with the project so that it can at any point in time reflect " +"the way the project works. It is based on [crossref:dev-model[thesis, " +"Saers,2003]]." +msgstr "" +"До настоящего момента проект FreeBSD выпустил ряд описанных методик для " +"выполнения различных частей работы. Однако, из-за растущего числа участников " +"проекта, необходима модель проекта, обобщающая его структуру. footnote:[Это " +"согласуется с законом Брукса, согласно которому добавление нового человека в " +"задерживающийся проект сделает его ещё более задержанным, поскольку увеличит " +"потребность в коммуникации. Модель проекта — это инструмент для снижения " +"потребности в коммуникации.] Данная статья предоставляет такую модель " +"проекта и передаётся в проект документации FreeBSD, где она может " +"развиваться вместе с проектом, чтобы в любой момент времени отражать способ " +"его работы. Она основана на [crossref:dev-model[диссертации, Saers,2003]]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:86 +msgid "" +"I would like to thank the following people for taking the time to explain " +"things that were unclear to me and for proofreading the document." +msgstr "" +"Я хотел бы поблагодарить следующих людей за то, что они нашли время " +"объяснить мне непонятные моменты и проверить документ." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:88 +msgid "Andrey A. Chernov mailto:ache@freebsd.org[ache@freebsd.org]" +msgstr "Andrey A. Chernov mailto:ache@freebsd.org[ache@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:89 +msgid "Bruce A. Mah mailto:bmah@freebsd.org[bmah@freebsd.org]" +msgstr "Bruce A. Mah mailto:bmah@freebsd.org[bmah@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:90 +msgid "Dag-Erling Smørgrav mailto:des@freebsd.org[des@freebsd.org]" +msgstr "Dag-Erling Smørgrav mailto:des@freebsd.org[des@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:91 +msgid "Giorgos Keramidas mailto:keramida@freebsd.org[keramida@freebsd.org]" +msgstr "Giorgos Keramidas mailto:keramida@freebsd.org[keramida@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:92 +msgid "" +"Ingvil Hovig " +"mailto:ingvil.hovig@skatteetaten.no[ingvil.hovig@skatteetaten.no]" +msgstr "" +"Ingvil Hovig " +"mailto:ingvil.hovig@skatteetaten.no[ingvil.hovig@skatteetaten.no]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:93 +msgid "Jesper Holck mailto:jeh.inf@cbs.dk[jeh.inf@cbs.dk]" +msgstr "Jesper Holck mailto:jeh.inf@cbs.dk[jeh.inf@cbs.dk]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:94 +msgid "John Baldwin mailto:jhb@freebsd.org[jhb@freebsd.org]" +msgstr "John Baldwin mailto:jhb@freebsd.org[jhb@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:95 +msgid "John Polstra mailto:jdp@freebsd.org[jdp@freebsd.org]" +msgstr "John Polstra mailto:jdp@freebsd.org[jdp@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:96 +msgid "Kirk McKusick mailto:mckusick@freebsd.org[mckusick@freebsd.org]" +msgstr "Kirk McKusick mailto:mckusick@freebsd.org[mckusick@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:97 +msgid "Mark Linimon mailto:linimon@freebsd.org[linimon@freebsd.org]" +msgstr "Mark Linimon mailto:linimon@freebsd.org[linimon@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:98 +msgid "Marleen Devos" +msgstr "Marleen Devos" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:99 +msgid "Niels Jørgenssen mailto:nielsj@ruc.dk[nielsj@ruc.dk]" +msgstr "Niels Jørgenssen mailto:nielsj@ruc.dk[nielsj@ruc.dk]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:100 +msgid "Nik Clayton mailto:nik@freebsd.org[nik@freebsd.org]" +msgstr "Nik Clayton mailto:nik@freebsd.org[nik@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:101 +msgid "Poul-Henning Kamp mailto:phk@freebsd.org[phk@freebsd.org]" +msgstr "Poul-Henning Kamp mailto:phk@freebsd.org[phk@freebsd.org]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:102 +msgid "Simon L. Nielsen mailto:simon@freebsd.org[simon@freebsd.org]" +msgstr "Simon L. Nielsen mailto:simon@freebsd.org[simon@freebsd.org]" + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:104 +#, no-wrap +msgid "Overview" +msgstr "Обзор" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:109 +msgid "" +"A project model is a means to reduce the communications overhead in a " +"project. As shown by [crossref:dev-model[brooks, Brooks, 1995]], increasing " +"the number of project participants increases the communication in the " +"project exponentially. FreeBSD has during the past few years increased both " +"its mass of active users and committers, and the communication in the " +"project has risen accordingly. This project model will serve to reduce this " +"overhead by providing an up-to-date description of the project." +msgstr "" +"Модель проекта — это способ снижения накладных расходов на коммуникации в " +"проекте. Как показано в [crossref:dev-model[brooks, Brooks, 1995]], " +"увеличение числа участников проекта приводит к экспоненциальному росту " +"коммуникаций в проекте. За последние годы FreeBSD значительно увеличил как " +"количество активных пользователей, так и коммиттеров, что соответственно " +"привело к росту коммуникаций. Данная модель проекта поможет снизить эти " +"накладные расходы за счёт предоставления актуального описания проекта." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:115 +msgid "" +"During the Core elections in 2002, Mark Murray stated \"I am opposed to a " +"long rule-book, as that satisfies lawyer-tendencies, and is counter to the " +"technocentricity that the project so badly needs.\" [crossref:dev-model[bsd-" +"election2002, FreeBSD, 2002B]]. This project model is not meant to be a " +"tool to justify creating impositions for developers, but as a tool to " +"facilitate coordination. It is meant as a description of the project, with " +"an overview of how the different processes are executed. It is an " +"introduction to how the FreeBSD project works." +msgstr "" +"Во время выборов в Core в 2002 году Марк Мюррей заявил: «Я против длинного " +"свода правил, так как это удовлетворяет склонности к юриспруденции и " +"противоречит техноцентричности, в которой проект так нуждается.» " +"[crossref:dev-model[bsd-election2002, FreeBSD, 2002B]]. Эта модель проекта " +"не предназначена для того, чтобы оправдывать создание ограничений для " +"разработчиков, а служит инструментом для облегчения координации. Она " +"призвана описывать проект, давая обзор того, как выполняются различные " +"процессы. Это введение в то, как работает проект FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:118 +msgid "" +"The FreeBSD project model will be described as of July 1st, 2004. It is " +"based on the Niels Jørgensen's paper [crossref:dev-model[jorgensen2001, " +"Jørgensen, 2001]], FreeBSD's official documents, discussions on FreeBSD " +"mailing lists and interviews with developers." +msgstr "" +"Модель проекта FreeBSD будет описана по состоянию на 1 июля 2004 года. Она " +"основана на работе Нильса Йоргенсена [crossref:dev-model[jorgensen2001, " +"Jørгенсен, 2001]], официальных документах FreeBSD, обсуждениях в списках " +"рассылки FreeBSD и интервью с разработчиками." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:121 +msgid "" +"After providing definitions of terms used, this document will outline the " +"organisational structure (including role descriptions and communication " +"lines), discuss the methodology model and after presenting the tools used " +"for process control, it will present the defined processes. Finally it will " +"outline major sub-projects of the FreeBSD project." +msgstr "" +"После определения используемых терминов в этом документе будет описана " +"организационная структура (включая описания ролей и линии коммуникации), " +"рассмотрена модель методологии, а после представления инструментов, " +"используемых для контроля процессов, будут описаны определенные процессы. В " +"заключение будут представлены основные подпроекты проекта FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:125 +msgid "" +"[crossref:dev-model[freebsd-developer-handbook, FreeBSD, 2002A]] Section 1.2 " +"and 1.3 give the vision and the architectural guidelines for the project. " +"The vision is \"To produce the best UNIX-like operating system package " +"possible, with due respect to the original software tools ideology as well " +"as usability, performance and stability.\" The architectural guidelines help " +"determine whether a problem that someone wants to be solved is within the " +"scope of the project" +msgstr "" +"[crossref:dev-model[freebsd-developer-handbook, FreeBSD, 2002A]] Разделы 1.2 " +"и 1.3 описывают видение и архитектурные принципы проекта. Видение " +"сформулировано как: \"Создать наилучший пакет операционной системы, подобной " +"UNIX®, с должным уважением к оригинальной идеологии программных " +"инструментов, а также к удобству использования, производительности и " +"стабильности.\" Архитектурные принципы помогают определить, находится ли " +"проблема, которую кто-то хочет решить, в рамках проекта" + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:127 +#, no-wrap +msgid "Definitions" +msgstr "Определения" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:130 +#, no-wrap +msgid "Activity" +msgstr "Активность" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:136 +msgid "" +"An \"activity\" is an element of work performed during the course of a " +"project [crossref:dev-model[ref-pmbok, PMI, 2000]]. It has an output and " +"leads towards an outcome. Such an output can either be an input to another " +"activity or a part of the process' delivery." +msgstr "" +"\"Активность\" — это элемент работы, выполняемый в ходе проекта " +"[crossref:dev-model[ref-pmbok, PMI, 2000]]. У неё есть результат, который " +"ведёт к достижению цели. Такой результат может быть либо входом для другой " +"активности, либо частью поставки процесса." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:138 +#, no-wrap +msgid "Process" +msgstr "Процесс" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:143 +msgid "" +"A \"process\" is a series of activities that lead towards a particular " +"outcome. A process can consist of one or more sub-processes. An example of " +"a process is software design." +msgstr "" +"Процесс — это ряд действий, ведущих к определенному результату. Процесс " +"может состоять из одного или нескольких подпроцессов. Примером процесса " +"является проектирование программного обеспечения." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:145 +#, no-wrap +msgid "Hat" +msgstr "Роль (hat)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:151 +msgid "" +"A \"hat\" is synonymous with role. A hat has certain responsibilities in a " +"process and for the process outcome. The hat executes activities. It is " +"well defined what issues the hat should be contacted about by the project " +"members and people outside the project." +msgstr "" +"\"Hat\" (шляпа) является синонимом роли. Роль имеет определенные обязанности " +"в процессе и ответственность за результат процесса. Роль выполняет действия. " +"Четко определено, по каким вопросам участники проекта и люди вне проекта " +"должны обращаться к ответственному, выполняющему эту роль." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:153 +#, no-wrap +msgid "Outcome" +msgstr "Результат" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:161 +msgid "" +"An \"outcome\" is the final output of the process. This is synonymous with " +"deliverable, that is defined as \"any measurable, tangible, verifiable " +"outcome, result or item that must be produced to complete a project or part " +"of a project. Often used more narrowly in reference to an external " +"deliverable, which is a deliverable that is subject to approval by the " +"project sponsor or customer\" by [crossref:dev-model[ref-pmbok, PMI, " +"2000]]. Examples of outcomes are a piece of software, a decision made or a " +"report written." +msgstr "" +"«Результат» — это конечный продукт процесса. Это синоним понятия " +"«поставляемый результат», который определяется как «любой измеримый, " +"осязаемый, проверяемый результат, итог или элемент, который должен быть " +"произведён для завершения проекта или его части. Часто используется в более " +"узком смысле в отношении внешнего поставляемого результата, который подлежит " +"утверждению спонсором проекта или заказчиком» согласно [crossref:dev-" +"model[ref-pmbok, PMI, 2000]]. Примерами результатов являются программное " +"обеспечение, принятое решение или написанный отчёт." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:163 +#, no-wrap +msgid "FreeBSD" +msgstr "FreeBSD" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:166 +msgid "" +"When saying \"FreeBSD\" we will mean the BSD derivative UNIX-like operating " +"system FreeBSD, whereas when saying \"the FreeBSD Project\" we will mean the " +"project organisation." +msgstr "" +"Говоря \"FreeBSD\", мы подразумеваем UNIX-подобную операционную систему " +"FreeBSD, основанную на BSD, тогда как говоря \"Проект FreeBSD\", мы " +"подразумеваем организацию проекта." + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:168 +#, no-wrap +msgid "Organisational structure" +msgstr "Организационная структура" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:171 +msgid "" +"While no-one takes ownership of FreeBSD, the FreeBSD organisation is divided " +"into core, committers and contributors and is part of the FreeBSD community " +"that lives around it." +msgstr "" +"Хотя никто не является владельцем FreeBSD, организация FreeBSD разделена на " +"ядро, коммиттеров и участников и является частью сообщества FreeBSD, которое " +"существует вокруг неё." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:173 +msgid "The FreeBSD Project's structure (in order of descending authority)" +msgstr "Структура проекта FreeBSD (в порядке убывания полномочий)" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:178 +#: documentation/content/en/books/dev-model/_index.adoc:213 +#, no-wrap +msgid "Group" +msgstr "Группа" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:180 +#: documentation/content/en/books/dev-model/_index.adoc:216 +#, no-wrap +msgid "Number of people" +msgstr "Количество людей" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:181 +#: documentation/content/en/books/dev-model/_index.adoc:217 +#, no-wrap +msgid "Core members" +msgstr "Основные участники" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:183 +#: documentation/content/en/books/dev-model/_index.adoc:220 +#, no-wrap +msgid "9" +msgstr "9" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:184 +#: documentation/content/en/books/dev-model/_index.adoc:221 +#, no-wrap +msgid "Committers" +msgstr "Коммиттеры" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:186 +#, no-wrap +msgid "318" +msgstr "318" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:187 +#: documentation/content/en/books/dev-model/_index.adoc:237 +#, no-wrap +msgid "Contributors" +msgstr "Участники" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:188 +#: documentation/content/en/books/dev-model/_index.adoc:239 +#, no-wrap +msgid "~3000" +msgstr "~3000" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:191 +msgid "" +"Number of committers has been determined by going through CVS logs from " +"January 1st, 2004 to December 31st, 2004 and contributors by going through " +"the list of contributions and problem reports." +msgstr "" +"Количество коммиттеров было определено путем анализа журналов CVS с 1 января " +"2004 года по 31 декабря 2004 года, а список участников — путем просмотра " +"перечня внесенных изменений и отчетов о проблемах." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:196 +msgid "" +"The main resource in the FreeBSD community is its developers: the committers " +"and contributors. It is with their contributions that the project can move " +"forward. Regular developers are referred to as contributors. As of January " +"1st, 2003, there are an estimated 5500 contributors on the project." +msgstr "" +"Основной ресурс сообщества FreeBSD — это его разработчики: коммиттеры и " +"контрибьюторы. Именно их вклад позволяет проекту развиваться. Обычные " +"разработчики называются участниками (контрибьюторами). По состоянию на 1 " +"января 2003 года в проекте насчитывается около 5500 контрибьюторов." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:200 +msgid "" +"Committers are developers with the privilege of being able to commit " +"changes. These are usually the most active developers who are willing to " +"spend their time not only integrating their own code but integrating code " +"submitted by the developers who do not have this privilege. They are also " +"the developers who elect the core team, and they have access to closed " +"discussions." +msgstr "" +"Коммиттеры — это разработчики, обладающие привилегией вносить изменения. " +"Обычно это наиболее активные разработчики, которые готовы тратить своё время " +"не только на интеграцию собственного кода, но и на интеграцию кода, " +"предоставленного разработчиками без такой привилегии. Они также выбирают " +"основную команду и имеют доступ к закрытым обсуждениям." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:204 +msgid "" +"The project can be grouped into four distinct separate parts, and most " +"developers will focus their involvement in one part of FreeBSD. The four " +"parts are kernel development, userland development, ports and " +"documentation. When referring to the base system, both kernel and userland " +"is meant." +msgstr "" +"Проект можно разделить на четыре отдельные части, и большинство " +"разработчиков сосредоточат своё участие на одной из частей FreeBSD. Эти " +"четыре части — разработка ядра, разработка пользовательского пространства, " +"порты и документация. Под базовой системой подразумеваются как ядро, так и " +"пользовательское пространство." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:206 +msgid "This split changes our table to look like this:" +msgstr "Это разделение изменяет нашу таблицу следующим образом:" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:208 +msgid "The FreeBSD Project's structure with committers in categories" +msgstr "" +"Структура проекта FreeBSD с участниками, имеющими права на запись, по " +"категориям" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:214 +#, no-wrap +msgid "Category" +msgstr "Категория" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:222 +#, no-wrap +msgid "Base" +msgstr "Базовый" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:224 +#, no-wrap +msgid "164" +msgstr "164" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:226 +#, no-wrap +msgid "Docs" +msgstr "Docs" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:228 +#, no-wrap +msgid "45" +msgstr "45" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:230 +#, no-wrap +msgid "Ports" +msgstr "Порты" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:232 +#, no-wrap +msgid "166" +msgstr "166" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:234 +#, no-wrap +msgid "Total" +msgstr "Total" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:236 +#, no-wrap +msgid "374" +msgstr "374" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:244 +msgid "" +"Number of committers per area has been determined by going through CVS logs " +"from January 1st, 2004 to December 31st, 2004. Note that many committers " +"work in multiple areas, making the total number higher than the real number " +"of committers. The total number of active unique committers on June 2022 " +"was 317." +msgstr "" +"Количество коммиттеров по областям было определено путем анализа журналов " +"CVS с 1 января 2004 года по 31 декабря 2004 года. Обратите внимание, что " +"многие коммиттеры работают в нескольких областях, поэтому общее число больше " +"реального количества коммиттеров. Общее количество активных уникальных " +"коммиттеров на июнь 2022 года составляло 317." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:247 +msgid "" +"Committers fall into three groups: committers who are only concerned with " +"one area of the project (for instance file systems), committers who are " +"involved only with one sub-project, and committers who commit to different " +"parts of the code, including sub-projects. Because some committers work on " +"different parts, the total number in the committers section of the table is " +"higher than in the above table." +msgstr "" +"Коммиттеры делятся на три группы: коммиттеры, занимающиеся только одной " +"областью проекта (например, файловыми системами), коммиттеры, участвующие " +"только в одном подпроекте, и коммиттеры, вносящие изменения в разные части " +"кода, включая подпроекты. Поскольку некоторые коммиттеры работают над " +"разными частями, общее количество в разделе коммиттеров таблицы выше, чем в " +"предыдущей таблице." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:252 +msgid "" +"The kernel is the main building block of FreeBSD. While the userland " +"applications are protected against faults in other userland applications, " +"the entire system is vulnerable to errors in the kernel. This, combined " +"with the vast amount of dependencies in the kernel and that it is not easy " +"to see all the consequences of a kernel change, demands developers with a " +"relative full understanding of the kernel. Multiple development efforts in " +"the kernel also require a closer coordination than userland applications do." +msgstr "" +"Ядро является основным строительным блоком FreeBSD. Хотя пользовательские " +"приложения защищены от сбоев в других пользовательских приложениях, вся " +"система уязвима от ошибок в ядре. Это, в сочетании с огромным количеством " +"зависимостей в ядре и тем, что нелегко увидеть все последствия изменения " +"ядра, требует от разработчиков относительно полного понимания ядра. " +"Множественные усилия по разработке в ядре также требуют более тесной " +"координации, чем пользовательские приложения." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:256 +msgid "" +"The core utilities, known as userland, provide the interface that identifies " +"FreeBSD, both user interface, shared libraries and external interfaces to " +"connecting clients. Currently, 162 people are involved in userland " +"development and maintenance, many being maintainers for their own part of " +"the code. Maintainership will be discussed in the crossref:dev-model[role-" +"maintainer, Maintainership] section." +msgstr "" +"Основные утилиты, известные как пользовательское окружение (userland), " +"предоставляют интерфейс, который определяет FreeBSD, включая " +"пользовательский интерфейс, общие библиотеки и внешние интерфейсы для " +"подключения клиентов. В настоящее время 162 человека участвуют в разработке " +"и поддержке пользовательского окружения, многие из которых являются " +"сопровождающими (maintainers) для своей части кода. Вопросы сопровождения " +"будут рассмотрены в разделе crossref:dev-model[role-" +"maintainer,Сопровождение]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:259 +msgid "" +"Documentation is handled by crossref:dev-model[sub-project-documentation, " +"The FreeBSD Documentation Project] and includes all documents surrounding " +"the FreeBSD project, including the web pages. There were during 2004 101 " +"people making commits to the FreeBSD Documentation Project." +msgstr "" +"Документация обрабатывается crossref:dev-model[sub-project-documentation, " +"Проектом документации FreeBSD] и включает все документы, связанные с " +"проектом FreeBSD, включая веб-страницы. В течение 2004 года 101 человек " +"внесли изменения в Проект документации FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:267 +msgid "" +"Ports is the collection of meta-data that is needed to make software " +"packages build correctly on FreeBSD. An example of a port is the port for " +"the web-browser Mozilla. It contains information about where to fetch the " +"source, what patches to apply and how, and how the package should be " +"installed on the system. This allows automated tools to fetch, build and " +"install the package. As of this writing, there are more than 12600 ports " +"available. footnote:[Statistics are generated by counting the number of " +"entries in the file fetched by portsdb by April 1st, 2005. portsdb is a part " +"of the port sysutils/portupgrade.] , ranging from web servers to games, " +"programming languages and most of the application types that are in use on " +"modern computers. Ports will be discussed further in the section " +"crossref:dev-model[sub-project-ports, The Ports Subproject]." +msgstr "" +"Порты — это коллекция метаданных, необходимых для корректной сборки " +"программных пакетов в FreeBSD. Например, порт для веб-браузера Mozilla " +"содержит информацию о том, откуда загружать исходный код, какие патчи " +"применять и как, а также как пакет должен быть установлен в системе. Это " +"позволяет автоматизированным инструментам загружать, собирать и " +"устанавливать пакеты. На момент написания доступно более 12600 портов " +"footnote:[Статистика получена подсчётом количества записей в файле, " +"загруженном portsdb на 1 апреля 2005 года. portsdb является частью порта " +"sysutils/portupgrade.], начиная от веб-серверов и игр до языков " +"программирования и большинства типов приложений, используемых на современных " +"компьютерах. Порты подробно рассматриваются в разделе crossref:dev-model[sub-" +"project-ports, Подпроект Ports]." + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:269 +#, no-wrap +msgid "Methodology model" +msgstr "Методологическая модель" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:272 +#, no-wrap +msgid "Development model" +msgstr "Модель разработки" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:276 +msgid "" +"There is no defined model for how people write code in FreeBSD. However, " +"Niels Jørgenssen has suggested a model of how written code is integrated " +"into the project." +msgstr "" +"Не существует определенной модели того, как люди пишут код в FreeBSD. Однако " +"Нильс Йоргенссен предложил модель того, как написанный код интегрируется в " +"проект." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:278 +#: documentation/content/en/books/dev-model/_index.adoc:877 +msgid "Jørgenssen's model for change integration" +msgstr "Модель Йоргенссена для интеграции изменений" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:283 +#: documentation/content/en/books/dev-model/_index.adoc:882 +#, no-wrap +msgid "Stage" +msgstr "Этап" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:284 +#: documentation/content/en/books/dev-model/_index.adoc:883 +#, no-wrap +msgid "Next if successful" +msgstr "Следующий, если успешно" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:286 +#: documentation/content/en/books/dev-model/_index.adoc:885 +#, no-wrap +msgid "Next if unsuccessful" +msgstr "Следующий, если неудачно" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:287 +#: documentation/content/en/books/dev-model/_index.adoc:294 +#: documentation/content/en/books/dev-model/_index.adoc:298 +#: documentation/content/en/books/dev-model/_index.adoc:302 +#: documentation/content/en/books/dev-model/_index.adoc:306 +#: documentation/content/en/books/dev-model/_index.adoc:309 +#: documentation/content/en/books/dev-model/_index.adoc:886 +#: documentation/content/en/books/dev-model/_index.adoc:893 +#: documentation/content/en/books/dev-model/_index.adoc:897 +#: documentation/content/en/books/dev-model/_index.adoc:901 +#: documentation/content/en/books/dev-model/_index.adoc:905 +#: documentation/content/en/books/dev-model/_index.adoc:908 +#, no-wrap +msgid "code" +msgstr "программирование" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:288 +#: documentation/content/en/books/dev-model/_index.adoc:291 +#: documentation/content/en/books/dev-model/_index.adoc:887 +#: documentation/content/en/books/dev-model/_index.adoc:890 +#, no-wrap +msgid "review" +msgstr "рецензирование" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:292 +#: documentation/content/en/books/dev-model/_index.adoc:295 +#: documentation/content/en/books/dev-model/_index.adoc:891 +#: documentation/content/en/books/dev-model/_index.adoc:894 +#, no-wrap +msgid "pre-commit test" +msgstr "предварительная проверка перед коммитом" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:296 +#: documentation/content/en/books/dev-model/_index.adoc:299 +#: documentation/content/en/books/dev-model/_index.adoc:895 +#: documentation/content/en/books/dev-model/_index.adoc:898 +#, no-wrap +msgid "development release" +msgstr "релиз для разработки" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:300 +#: documentation/content/en/books/dev-model/_index.adoc:303 +#: documentation/content/en/books/dev-model/_index.adoc:899 +#: documentation/content/en/books/dev-model/_index.adoc:902 +#, no-wrap +msgid "parallel debugging" +msgstr "параллельная отладка" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:304 +#: documentation/content/en/books/dev-model/_index.adoc:307 +#: documentation/content/en/books/dev-model/_index.adoc:903 +#: documentation/content/en/books/dev-model/_index.adoc:906 +#, no-wrap +msgid "production release" +msgstr "релиз для производства" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:313 +msgid "" +"The \"development release\" is the FreeBSD-CURRENT (\"-CURRENT\") branch and " +"the \"production release\" is the FreeBSD-STABLE branch (\"-STABLE\") " +"[crossref:dev-model[jorgensen2001, Jørgensen, 2001]]." +msgstr "" +"\"Релиз для разработки\" — это ветка FreeBSD-CURRENT (\"-CURRENT\"), а " +"\"релиз для производства\" — ветка FreeBSD-STABLE (\"-STABLE\") " +"[crossref:dev-model[jorgensen2001, Jørgensen, 2001]]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:319 +msgid "" +"This is a model for one change, and shows that after coding, developers seek " +"community review and try integrating it with their own systems. After " +"integrating the change into the development release, called FreeBSD-CURRENT, " +"it is tested by many users and developers in the FreeBSD community. After " +"it has gone through enough testing, it is merged into the production " +"release, called FreeBSD-STABLE. Unless each stage is finished successfully, " +"the developer needs to go back and make modifications in the code and " +"restart the process. To integrate a change with either -CURRENT or -STABLE " +"is called making a commit." +msgstr "" +"Это модель для одного изменения, которая показывает, что после написания " +"кода разработчики ищут рецензирование сообщества и пытаются интегрировать " +"это изменение в свои собственные системы. После интеграции изменения в " +"версию разработки, называемую FreeBSD-CURRENT, оно тестируется многими " +"пользователями и разработчиками сообщества FreeBSD. После достаточного " +"тестирования оно объединяется с производственной версией, называемой FreeBSD-" +"STABLE. Если каждая стадия не завершена успешно, разработчику необходимо " +"вернуться, внести изменения в код и перезапустить процесс. Интеграция " +"изменения в -CURRENT или -STABLE называется выполнением коммита." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:322 +msgid "" +"Jørgensen found that most FreeBSD developers work individually, meaning that " +"this model is used in parallel by many developers on the different ongoing " +"development efforts. A developer can also be working on multiple changes, " +"so that while they are waiting for review or people to test one or more of " +"their changes, they may be writing another change." +msgstr "" +"Йоргенсен обнаружил, что большинство разработчиков FreeBSD работают " +"индивидуально, то есть эта модель используется параллельно многими " +"разработчиками в различных текущих процессах разработки. Разработчик также " +"может работать над несколькими изменениями одновременно, поэтому, ожидая " +"рецензирования или тестирования одного или нескольких своих изменений, он " +"может писать другое изменение." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:325 +msgid "" +"As each commit represents an increment, this is a massively incremental " +"model. The commits are in fact so frequent that during one year footnote:" +"[The period from January 1st, 2004 to December 31st, 2004 was examined to " +"find this number.] , 85427 commits were made, making a daily average of 233 " +"commits." +msgstr "" +"Поскольку каждый коммит представляет собой инкрементальное изменение, это " +"модель с очень высокой степенью инкрементальности. Коммиты происходят " +"настолько часто, что за один год footnote:[Для получения этого числа был " +"исследован период с 1 января 2004 года по 31 декабря 2004 года.], было " +"сделано 85427 коммитов, что составляет в среднем 233 коммита в день." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:329 +msgid "" +"Within the \"code\" bracket in Jørgensen's model, each programmer has their " +"own working style and follows their own development models. The bracket " +"could very well have been called \"development\" as it includes requirements " +"gathering and analysis, system and detailed design, implementation and " +"verification. However, the only output from these stages is the source code " +"or system documentation." +msgstr "" +"В рамках \"программирования\" в модели Йоргенсена, каждый программист имеет " +"свой собственный стиль работы и следует своим собственным моделям " +"разработки. Этот этап вполне мог бы называться \"разработкой\", так как он " +"включает сбор и анализ требований, системное и детальное проектирование, " +"реализацию и проверку. Однако, единственным результатом этих подэтапов " +"являются исходный код или документация системы." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:335 +msgid "" +"From a stepwise model's perspective (such as the waterfall model), the other " +"brackets can be seen as further verification and system integration. This " +"system integration is also important to see if a change is accepted by the " +"community. Up until the code is committed, the developer is free to choose " +"how much to communicate about it to the rest of the project. In order for " +"-CURRENT to work as a buffer (so that bright ideas that had some " +"undiscovered drawbacks can be backed out) the minimum time a commit should " +"be in -CURRENT before merging it to -STABLE is 3 days. Such a merge is " +"referred to as an MFC (Merge From Current)." +msgstr "" +"С точки зрения пошаговой модели (такой как каскадная модель), остальные " +"этапы можно рассматривать как дальнейшую проверку и интеграцию системы. Эта " +"интеграция системы также важна для определения того, будет ли изменение " +"принято сообществом. До момента фиксации кода разработчик волен выбирать, " +"насколько активно он будет обсуждать его с остальными участниками проекта. " +"Чтобы -CURRENT мог выполнять роль буфера (позволяя откатывать идеи, которые " +"оказались с невыявленными недостатками), минимальный срок, в течение " +"которого изменения должны оставаться в -CURRENT перед слиянием в -STABLE, " +"составляет 3 дня. Такое слияние называется MFC (Merge From Current)." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:338 +msgid "" +"It is important to notice the word \"change\". Most commits do not contain " +"radical new features, but are maintenance updates." +msgstr "" +"Важно обратить внимание на слово \"изменение\". Большинство коммитов не " +"содержат радикально новых функций, а представляют собой обновления для " +"поддержки." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:341 +msgid "" +"The only exceptions from this model are security fixes and changes to " +"features that are deprecated in the -CURRENT branch. In these cases, " +"changes can be committed directly to the -STABLE branch." +msgstr "" +"Единственными исключениями из этой модели являются исправления безопасности " +"и изменения в функциях, объявленных устаревшими в ветке -CURRENT. В этих " +"случаях изменения могут быть внесены напрямую в ветку -STABLE." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:346 +msgid "" +"In addition to many people working on the project, there are many related " +"projects to the FreeBSD Project. These are either projects developing brand " +"new features, sub-projects or projects whose outcome is incorporated into " +"FreeBSD footnote:[For instance, the development of the Bluetooth stack " +"started as a sub-project until it was deemed stable enough to be merged into " +"the -CURRENT branch. Now it is a part of the core FreeBSD system.]. These " +"projects fit into the FreeBSD Project just like regular development efforts: " +"they produce code that is integrated with the FreeBSD Project. However, " +"some of them (like Ports and Documentation) have the privilege of being " +"applicable to both branches or commit directly to both -CURRENT and -STABLE." +msgstr "" +"В дополнение к множеству людей, работающих над проектом, существует " +"множество связанных проектов в рамках FreeBSD. Это могут быть проекты, " +"разрабатывающие совершенно новые функции, подпроекты или проекты, результаты " +"которых интегрируются в FreeBSD footnote:[Например, разработка стека " +"Bluetooth начиналась как подпроект, пока не была признана достаточно " +"стабильной для включения в ветку -CURRENT. Теперь это часть основной системы " +"FreeBSD.]. Эти проекты вписываются в FreeBSD так же, как и обычные " +"разработки: они создают код, который интегрируется с проектом FreeBSD. " +"Однако некоторые из них (например, Ports и Documentation) имеют привилегию " +"применяться к обеим веткам или коммитить напрямую как в -CURRENT, так и в " +"-STABLE." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:353 +msgid "" +"There is no standards to how design should be done, nor is design collected " +"in a centralised repository. The main design is that of 4.4BSD. footnote:" +"[According to Kirk McKusick, after 20 years of developing UNIX operating " +"systems, the interfaces are for the most part figured out. There is " +"therefore no need for much design. However, new applications of the system " +"and new hardware leads to some implementations being more beneficial than " +"those that used to be preferred. One example is the introduction of web " +"browsing that made the normal TCP/IP connection a short burst of data rather " +"than a steady stream over a longer period of time.] As design is a part of " +"the \"Code\" bracket in Jørgenssen's model, it is up to every developer or " +"sub-project how this should be done. Even if the design should be stored in " +"a central repository, the output from the design stages would be of limited " +"use as the differences of methodologies would make them poorly if at all " +"interoperable. For the overall design of the project, the project relies on " +"the sub-projects to negotiate fit interfaces between each other rather than " +"to dictate interfacing." +msgstr "" +"Не существует стандартов по выполнению проектирования, также как и " +"централизованного репозитория для хранения проектов. Основной дизайн взят из " +"4.4BSD. footnote:[По словам Кирка Маккузика, после 20 лет разработки " +"операционных систем UNIX, интерфейсы в основном уже определены. Поэтому нет " +"необходимости в большом количестве проектирования. Однако новые применения " +"системы и новое оборудование приводят к тому, что некоторые реализации " +"становятся более выгодными по сравнению с ранее предпочитаемыми. Одним из " +"примеров является появление веб-браузинга, который превратил обычное TCP/IP-" +"соединение в короткие всплески данных, а не в устойчивый поток за более " +"длительный период времени.] Поскольку проектирование является частью этапа " +"\"Программирование\" в модели Йоргенсена, каждый разработчик или подпроект " +"сам решает, как это должно выполняться. Даже если проектирование должно " +"храниться в централизованном репозитории, результаты этапов проектирования " +"будут иметь ограниченную полезность, так как различия в методологиях сделают " +"их плохо совместимыми, если вообще совместимыми. Для общего проектирования " +"проекта, проект полагается на подпроекты, которые договариваются о " +"совместимых интерфейсах между собой, а не на диктат интерфейсов." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:355 +#, no-wrap +msgid "Release branches" +msgstr "Ветви релизов" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:359 +msgid "" +"The releases of FreeBSD are best illustrated by a tree with many branches " +"where each major branch represents a major version. Minor versions are " +"represented by branches of the major branches." +msgstr "" +"Версии FreeBSD лучше всего иллюстрируются деревом с множеством ветвей, где " +"каждая основная ветвь представляет основную версию. Минорные версии " +"представлены ветвями основных ветвей." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:366 +msgid "" +"In the following release tree, arrows that follow one-another in a " +"particular direction represent a branch. Boxes with full lines and diamonds " +"represent official releases. Boxes with dotted lines represent the " +"development branch at that time. Security branches are represented by " +"ovals. Diamonds differ from boxes in that they represent a fork, meaning a " +"place where a branch splits into two branches where one of the branches " +"becomes a sub-branch. For example, at 4.0-RELEASE the 4.0-CURRENT branch " +"split into 4-STABLE and 5.0-CURRENT. At 4.5-RELEASE, the branch forked off a " +"security branch called RELENG_4_5." +msgstr "" +"В следующем дереве релизов стрелки, следующие друг за другом в определенном " +"направлении, представляют ветку. Прямоугольники со сплошными линиями и ромбы " +"обозначают официальные релизы. Прямоугольники с пунктирными линиями " +"представляют ветку разработки на тот момент. Ветки безопасности обозначены " +"овалами. Ромбы отличаются от прямоугольников тем, что они представляют " +"развилку, то есть место, где ветка разделяется на две ветки, одна из которых " +"становится подветкой. Например, на 4.0-RELEASE ветка 4.0-CURRENT разделилась " +"на 4-STABLE и 5.0-CURRENT. На 4.5-RELEASE ветка разветвилась на ветку " +"безопасности под названием RELENG_4_5." + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:367 +#, no-wrap +msgid "The FreeBSD release tree" +msgstr "Дерево релизов FreeBSD" + +#. type: Positional ($1) AttributeList argument for macro 'image' +#: documentation/content/en/books/dev-model/_index.adoc:368 +#, no-wrap +msgid "Refer to table below for a screen-reader friendly version." +msgstr "Обратитесь к таблице ниже для удобной версии для экранных дикторов." + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:368 +#, no-wrap +msgid "branches.png" +msgstr "branches.png" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:374 +#, no-wrap +msgid "Major release" +msgstr "Основные выпуски" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:375 +#, no-wrap +msgid "Forked from" +msgstr "Форкнут из" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:377 +#, no-wrap +msgid "Following minor releases" +msgstr "Следующие минорные выпуски" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:378 +#: documentation/content/en/books/dev-model/_index.adoc:398 +#, no-wrap +msgid "..." +msgstr "..." + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:382 +#, no-wrap +msgid "3.0 Current (development branch)" +msgstr "3.0 Current (ветка разработки)" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:385 +#, no-wrap +msgid "Releng 3 branches: 3.0 Release to 3.5 Release, leading to 3.5.1 Release and the subsequent 3 Stable branch" +msgstr "Ветки Releng 3: выпуски с 3.0 Release по 3.5 Release, ведущие к выпуску 3.5.1 Release и последующей ветке 3 Stable" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:386 +#, no-wrap +msgid "4.0 Current (development branch)" +msgstr "4.0 Current (ветка разработки)" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:387 +#, no-wrap +msgid "3.1 Release" +msgstr "Релиз 3.1" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:389 +#, no-wrap +msgid "Releng 4 branches: 4.1 Release to 4.6 Release (and 4.6.2 Release), then 4.7 Release to 4.11 Release (all starting at 4.3 Release also leading to a Releng_4_n branch), and the subsequent 4 Release branch" +msgstr "Ветви Releng 4: релизы с 4.1 по 4.6 (и релиз 4.6.2), затем релизы с 4.7 по 4.11 (все, начиная с релиза 4.3, также ведущие к ветви Releng_4_n), и последующая ветвь релиза 4" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:390 +#, no-wrap +msgid "5.0 Current (development branch)" +msgstr "5.0 Current (ветка разработки)" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:391 +#, no-wrap +msgid "4.0 Release" +msgstr "Релиз 4.0" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:393 +#, no-wrap +msgid "Releng 5 branches: 5.0 Release to 5.4 Release (all except 5.0 and 5.3 also leading to a Releng_5_n branch), and the subsequent 5 Release branch" +msgstr "Ветви Releng 5: Релизы с 5.0 до 5.4 (за исключением 5.0 и 5.3, которые также ведут к ветке Releng_5_n), и последующая ветка релиза 5" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:394 +#, no-wrap +msgid "6.0 Current (development branch)" +msgstr "6.0 Current (ветка разработки)" + +#. type: Table +#: documentation/content/en/books/dev-model/_index.adoc:395 +#, no-wrap +msgid "5.3 Release" +msgstr "Релиз 5.3" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:405 +msgid "" +"The latest -CURRENT version is always referred to as -CURRENT, while the " +"latest -STABLE release is always referred to as -STABLE. In this figure, " +"-STABLE refers to 4-STABLE while -CURRENT refers to 5.0-CURRENT following " +"5.0-RELEASE. [crossref:dev-model[freebsd-releng, FreeBSD, 2002E]]" +msgstr "" +"Последняя версия -CURRENT всегда обозначается как -CURRENT, а последний " +"релиз -STABLE всегда обозначается как -STABLE. На этом рисунке -STABLE " +"относится к 4-STABLE, а -CURRENT относится к 5.0-CURRENT после 5.0-RELEASE. " +"[crossref:dev-model[freebsd-releng, FreeBSD, 2002E]]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:412 +msgid "" +"A \"major release\" is always made from the -CURRENT branch. However, the " +"-CURRENT branch does not need to fork at that point in time, but can focus " +"on stabilising. An example of this is that following 3.0-RELEASE, 3.1-" +"RELEASE was also a continuation of the -CURRENT-branch, and -CURRENT did not " +"become a true development branch until this version was released and the 3-" +"STABLE branch was forked. When -CURRENT returns to becoming a development " +"branch, it can only be followed by a major release. 5-STABLE is predicted " +"to be forked off 5.0-CURRENT at around 5.3-RELEASE. It is not until 5-" +"STABLE is forked that the development branch will be branded 6.0-CURRENT." +msgstr "" +"«Основной выпуск» всегда создаётся из ветки -CURRENT. Однако ветка -CURRENT " +"не обязательно должна разветвляться в этот момент, а может сосредоточиться " +"на стабилизации. Примером этого является то, что после 3.0-RELEASE, 3.1-" +"RELEASE также был продолжением ветки -CURRENT, и -CURRENT не стал настоящей " +"веткой разработки до тех пор, пока не был выпущен этот релиз и не была " +"создана ветка 3-STABLE. Когда -CURRENT снова становится веткой разработки, " +"за ним может следовать только основной выпуск. Ожидается, что ветка 5-STABLE " +"будет отделена от 5.0-CURRENT примерно на момент выпуска 5.3-RELEASE. Только " +"после отделения 5-STABLE ветка разработки получит название 6.0-CURRENT." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:414 +msgid "" +"A \"minor release\" is made from the -CURRENT branch following a major " +"release, or from the -STABLE branch." +msgstr "" +"\"Минорный релиз\" создается из ветки -CURRENT после основного релиза или из " +"ветки -STABLE." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:417 +msgid "" +"Following and including, 4.3-RELEASEfootnote:[The first release this " +"actually happened for was 4.5-RELEASE, but security branches were at the " +"same time created for 4.3-RELEASE and 4.4-RELEASE.], when a minor release " +"has been made, it becomes a \"security branch\". This is meant for " +"organisations that do not want to follow the -STABLE branch and the " +"potential new/changed features it offers, but instead require an absolutely " +"stable environment, only updating to implement security updates. footnote:" +"[There is a terminology overlap with respect to the word \"stable\", which " +"leads to some confusion. The -STABLE branch is still a development branch, " +"whose goal is to be useful for most people. If it is never acceptable for a " +"system to get changes that are not announced at the time it is deployed, " +"that system should run a security branch.]" +msgstr "" +"Начиная с версии 4.3-RELEASE footnote:[Первым релизом, для которого это " +"действительно произошло, был 4.5-RELEASE, но ветки безопасности были созданы " +"одновременно для 4.3-RELEASE и 4.4-RELEASE.], когда выпускается минорный " +"релиз, он становится «веткой безопасности». Это предназначено для " +"организаций, которые не хотят следовать ветке -STABLE и потенциальным новым/" +"изменённым функциям, которые она предлагает, но вместо этого требуют " +"абсолютно стабильной среды, обновляемой только для внедрения исправлений " +"безопасности. footnote:[Здесь вы видите терминологическое пересечение со " +"словом «стабильный», что приводит к некоторой путанице. Ветка -STABLE по-" +"прежнему является веткой разработки, цель которой — быть полезной для " +"большинства пользователей. Если для системы неприемлемо получать изменения, " +"которые не были объявлены на момент её развёртывания, такая система должна " +"работать на ветке безопасности.]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:422 +msgid "" +"Each update to a security branch is called a \"patchlevel\". For every " +"security enhancement that is done, the patchlevel number is increased, " +"making it easy for people tracking the branch to see what security " +"enhancements they have implemented. In cases where there have been " +"especially serious security flaws, an entire new release can be made from a " +"security branch. An example of this is 4.6.2-RELEASE." +msgstr "" +"Каждое обновление в ветке безопасности называется \"уровнем исправления\" " +"(patchlevel). Для каждого выполненного улучшения безопасности номер уровня " +"исправления увеличивается, что позволяет легко отслеживать, какие улучшения " +"безопасности были реализованы. В случаях особенно серьезных уязвимостей " +"безопасности может быть выпущен полностью новый релиз из ветки безопасности. " +"Примером этого является 4.6.2-RELEASE." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:424 +#, no-wrap +msgid "Model summary" +msgstr "Сводка модели" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:427 +msgid "" +"To summarise, the development model of FreeBSD can be seen as the following " +"tree:" +msgstr "" +"Для подведения итогов, модель разработки FreeBSD можно представить в виде " +"следующего дерева:" + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:428 +#, no-wrap +msgid "The overall development model" +msgstr "Общая модель разработки" + +#. type: Positional ($1) AttributeList argument for macro 'image' +#: documentation/content/en/books/dev-model/_index.adoc:429 +#: documentation/content/en/books/dev-model/_index.adoc:1109 +#, no-wrap +msgid "Refer to paragraphs below for a screen-reader friendly version." +msgstr "Обратитесь к параграфам ниже для версии, удобной для экранных дикторов." + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:429 +#, no-wrap +msgid "freebsd-code-model.png" +msgstr "freebsd-code-model.png" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:432 +msgid "" +"The tree of the FreeBSD development with ongoing development efforts and " +"continuous integration." +msgstr "" +"Дерево разработки FreeBSD с текущими усилиями по разработке и непрерывной " +"интеграцией." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:436 +msgid "" +"The tree symbolises the release versions with major versions spawning new " +"main branches and minor versions being versions of the main branch. The top " +"branch is the -CURRENT branch where all new development is integrated, and " +"the -STABLE branch is the branch directly below it. Below the -STABLE " +"branch are old, unsupported versions." +msgstr "" +"Дерево символизирует версии выпусков, где основные версии порождают новые " +"главные ветви, а второстепенные версии являются версиями главной ветви. " +"Верхняя ветвь — это ветвь -CURRENT, в которую интегрируется вся новая " +"разработка, а ветвь -STABLE находится непосредственно под ней. Под ветвью " +"-STABLE находятся старые, неподдерживаемые версии." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:440 +msgid "" +"Clouds of development efforts hang over the project where developers use the " +"development models they see fit. The product of their work is then " +"integrated into -CURRENT where it undergoes parallel debugging and is " +"finally merged from -CURRENT into -STABLE. Security fixes are merged from " +"-STABLE to the security branches." +msgstr "" +"Проект находится в тумане постоянной разработки, и разработчики выбирают " +"модели разработки, которые считают подходящими. Результаты их работы затем " +"интегрируются в -CURRENT, где проходят параллельную отладку, и наконец " +"объединяются из -CURRENT в -STABLE. Исправления безопасности объединяются из " +"-STABLE в ветки безопасности." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:447 +msgid "" +"Many committers have a special area of responsibility. These roles are " +"called hats. These hats can be either project roles, such as public " +"relations officer, or maintainer for a certain area of the code. Because " +"this is a project where people give voluntarily of their spare time, people " +"with assigned hats are not always available. They must therefore appoint a " +"deputy that can perform the hat's role in their absence. The other option " +"is to have the role held by a group." +msgstr "" +"Многие коммиттеры имеют специальную область ответственности. Эти роли " +"называются \"hats\" (шляпами). Эти роли могут быть либо проектными ролями, " +"например, офицер по связям с общественностью, либо сопровождающим " +"определённой части кода. Поскольку это проект, где люди добровольно уделяют " +"своё свободное время, люди с назначенными ролями не всегда доступны. Поэтому " +"они должны назначить заместителя, который может выполнять эту роль в их " +"отсутствие. Другой вариант — передать роль группе." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:452 +msgid "" +"Many of these hats are not formalised. Formalised hats have a charter " +"stating the exact purpose of the hat along with its privileges and " +"responsibilities. The writing of such charters is a new part of the " +"project, and has thus yet to be completed for all hats. These hat " +"descriptions are not such a formalisation, rather a summary of the role with " +"links to the charter where available and contact addresses." +msgstr "" +"Многие из этих ролей не формализованы. Формализованные роли имеют устав, в " +"котором указаны точные цели, привилегии и обязанности. Написание таких " +"уставов — новая часть проекта, поэтому оно ещё не завершено для всех ролей. " +"Эти описания ролей не являются формализацией, а скорее представляют собой " +"краткое описание роли со ссылками на устав, где он доступен, и контактными " +"адресами." + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:454 +#, no-wrap +msgid "Hats" +msgstr "Ответственные" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:457 +#, no-wrap +msgid "General Hats" +msgstr "Стандартные роли" + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:460 +#, no-wrap +msgid "Contributor" +msgstr "Участник (контрибьютор)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:465 +msgid "" +"A Contributor contributes to the FreeBSD project either as a developer, as " +"an author, by sending problem reports, or in other ways contributing to the " +"progress of the project. A contributor has no special privileges in the " +"FreeBSD project. [crossref:dev-model[freebsd-contributors, FreeBSD, 2002F]]" +msgstr "" +"Участник вносит вклад в проект FreeBSD в качестве разработчика, автора, " +"отправляя отчеты о проблемах или другими способами способствуя прогрессу " +"проекта. Участник не имеет особых привилегий в проекте FreeBSD. " +"[crossref:dev-model[freebsd-contributors, FreeBSD, 2002F]]" + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:467 +#, no-wrap +msgid "Committer" +msgstr "Коммиттер" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:472 +msgid "" +"A person who has the required privileges to add their code or documentation " +"to the repository. A committer has made a commit within the past 12 " +"months. [crossref:dev-model[freebsd-developer-handbook, FreeBSD, 2000A]] An " +"active committer is a committer who has made an average of one commit per " +"month during that time." +msgstr "" +"Человек, обладающий необходимыми привилегиями для добавления своего кода или " +"документации в репозиторий. Коммиттер совершил коммит в течение последних 12 " +"месяцев. [crossref:dev-model[freebsd-developer-handbook, FreeBSD, 2000A]] " +"Активный коммиттер — это коммиттер, который в среднем совершал один коммит в " +"месяц в течение этого времени." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:475 +msgid "" +"It is worth noting that there are no technical barriers to prevent someone, " +"once having gained commit privileges to the main- or a sub-project, to make " +"commits in parts of that project's source the committer did not specifically " +"get permission to modify. However, when wanting to make modifications to " +"parts a committer has not been involved in before, they should read the logs " +"to see what has happened in this area before, and also read the MAINTAINERS " +"file to see if the maintainer of this part has any special requests on how " +"changes in the code should be made." +msgstr "" +"Стоит отметить, что нет технических препятствий, которые могли бы помешать " +"кому-либо, получившему права на коммиты в основном или подпроекте, делать " +"коммиты в частях исходного кода проекта, для которых у коммиттера нет явного " +"разрешения на изменение. Однако, при желании внести изменения в части, с " +"которыми коммиттер ранее не работал, следует изучить логи, чтобы понять, что " +"происходило в этой области ранее, а также прочитать файл MAINTAINERS, чтобы " +"узнать, есть ли у сопровождающего этой части какие-либо особые требования к " +"внесению изменений в код." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:477 +#, no-wrap +msgid "Core Team" +msgstr "Основная команда (Core Team)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:483 +msgid "" +"The core team is elected by the committers from the pool of committers and " +"serves as the board of directors of the FreeBSD project. It promotes active " +"contributors to committers, assigns people to well-defined hats, and is the " +"final arbiter of decisions involving which way the project should be " +"heading. As of July 1st, 2004, core consisted of 9 members. Elections are " +"held every two years." +msgstr "" +"Основная команда избирается коммиттерами из числа коммиттеров и выполняет " +"функции совета директоров проекта FreeBSD. Она повышает активных участников " +"до коммиттеров, назначает людей на четко определенные роли (hats) и является " +"окончательным арбитром при принятии решений о направлении развития проекта. " +"На 1 июля 2004 года в состав основной команды входило 9 членов. Выборы " +"проводятся каждые два года." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:485 +#, no-wrap +msgid "Maintainership" +msgstr "Сопровождение" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:489 +msgid "" +"Maintainership means that the person is responsible for what is allowed to " +"go into that area of the code and has the final say should disagreements " +"over the code occur. This involves proactive work aimed at stimulating " +"contributions and reactive work in reviewing commits." +msgstr "" +"Сопровождение означает, что человек ответственен за то, что допускается в " +"определённую часть кода, и имеет решающее слово в случае разногласий по " +"поводу кода. Это включает в себя как активную работу, направленную на " +"стимулирование участников (контрибьюторов), так и реактивную работу по " +"рецензированию коммитов." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:492 +msgid "" +"With the FreeBSD source comes the MAINTAINERS file that contains a one-line " +"summary of how each maintainer would like contributions to be made. Having " +"this notice and contact information enables developers to focus on the " +"development effort rather than being stuck in a slow correspondence should " +"the maintainer be unavailable for some time." +msgstr "" +"В исходном коде FreeBSD есть файл MAINTAINERS, содержащий краткое описание " +"того, как каждый сопровождающий предпочитает получать вклады. Наличие этого " +"уведомления и контактной информации позволяет разработчикам сосредоточиться " +"на разработке, а не застревать в медленной переписке, если сопровождающий " +"будет недоступен в течение некоторого времени." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:495 +msgid "" +"If the maintainer is unavailable for an unreasonably long period of time, " +"and other people do a significant amount of work, maintainership may be " +"switched without the maintainer's approval. This is based on the stance " +"that maintainership should be demonstrated, not declared." +msgstr "" +"Если сопровождающий недоступен в течение неоправданно долгого времени, и " +"другие люди выполняют значительный объем работы, сопровождение может быть " +"передано без согласия сопровождающего. Это основано на позиции, что " +"сопровождение должно быть продемонстрировано, а не заявлено." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:497 +msgid "" +"Maintainership of a particular piece of code is a hat that is not held as a " +"group." +msgstr "" +"Сопровождение определенного участка кода — это роль, которая не " +"осуществляется коллективно." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:499 +#, no-wrap +msgid "Official Hats" +msgstr "Официальные Роли" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:504 +msgid "" +"The official hats in the FreeBSD Project are hats that are more or less " +"formalised and mainly administrative roles. They have the authority and " +"responsibility for their area. The following list shows the responsibility " +"lines and gives a description of each hat, including who it is held by." +msgstr "" +"Официальные роли в проекте FreeBSD — это более или менее формализованные и в " +"основном административные должности. Они обладают полномочиями и " +"ответственностью в своей области. В следующем списке показаны направления " +"ответственности и дано описание каждой роли, включая информацию о том, кто " +"её занимает." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:506 +#, no-wrap +msgid "Documentation project manager" +msgstr "Менеджер проекта документации" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:509 +msgid "" +"crossref:dev-model[sub-project-documentation, The FreeBSD Documentation " +"Project] architect is responsible for defining and following up " +"documentation goals for the committers in the Documentation project, which " +"they supervise." +msgstr "" +"Архитектор crossref:dev-model[sub-project-documentation, Проекта " +"документации FreeBSD] отвечает за определение и контроль целей документации " +"для коммиттеров в проекте Документации, за которым они присматривают." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:512 +msgid "" +"Hat held by: The DocEng team mailto:doceng@FreeBSD.org[doceng@FreeBSD.org]. " +"The https://www.freebsd.org/internal/doceng/[ DocEng Charter]." +msgstr "" +"Роль поддерживается: Командой DocEng " +"mailto:doceng@FreeBSD.org[doceng@FreeBSD.org]. https://www.freebsd.org/" +"internal/doceng/[Устав DocEng]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:514 +#, no-wrap +msgid "Postmaster" +msgstr "Postmaster" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:518 +msgid "" +"The Postmaster is responsible for mail being correctly delivered to the " +"committers' email address. They are also responsible for ensuring that the " +"mailing lists work and should take measures against possible disruptions of " +"mail such as having troll-, spam- and virus-filters." +msgstr "" +"Postmaster отвечает за корректную доставку почты на адреса электронной почты " +"коммиттеров. Также он отвечает за работоспособность почтовых рассылок и " +"должен принимать меры против возможных сбоев в работе почты, таких как " +"троллинг-, спам- и вирус-фильтры." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:520 +msgid "" +"Hat currently held by: the Postmaster Team " +"mailto:postmaster@FreeBSD.org[postmaster@FreeBSD.org]." +msgstr "" +"Текущий руководитель: Команда почтовых серверов " +"mailto:postmaster@FreeBSD.org[postmaster@FreeBSD.org]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:522 +#, no-wrap +msgid "Release Coordination" +msgstr "Координация выпусков" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:525 +msgid "The responsibilities of the Release Engineering Team are" +msgstr "Обязанности команды выпуска релизов включают" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:527 +msgid "" +"Setting, publishing and following a release schedule for official releases" +msgstr "Установка, публикация и соблюдение графика выпуска официальных релизов" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:528 +msgid "Documenting and formalising release engineering procedures" +msgstr "Документирование и формализация процедур выпуска релизов" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:529 +msgid "Creation and maintenance of code branches" +msgstr "Создание и поддержка веток кода" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:530 +msgid "" +"Coordinating with the Ports and Documentation teams to have an updated set " +"of packages and documentation released with the new releases" +msgstr "" +"Согласование с командами Ports и Documentation для выпуска обновленного " +"набора пакетов и документации вместе с новыми релизами" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:531 +msgid "" +"Coordinating with the Security team so that pending releases are not " +"affected by recently disclosed vulnerabilities." +msgstr "" +"Координация с командой безопасности для того, чтобы готовящиеся выпуски не " +"были затронуты недавно обнаруженными уязвимостями." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:534 +msgid "" +"Further information about the development process is available in the " +"crossref:dev-model[process-release-engineering, Release engineering] section." +msgstr "" +"Дополнительная информация о процессе разработки доступна в разделе " +"crossref:dev-model[process-release-engineering, Выпуск релизов]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:538 +msgid "" +"Hat held by: the Release Engineering team " +"mailto:re@FreeBSD.org[re@FreeBSD.org]. The https://www.freebsd.org/releng/" +"charter/[ Release Engineering Charter]." +msgstr "" +"Роль поддерживается: командой выпуск релизов (Release Engineering) " +"mailto:re@FreeBSD.org[re@FreeBSD.org]. https://www.freebsd.org/releng/" +"charter/[ Устав Release Engineering]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:540 +#, no-wrap +msgid "Public Relations & Corporate Liaison" +msgstr "Отношения с общественностью и корпоративные связи" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:543 +msgid "The Public Relations & Corporate Liaison's responsibilities are:" +msgstr "" +"Обязанности отдела по связям с общественностью и корпоративным отношениям " +"включают:" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:545 +msgid "" +"Making press statements when happenings that are important to the FreeBSD " +"Project happen." +msgstr "" +"Публиковать пресс-релизы при возникновении событий, важных для проекта " +"FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:546 +msgid "" +"Being the official contact person for corporations that are working close " +"with the FreeBSD Project." +msgstr "" +"Быть официальным контактным лицом для корпораций, тесно сотрудничающих с " +"проектом FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:547 +msgid "" +"Take steps to promote FreeBSD within both the Open Source community and the " +"corporate world." +msgstr "" +"Принимать меры для продвижения FreeBSD как в сообществе Open Source, так и в " +"корпоративном мире." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:548 +msgid "Handle the \"freebsd-advocacy\" mailing list." +msgstr "Обрабатывать список рассылки \"freebsd-advocacy\"." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:550 +msgid "This hat is currently not occupied." +msgstr "Эта роль в настоящее время не занята." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:552 +#, no-wrap +msgid "Security Officer" +msgstr "Ответственный за безопасность (Security Officer)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:556 +msgid "" +"The Security Officer's main responsibility is to coordinate information " +"exchange with others in the security community and in the FreeBSD project. " +"The Security Officer is also responsible for taking action when security " +"problems are reported and promoting proactive development behavior when it " +"comes to security." +msgstr "" +"Основная обязанность Ответственного за безопасность — координировать обмен " +"информацией с сообществом безопасности и проектом FreeBSD. Ответственный за " +"безопасность также принимает меры при поступлении сообщений о проблемах " +"безопасности и способствует активному развитию в области безопасности." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:562 +msgid "" +"Because of the fear that information about vulnerabilities may leak out to " +"people with malicious intent before a patch is available, only the Security " +"Officer, consisting of an officer, a deputy and two crossref:dev-model[role-" +"core, Core Team] members, receive sensitive information about security " +"issues. However, to create or implement a patch, the Security Officer has " +"the Security Officer Team mailto:security-team@FreeBSD.org[security-" +"team@FreeBSD.org] to help do the work." +msgstr "" +"Из-за опасений, что информация об уязвимостях может попасть к " +"злоумышленникам до выпуска исправления, только Ответственный за " +"безопасность, включающий руководителя, заместителя и двух членов " +"crossref:dev-model[role-core, Core Team], получает конфиденциальную " +"информацию о проблемах безопасности. Однако для создания или внедрения " +"исправления Ответственный за безопасность может обратиться к команде " +"mailto:security-team@FreeBSD.org[security-team@FreeBSD.org] для помощи в " +"выполнении работы." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:564 +#, no-wrap +msgid "Source Repository Manager" +msgstr "Менеджер репозитория исходного кода" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:570 +msgid "" +"The Source Repository Manager is the only one who is allowed to directly " +"modify the repository without using the crossref:dev-model[tool-git, Git] " +"tool. It is their responsibility to ensure that technical problems that " +"arise in the repository are resolved quickly. The source repository manager " +"has the authority to back out commits if this is necessary to resolve a Git " +"technical problem." +msgstr "" +"Менеджер репозитория исходного кода — единственный, кому разрешено напрямую " +"изменять репозиторий без использования инструмента crossref:dev-model[tool-" +"git, Git]. В его обязанности входит оперативное решение технических проблем, " +"возникающих в репозитории. Менеджер репозитория исходного кода имеет право " +"отменять коммиты, если это необходимо для устранения технических проблем с " +"Git." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:572 +msgid "" +"Hat held by: the Source Repository Manager " +"mailto:clusteradm@FreeBSD.org[clusteradm@FreeBSD.org]." +msgstr "" +"Роль принадлежит: Менеджеру репозитория исходного кода " +"mailto:clusteradm@FreeBSD.org[clusteradm@FreeBSD.org]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:574 +#, no-wrap +msgid "Election Manager" +msgstr "Менеджер выборов" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:581 +msgid "" +"The Election Manager is responsible for the crossref:dev-model[process-core-" +"election, Core election] process. The manager is responsible for running " +"and maintaining the election system, and is the final authority should minor " +"unforeseen events happen in the election process. Major unforeseen events " +"have to be discussed with the crossref:dev-model[role-core, Core Team]" +msgstr "" +"Менеджер выборов отвечает за процесс crossref:dev-model[process-core-" +"election,выборов Core Team]. Он отвечает за проведение и поддержание системы " +"выборов, а также является окончательной инстанцией в случае незначительных " +"непредвиденных событий в процессе выборов. Крупные непредвиденные события " +"должны обсуждаться с crossref:dev-model[role-core,Core Team]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:583 +msgid "Hat held only during elections." +msgstr "Роль выполняется только во время выборов." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:585 +#, no-wrap +msgid "Web site Management" +msgstr "Управление веб-сайтом" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:590 +msgid "" +"The Web site Management hat is responsible for coordinating the rollout of " +"updated web pages on mirrors around the world, for the overall structure of " +"the primary web site and the system it is running upon. The management " +"needs to coordinate the content with crossref:dev-model[sub-project-" +"documentation, The FreeBSD Documentation Project] and acts as maintainer for " +"the \"www\" tree." +msgstr "" +"Роль управления веб-сайтом отвечает за координацию развертывания обновленных " +"веб-страниц на зеркалах по всему миру, за общую структуру основного веб-" +"сайта и систему, на которой он работает. Управление должно согласовывать " +"содержимое с crossref:dev-model[документацией подпроекта, Документационный " +"проект FreeBSD] и выступает в роли сопровождающего для дерева \"www\"." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:592 +msgid "" +"Hat held by: the FreeBSD Webmasters mailto:www@FreeBSD.org[www@FreeBSD.org]." +msgstr "" +"Роль поддерживается: веб-мастеры FreeBSD " +"mailto:www@FreeBSD.org[www@FreeBSD.org]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:594 +#, no-wrap +msgid "Ports Manager" +msgstr "Менеджер портов" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:597 +msgid "" +"The Ports Manager acts as a liaison between crossref:dev-model[sub-project-" +"ports, The Ports Subproject] and the core project, and all requests from the " +"project should go to the ports manager." +msgstr "" +"Менеджер портов выступает в роли связующего звена между crossref:dev-" +"model[sub-project-ports, Подпроектом портов] и основным проектом, и все " +"запросы от проекта должны направляться менеджеру портов." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:600 +msgid "" +"Hat held by: the Ports Management Team " +"mailto:portmgr@FreeBSD.org[portmgr@FreeBSD.org]. The https://" +"www.freebsd.org/portmgr/charter/[Portmgr charter]." +msgstr "" +"Роль принадлежит: Команде управления портами " +"mailto:portmgr@FreeBSD.org[portmgr@FreeBSD.org]. https://www.freebsd.org/" +"portmgr/charter/[Устав Portmgr]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:602 +#, no-wrap +msgid "Standards" +msgstr "Стандарты" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:605 +msgid "" +"The Standards hat is responsible for ensuring that FreeBSD complies with the " +"standards it is committed to , keeping up to date on the development of " +"these standards and notifying FreeBSD developers of important changes that " +"allows them to take a proactive role and decrease the time between a " +"standards update and FreeBSD's compliancy." +msgstr "" +"Роль стандартов отвечает за обеспечение соответствия FreeBSD стандартам, " +"которым система следует, отслеживает развитие этих стандартов и уведомляет " +"разработчиков FreeBSD о важных изменениях. Это позволяет разработчикам " +"действовать проактивно и сокращать время между обновлением стандартов и " +"достижением соответствия в FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:607 +msgid "" +"Hat currently held by: Garrett Wollman " +"mailto:wollman@FreeBSD.org[wollman@FreeBSD.org]." +msgstr "" +"Текущий ответственный: Garrett Wollman " +"mailto:wollman@FreeBSD.org[wollman@FreeBSD.org]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:609 +#, no-wrap +msgid "Core Secretary" +msgstr "Секретарь Core Team" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:613 +msgid "" +"The Core Secretary's main responsibility is to write drafts to and publish " +"the final Core Reports. The secretary also keeps the core agenda, thus " +"ensuring that no balls are dropped unresolved." +msgstr "" +"Основная обязанность Секретаря Core Team — составление черновиков и " +"публикация окончательных отчётов Core Team. Секретарь также ведёт повестку " +"Core Team, гарантируя, что ни один вопрос не останется без решения." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:615 +msgid "Hat currently held by: {rene}." +msgstr "Ответственный в настоящее время: {rene}." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:617 +#, no-wrap +msgid "Bugmeister" +msgstr "Ответственный за ошибки (Bugmeister)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:621 +msgid "" +"The Bugmeister is responsible for ensuring that the maintenance database is " +"in working order, that the entries are correctly categorised and that there " +"are no invalid entries. They supervise bugbusters." +msgstr "" +"Ответственный за ошибки (Bugmeister) отвечает за поддержание базы данных по " +"обслуживанию в рабочем состоянии, за корректную категоризацию записей и " +"отсутствие недействительных записей. Они курируют исправителей ошибок " +"(bugbusters)." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:623 +msgid "" +"Hat currently held by: the Bugmeister Team " +"mailto:bugmeister@FreeBSD.org[bugmeister@FreeBSD.org]." +msgstr "" +"Текущий ответственный: команда Bugmeister Team " +"mailto:bugmeister@FreeBSD.org[bugmeister@FreeBSD.org]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:625 +#, no-wrap +msgid "Donations Liaison Officer" +msgstr "Представитель по привлечению пожертвований" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:628 +msgid "" +"The task of the donations liaison officer is to match the developers with " +"needs with people or organisations willing to make a donation." +msgstr "" +"Задача представителя по привлечению пожертвований — связывать разработчиков, " +"которым что-то нужно, с людьми или организациями, готовыми сделать " +"пожертвование." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:631 +msgid "" +"Hat held by: the Donations Liaison Office " +"mailto:donations@FreeBSD.org[donations@FreeBSD.org]. The https://" +"www.freebsd.org/donations/[ Donations Liaison Charter]." +msgstr "" +"Роль поддерживается: Отделом по привлечению пожертвований " +"mailto:donations@FreeBSD.org[donations@FreeBSD.org]. https://" +"www.freebsd.org/donations/[ Устав Отдела по привлечению пожертвований]." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:633 +#, no-wrap +msgid "Admin" +msgstr "Администратор (Admin)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:636 +msgid "(Also called \"FreeBSD Cluster Admin\")" +msgstr "(Также называется \"Администратор кластера FreeBSD\")" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:639 +msgid "" +"The admin team consists of the people responsible for administrating the " +"computers that the project relies on for its distributed work and " +"communication to be synchronised. It consists mainly of those people who " +"have physical access to the servers." +msgstr "" +"Команда администраторов состоит из людей, ответственных за администрирование " +"компьютеров, которые проект использует для распределённой работы и " +"синхронизации коммуникации. В основном в неё входят те, кто имеет физический " +"доступ к серверам." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:641 +msgid "" +"Hat held by: the Admin team mailto:admin@FreeBSD.org[admin@FreeBSD.org]." +msgstr "" +"Роль поддерживается: командой администраторов " +"mailto:admin@FreeBSD.org[admin@FreeBSD.org]." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:643 +#, no-wrap +msgid "Process dependent hats" +msgstr "Процессозависимые роли" + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:646 +#, no-wrap +msgid "Report originator" +msgstr "Инициатор отчета" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:649 +msgid "The person originally responsible for filing a Problem Report." +msgstr "Лицо, изначально ответственное за подачу отчета о проблеме." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:651 +#, no-wrap +msgid "Bugbuster" +msgstr "Исправитель ошибок (Bugbuster)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:654 +msgid "" +"A person who will either find the right person to solve the problem, or " +"close the PR if it is a duplicate or otherwise not an interesting one." +msgstr "" +"Человек, который либо найдет подходящего специалиста для решения проблемы, " +"либо закроет PR, если он является дубликатом или по другим причинам не " +"представляет интереса." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:656 +#, no-wrap +msgid "Mentor" +msgstr "Наставник (Mentor)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:659 +msgid "" +"A mentor is a committer who takes it upon them to introduce a new committer " +"to the project, both in terms of ensuring the new committer's setup is " +"valid, that the new committer knows the available tools required in their " +"work, and that the new committer knows what is expected of them in terms of " +"behavior." +msgstr "" +"Наставник — это коммиттер, который берет на себя задачу ознакомить нового " +"коммиттера с проектом. Это включает в себя проверку корректности настройки " +"окружения нового коммиттера, обучение доступным инструментам, необходимым " +"для работы, а также разъяснение ожидаемого поведения." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:661 +#, no-wrap +msgid "Vendor" +msgstr "Поставщик" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:664 +msgid "" +"The person(s) or organisation whom external code comes from and whom patches " +"are sent to." +msgstr "" +"Лицо (лица) или организация, от которых поступает внешний код и которым " +"отправляются исправления." + +#. type: Title ==== +#: documentation/content/en/books/dev-model/_index.adoc:666 +#, no-wrap +msgid "Reviewers" +msgstr "Рецензенты" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:669 +msgid "People on the mailing list where the request for review is posted." +msgstr "Люди из списка рассылки, куда отправлен запрос на рецензирование." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:672 +msgid "" +"The following section will describe the defined project processes. Issues " +"that are not handled by these processes happen on an ad-hoc basis based on " +"what has been customary to do in similar cases." +msgstr "" +"Следующий раздел описывает установленные процессы проекта. Вопросы, не " +"охваченные этими процессами, решаются по мере возникновения, исходя из " +"сложившейся практики в аналогичных случаях." + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:674 +#, no-wrap +msgid "Processes" +msgstr "Процессы" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:677 +#, no-wrap +msgid "Adding new and removing old committers" +msgstr "Добавление новых и удаление старых коммиттеров" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:682 +msgid "" +"The Core team has the responsibility of giving and removing commit " +"privileges to contributors. This can only be done through a vote on the " +"core mailing list. The ports and documentation sub-projects can give commit " +"privileges to people working on these projects, but have to date not removed " +"such privileges." +msgstr "" +"Основная команда (Core Team) отвечает за предоставление и отзыв прав на " +"коммит для участников. Это может быть сделано только через голосование в " +"списке рассылки Core Team. Подпроекты ports и documentation могут " +"предоставлять права на коммит людям, работающим над этими проектами, но на " +"данный момент не отзывали такие права." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:685 +msgid "" +"Normally a contributor is recommended to core by a committer. For " +"contributors or outsiders to contact core asking to be a committer is not " +"well thought of and is usually rejected." +msgstr "" +"Обычно кандидата в коммиттеры основной команде (Core Team) рекомендуют " +"коммиттеры. Для участников или посторонних обращаться в Core Team с просьбой " +"стать коммиттером считается неблагоразумным и такая просьба, как правило, " +"отклоняется." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:688 +msgid "" +"If the area of particular interest for the developer potentially overlaps " +"with other committers' area of maintainership, the opinion of those " +"maintainers is sought. However, it is frequently this committer that " +"recommends the developer." +msgstr "" +"Если область, представляющая особый интерес для разработчика, потенциально " +"пересекается с зоной ответственности других сопровождающих, запрашивается " +"мнение этих сопровождающих. Однако часто именно этот сопровождающий " +"рекомендует разработчика." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:691 +msgid "" +"When a contributor is given committer status, they are assigned a mentor. " +"The committer who recommended the new committer will, in the general case, " +"take it upon themselves to be the new committers mentor." +msgstr "" +"Когда участнику предоставляется статус коммиттера, ему назначается " +"наставник. В общем случае коммиттер, который рекомендовал нового коммиттера, " +"берет на себя обязанности наставника для нового коммиттера." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:699 +msgid "" +"When a contributor is given their commit bit, a crossref:dev-model[tool-pgp, " +"Pretty Good Privacy]-signed email is sent from either crossref:dev-" +"model[role-core-secretary, Core Secretary], crossref:dev-model[role-ports-" +"manager, Ports Manager], or nik@freebsd.org to both admins@freebsd.org, the " +"assigned mentor, the new committer, and core confirming the approval of a " +"new account. The mentor then gathers a password line, crossref:dev-" +"model[tool-ssh2, Secure Shell] public key, and PGP key from the new " +"committer and sends them to crossref:dev-model[role-admin, Admin]. When the " +"new account is created, the mentor activates the commit bit and guides the " +"new committer through the rest of the initial process." +msgstr "" +"Когда участнику предоставляется право коммита (commit bit), отправляется " +"подписанное с помощью crossref:dev-model[tool-pgp, Pretty Good Privacy] " +"письмо от crossref:dev-model[role-core-secretary, Секретаря Core Team], " +"crossref:dev-model[role-ports-manager, Менеджера портов] или nik@freebsd.org " +"на адреса admins@freebsd.org, назначенного наставника, нового коммиттера и " +"Core Team, подтверждая одобрение новой учётной записи. Затем наставник " +"собирает строку пароля, crossref:dev-model[tool-ssh2, Secure Shell] открытый " +"ключ и PGP-ключ от нового коммиттера и отправляет их crossref:dev-model[role-" +"admin, Администратору]. Когда новая учётная запись создана, наставник " +"активирует право коммита и проводит нового коммиттера через остальные этапы " +"начального процесса." + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:700 +#, no-wrap +msgid "Process summary: adding a new committer" +msgstr "Процесс вкратце: добавление нового коммиттера" + +#. type: Positional ($1) AttributeList argument for macro 'image' +#: documentation/content/en/books/dev-model/_index.adoc:701 +#: documentation/content/en/books/dev-model/_index.adoc:717 +#: documentation/content/en/books/dev-model/_index.adoc:764 +#: documentation/content/en/books/dev-model/_index.adoc:816 +#: documentation/content/en/books/dev-model/_index.adoc:943 +#, no-wrap +msgid "Refer to paragraph below for a screen-reader friendly version." +msgstr "Обратитесь к абзацу ниже для версии, совместимой с программами чтения с экрана." + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:701 +#, no-wrap +msgid "proc-add-committer.png" +msgstr "proc-add-committer.png" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:708 +msgid "" +"When a contributor sends a piece of code, the receiving committer may choose " +"to recommend that the contributor is given commit privileges. If they " +"recommend this to core, core will vote on this recommendation. If the vote " +"is in favour, a mentor is assigned the new committer and the new committer " +"has to email their details to the administrators for an account to be " +"created. After this, the new committer is all set to make their first " +"commit. By tradition, this is by adding their name to the committers list." +msgstr "" +"Когда участник отправляет фрагмент кода, принимающий коммиттер может " +"предложить предоставить этому участнику права на коммит. Если он рекомендует " +"это основной команде (Core Team), команда проводит голосование по этой " +"рекомендации. Если голосование завершается в пользу предложения, новому " +"коммиттеру назначается наставник, и новый коммиттер должен отправить свои " +"данные администраторам для создания учётной записи. После этого новый " +"коммиттер готов сделать свой первый коммит. По традиции, это делается путём " +"добавления своего имени в список коммиттеров." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:715 +#, fuzzy +#| msgid "" +#| "Recall that a committer is considered to be someone who has committed " +#| "code during the past 12 months. However, it is not until after 18 months " +#| "of inactivity have passed that commit privileges are eligible to be " +#| "revoked." +msgid "" +"Recall that a committer is considered to be someone who has committed code " +"during the past 12 months. However, it is not until after 18 months of " +"inactivity have passed that commit privileges are eligible to be revoked. " +"[crossref:dev-model[freebsd-expiration-policy, FreeBSD, 2002H]] There are, " +"however, no automatic procedures for doing this. For reactions concerning " +"commit privileges not triggered by time, see crossref:dev-model[process-" +"reactions,section 1.5.8]." +msgstr "" +"Напомним, что коммиттером считается тот, кто за последние 12 месяцев внёс " +"изменения в код. Однако право на коммиты может быть отозвано только после 18 " +"месяцев неактивности." + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:716 +#, no-wrap +msgid "Process summary: removing a committer" +msgstr "Процесс: удаление коммиттера" + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:717 +#, no-wrap +msgid "proc-rm-committer.png" +msgstr "proc-rm-committer.png" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:721 +msgid "" +"When Core decides to clean up the committers list, they check who has not " +"made a commit for the past 18 months. Committers who have not done so have " +"their commit bits revoked and their account removed by the administrators." +msgstr "" +"Когда Основная команда (Core Team) принимает решение очистить список " +"коммиттеров, они проверяют, кто не делал коммитов за последние 18 месяцев. " +"Коммиттеры, которые этого не сделали, лишаются прав на коммит, и их учетные " +"записи удаляются администраторами." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:724 +msgid "" +"It is also possible for committers to request that their commit bit be " +"retired if for some reason they are no longer going to be actively " +"committing to the project. In this case, it can also be restored at a later " +"time by core, should the committer ask." +msgstr "" +"Также возможно для коммиттеров запросить отзыв их права на коммит, если по " +"какой-то причине они больше не будут активно участвовать в проекте. В этом " +"случае, право может быть восстановлено позже по запросу коммиттера." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:726 +msgid "Roles in this process:" +msgstr "Роли в этом процессе:" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:728 +#: documentation/content/en/books/dev-model/_index.adoc:825 +#: documentation/content/en/books/dev-model/_index.adoc:985 +msgid "crossref:dev-model[role-core, Core Team]" +msgstr "crossref:dev-model[role-core, Основная команда (Core Team)]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:729 +#: documentation/content/en/books/dev-model/_index.adoc:783 +msgid "crossref:dev-model[role-contributor, Contributor]" +msgstr "crossref:dev-model[role-contributor, Участник (контрибьютор)]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:730 +#: documentation/content/en/books/dev-model/_index.adoc:782 +#: documentation/content/en/books/dev-model/_index.adoc:826 +#: documentation/content/en/books/dev-model/_index.adoc:986 +msgid "crossref:dev-model[role-committer, Committer]" +msgstr "crossref:dev-model[role-committer, Коммиттер]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:731 +#: documentation/content/en/books/dev-model/_index.adoc:954 +msgid "crossref:dev-model[role-maintainer, Maintainership]" +msgstr "crossref:dev-model[role-maintainer, Сопровождение]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:732 +msgid "crossref:dev-model[role-mentor, Mentor]" +msgstr "crossref:dev-model[role-mentor, Наставник (Mentor)]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:736 +msgid "" +"[crossref:dev-model[freebsd-bylaws, FreeBSD, 2000A]] [crossref:dev-" +"model[freebsd-expiration-policy, FreeBSD, 2002H]] [crossref:dev-" +"model[freebsd-new-account, FreeBSD, 2002I]]" +msgstr "" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:738 +#, no-wrap +msgid "Committing code" +msgstr "Коммит кода" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:744 +msgid "" +"The committing of new or modified code is one of the most frequent processes " +"in the FreeBSD project and will usually happen many times a day. Committing " +"of code can only be done by a \"committer\". Committers commit either code " +"written by themselves, code submitted to them, or code submitted through a " +"crossref:dev-model[model-pr,problem report]." +msgstr "" +"Добавление нового или изменённого кода — один из наиболее частых процессов в " +"проекте FreeBSD и обычно происходит несколько раз в день. Фиксация кода " +"может быть выполнена только \"коммиттером\". Коммиттеры фиксируют либо код, " +"написанный ими самими, либо код, переданный им, либо код, отправленный через " +"crossref:dev-model[model-pr,отчёт о проблеме]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:750 +msgid "" +"When code is written by the developer that is non-trivial, they should seek " +"a code review from the community. This is done by sending mail to the " +"relevant list asking for review. Before submitting the code for review, " +"they should ensure it compiles correctly with the entire tree and that all " +"relevant tests run. This is called \"pre-commit test\". When contributed " +"code is received, it should be reviewed by the committer and tested the same " +"way." +msgstr "" +"Когда разработчик пишет нетривиальный код, он должен запросить " +"рецензирование кода у сообщества. Это делается путём отправки письма в " +"соответствующий список рассылки с просьбой о рецензировании. Перед отправкой " +"кода на проверку разработчик должен убедиться, что он корректно " +"компилируется со всем деревом исходного кода и что все соответствующие тесты " +"выполняются. Это называется \"предварительной проверкой перед коммитом\". " +"Когда получен вклад в виде кода, коммиттер должен просмотреть его и " +"протестировать таким же образом." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:754 +msgid "" +"When a change is committed to a part of the source that has been contributed " +"from an outside crossref:dev-model[role-vendor, Vendor], the maintainer " +"should ensure that the patch is contributed back to the vendor. This is in " +"line with the open source philosophy and makes it easier to stay in sync " +"with outside projects as the patches do not have to be reapplied every time " +"a new release is made." +msgstr "" +"Когда изменение фиксируется в части исходного кода, которая была получена от " +"внешнего crossref:dev-model[role-vendor,поставщика], сопровождающий должен " +"убедиться, что патч передан обратно поставщику. Это соответствует философии " +"открытого исходного кода и упрощает синхронизацию с внешними проектами, так " +"как патчи не придётся применять заново при каждом новом выпуске." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:759 +msgid "" +"After the code has been available for review and no further changes are " +"necessary, the code is committed into the development branch, -CURRENT. If " +"the change applies for the -STABLE branch or the other branches as well, a " +"\"Merge From Current\" (\"MFC\") countdown is set by the committer. After " +"the number of days the committer chose when setting the MFC have passed, an " +"email will automatically be sent to the committer reminding them to commit " +"it to the -STABLE branch (and possibly security branches as well). Only " +"security critical changes should be merged to security branches." +msgstr "" +"После того как код был доступен для рецензирования и дальнейшие изменения не " +"требуются, код вносится в ветку разработки -CURRENT. Если изменение " +"применимо и для ветки -STABLE, или других веток, коммиттер устанавливает " +"отсчёт времени для \"слияния из текущей\" (\"MFC\"). После того как пройдёт " +"количество дней, выбранное коммиттером при установке MFC, автоматически " +"будет отправлено письмо коммиттеру с напоминанием внести изменения в ветку " +"-STABLE (а также, возможно, в ветки безопасности). В ветки безопасности " +"следует сливать только критические изменения, связанные с безопасностью." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:762 +msgid "" +"Delaying the commit to -STABLE and other branches allows for \"parallel " +"debugging\" where the committed code is tested on a wide range of " +"configurations. This makes changes to -STABLE to contain fewer faults and " +"thus giving the branch its name." +msgstr "" +"Откладывание коммита в -STABLE и другие ветки позволяет проводить " +"\"параллельную отладку\", когда закоммиченный код тестируется на широком " +"спектре конфигураций. Это приводит к тому, что изменения в -STABLE содержат " +"меньше ошибок, что и даёт ветке её название." + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:763 +#, no-wrap +msgid "Process summary: A committer commits code" +msgstr "Процесс вкратце: коммиттер делает коммит кода" + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:764 +#, no-wrap +msgid "proc-commit.png" +msgstr "proc-commit.png" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:772 +msgid "" +"When a committer has written a piece of code and wants to commit it, they " +"first need to determine if it is trivial enough to go in without prior " +"review or if it should first be reviewed by the developer community. If the " +"code is trivial or has been reviewed and the committer is not the " +"maintainer, they should consult the maintainer before proceeding. If the " +"code is contributed by an outside vendor, the maintainer should create a " +"patch that is sent back to the vendor. The code is then committed and then " +"deployed by the users. Should they find problems with the code, this will " +"be reported and the committer can go back to writing a patch. If a vendor " +"is affected, they can choose to implement or ignore the patch." +msgstr "" +"Когда коммиттер написал часть кода и хочет его закоммитить, он сначала " +"должен определить, достаточно ли он тривиален, чтобы попасть в репозиторий " +"без предварительной рецензии, или ему сначала следует сделать рецензию в " +"сообществе разработчиков. Если код тривиален или был отрецензирован, и " +"коммиттер не является сопровождающим, он должен проконсультироваться с " +"сопровождающим перед тем, как продолжить. Если код предоставлен внешним " +"поставщиком, сопровождающий должен создать патч, который отправляется " +"обратно поставщику. Затем код коммитится и развертывается пользователями. " +"Если они обнаружат проблемы с кодом, это будет сообщено, и коммиттер может " +"вернуться к написанию патча. Если затронут поставщик, он может выбрать " +"реализацию или игнорирование патча." + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:773 +#, no-wrap +msgid "Process summary: A contributor commits code" +msgstr "Процесс вкратце: Участник делает коммит кода" + +#. type: Positional ($1) AttributeList argument for macro 'image' +#: documentation/content/en/books/dev-model/_index.adoc:774 +#, no-wrap +msgid "Refer to paragraphs below and above for a screen-reader friendly version." +msgstr "Обратитесь к абзацам выше и ниже для версии, совместимой с программами чтения с экрана." + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:774 +#, no-wrap +msgid "proc-contrib.png" +msgstr "proc-contrib.png" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:778 +msgid "" +"The difference when a contributor makes a code contribution is that they " +"submit the code through the Bugzilla interface. This report is picked up by " +"the maintainer who reviews the code and commits it." +msgstr "" +"Разница, когда участник вносит код, заключается в том, что он отправляет код " +"через интерфейс Bugzilla. Этот отчёт забирает сопровождающий, который " +"просматривает код и делает ему коммит." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:780 +msgid "Hats included in this process are:" +msgstr "Роли, задействованные в этом процессе:" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:784 +msgid "crossref:dev-model[role-vendor, Vendor]" +msgstr "crossref:dev-model[role-vendor, Поставщик]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:785 +msgid "crossref:dev-model[role-reviewer, Reviewers]" +msgstr "crossref:dev-model[role-reviewer, Рецензенты]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:788 +msgid "" +"[crossref:dev-model[freebsd-committer, FreeBSD, 2001]] [crossref:dev-" +"model[jorgensen2001, Jørgensen, 2001]]" +msgstr "" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:790 +#, no-wrap +msgid "Core election" +msgstr "Выборы основной команды (Core Team)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:795 +msgid "" +"Core elections are held at least every two years. footnote:[The first Core " +"election was held September 2000] Nine core members are elected. New " +"elections are held if the number of core members drops below seven. New " +"elections can also be held should at least 1/3 of the active committers " +"demand this." +msgstr "" +"Выборы Core Team проводятся не реже чем раз в два года. footnote:[Первые " +"выборы Core Team состоялись в сентябре 2000 года] Избираются девять " +"участников Core Team. Новые выборы проводятся, если количество участников " +"Core Team становится меньше семи. Новые выборы также могут быть проведены, " +"если этого потребуют как минимум 1/3 активных коммиттеров." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:797 +msgid "" +"When an election is to take place, core announces this at least 6 weeks in " +"advance, and appoints an election manager to run the elections." +msgstr "" +"Когда должны состояться выборы, Core Team объявляет об этом как минимум за 6 " +"недель и назначает менеджера выборов для их проведения." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:802 +msgid "" +"Only committers can be elected into core. The candidates need to submit " +"their candidacy at least one week before the election starts, but can refine " +"their statements until the voting starts. They are presented in the http://" +"election.uk.freebsd.org/candidates.html[candidates list]. When writing " +"their election statements, the candidates must answer a few standard " +"questions submitted by the election manager." +msgstr "" +"Только коммиттеры могут быть избраны в состав основной команды (Core Team). " +"Кандидаты должны подать свои заявки как минимум за одну неделю до начала " +"выборов, но могут уточнять свои заявления до начала голосования. Они " +"представлены в http://election.uk.freebsd.org/candidates.html[списке " +"кандидатов]. При составлении своих предвыборных заявлений кандидаты должны " +"ответить на несколько стандартных вопросов, предоставленных организатором " +"выборов." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:805 +msgid "" +"During elections, the rule that a committer must have committed during the " +"12 past months is followed strictly. Only these committers are eligible to " +"vote." +msgstr "" +"Во время выборов строго соблюдается правило, что коммиттер должен был " +"сделать коммит в течение последних 12 месяцев. Только эти коммиттеры имеют " +"право голосовать." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:808 +msgid "" +"When voting, the committer may vote once in support of up to nine nominees. " +"The voting is done over a period of four weeks with reminders being posted " +"on \"developers\" mailing list that is available to all committers." +msgstr "" +"При голосовании коммиттер может проголосовать один раз в поддержку до девяти " +"номинантов. Голосование проводится в течение четырёх недель, с " +"напоминаниями, публикуемыми в рассылке \"developers\", доступной всем " +"коммиттерам." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:810 +msgid "" +"The election results are released one week after the election ends, and the " +"new core team takes office one week after the results have been posted." +msgstr "" +"Результаты выборов публикуются через неделю после их окончания, а новая " +"основная команда вступает в должность через неделю после публикации " +"результатов." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:812 +msgid "" +"Should there be a voting tie, this will be resolved by the new, " +"unambiguously elected core members." +msgstr "" +"В случае ничьей при голосовании, это будет разрешено новыми, однозначно " +"избранными членами ядра." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:814 +msgid "" +"Votes and candidate statements are archived, but the archives are not " +"publicly available." +msgstr "" +"Голоса и заявления кандидатов архивируются, но архивы не являются " +"общедоступными." + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:815 +#, no-wrap +msgid "Process summary: Core elections" +msgstr "Процесс вкратце: Выборы основной команды (Core Team)" + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:816 +#, no-wrap +msgid "proc-elections.png" +msgstr "proc-elections.png" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:821 +msgid "" +"Core announces the election and selects an election manager who prepares the " +"elections, and when ready, candidates can announce their candidacies through " +"submitting their statements. The committers then vote. After the vote is " +"over, the election results are announced and the new core team takes office." +msgstr "" +"Core Team объявляет выборы и назначает руководителя выборов, который " +"подготавливает процесс. Когда всё готово, кандидаты могут объявить о своей " +"кандидатуре, представив заявления. Затем коммиттеры голосуют. После " +"завершения голосования результаты выборов объявляются, и новая основная " +"команда вступает в должность." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:823 +msgid "Hats in core elections are:" +msgstr "Ответственный за выборы Core Team:" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:827 +msgid "crossref:dev-model[role-election-manager, Election Manager]" +msgstr "crossref:dev-model[role-election-manager, Менеджер выборов]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:831 +msgid "" +"[crossref:dev-model[freebsd-bylaws, FreeBSD, 2000A]] [crossref:dev-model[bsd-" +"election2002, FreeBSD, 2002B]] [crossref:dev-model[freebsd-election, " +"FreeBSD, 2002G]]" +msgstr "" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:833 +#, no-wrap +msgid "Development of new features" +msgstr "Разработка новых функций" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:841 +msgid "" +"Within the project there are sub-projects that are working on new features. " +"These projects are generally done by one person [crossref:dev-" +"model[jorgensen2001, Jørgensen, 2001]]. Every project is free to organise " +"development as it sees fit. However, when the project is merged to the " +"-CURRENT branch it must follow the project guidelines. When the code has " +"been well tested in the -CURRENT branch and deemed stable enough and " +"relevant to the -STABLE branch, it is merged to the -STABLE branch." +msgstr "" +"В рамках проекта существуют подпроекты, работающие над новыми функциями. Эти " +"проекты обычно выполняются одним человеком [crossref:dev-" +"model[jorgensen2001, Йоргенсен, 2001]]. Каждый проект волен организовывать " +"разработку так, как считает нужным. Однако, когда проект объединяется с " +"ветвью -CURRENT, он должен следовать руководствам проекта. Когда код хорошо " +"протестирован в ветви -CURRENT и признан достаточно стабильным и актуальным " +"для ветви -STABLE, он объединяется с ветвью -STABLE." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:848 +msgid "" +"The requirements of the project are given by developer wishes, requests from " +"the community in terms of direct requests by mail, Problem Reports, " +"commercial funding for the development of features, or contributions by the " +"scientific community. The wishes that come within the responsibility of a " +"developer are given to that developer who prioritises their time between the " +"request and their wishes. A common way to do this is maintain a TODO-list " +"maintained by the project. Items that do not come within someone's " +"responsibility are collected on TODO-lists unless someone volunteers to take " +"the responsibility. All requests, their distribution and follow-up are " +"handled by the crossref:dev-model[tool-bugzilla, Bugzilla] tool." +msgstr "" +"Требования проекта определяются пожеланиями разработчиков, запросами " +"сообщества в виде прямых обращений по почте, отчетов о проблемах (Problem " +"Reports), коммерческим финансированием разработки функциональности или " +"вкладами научного сообщества. Пожелания, которые входят в зону " +"ответственности разработчика, передаются этому разработчику, который " +"расставляет приоритеты между запросом и своими собственными пожеланиями. " +"Распространенный способ организации этого процесса — ведение списка задач " +"(TODO-list), поддерживаемого проектом. Задачи, не входящие в чью-либо зону " +"ответственности, собираются в списках TODO, пока кто-нибудь не возьмет на " +"себя ответственность за их выполнение. Все запросы, их распределение и " +"отслеживание обрабатываются с помощью инструмента crossref:dev-model[tool-" +"bugzilla, Bugzilla]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:853 +msgid "" +"Requirements analysis happens in two ways. The requests that come in are " +"discussed on mailing lists, both within the main project and in the sub-" +"project that the request belongs to or is spawned by the request. " +"Furthermore, individual developers on the sub-project will evaluate the " +"feasibility of the requests and determine the prioritisation between them. " +"Other than archives of the discussions that have taken place, no outcome is " +"created by this phase that is merged into the main project." +msgstr "" +"Анализ требований происходит двумя способами. Поступившие запросы " +"обсуждаются в почтовых рассылках, как в основном проекте, так и в " +"подпроекте, к которому относится запрос или который создается этим запросом. " +"Кроме того, отдельные разработчики подпроекта оценивают осуществимость " +"запросов и определяют приоритеты между ними. Помимо архивов обсуждений, на " +"этом этапе не создается никаких результатов, которые включаются в основной " +"проект." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:856 +msgid "" +"As the requests are prioritised by the individual developers on the basis of " +"doing what they find interesting, necessary, or are funded to do, there is " +"no overall strategy or prioritisation of what requests to regard as " +"requirements and following up their correct implementation. However, most " +"developers have some shared vision of what issues are more important, and " +"they can ask for guidelines from the release engineering team." +msgstr "" +"Поскольку запросы приоритизируются отдельными разработчиками на основе того, " +"что они считают интересным, необходимым или за что им платят, отсутствует " +"общая стратегия или приоритезация того, какие запросы считать требованиями, " +"и как контролировать их корректную реализацию. Однако большинство " +"разработчиков разделяют общее видение того, какие вопросы являются более " +"важными, и они могут запросить рекомендации у команды инженеров по выпуску " +"релизов." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:863 +msgid "" +"The verification phase of the project is two-fold. Before committing code " +"to the current-branch, developers request their code to be reviewed by their " +"peers. This review is for the most part done by functional testing, but " +"also code review is important. When the code is committed to the branch, a " +"broader functional testing will happen, that may trigger further code review " +"and debugging should the code not behave as expected. This second " +"verification form may be regarded as structural verification. Although the " +"sub-projects themselves may write formal tests such as unit tests, these are " +"usually not collected by the main project and are usually removed before the " +"code is committed to the current branch. footnote:[More and more tests are " +"however performed when building the system (make world). These tests are " +"however a very new addition and no systematic framework for these tests have " +"yet been created.]" +msgstr "" +"Фаза проверки проекта состоит из двух этапов. Перед внесением кода в текущую " +"ветку разработчики запрашивают рецензирование своего кода коллегами. Это " +"рецензирование в основном проводится с помощью функционального тестирования, " +"но также важна проверка кода. Когда код внесён в ветку, проводится более " +"широкое функциональное тестирование, которое может привести к дополнительной " +"проверке кода и отладке, если код ведёт себя не так, как ожидалось. Эта " +"вторая форма проверки может рассматриваться как структурная верификация. " +"Хотя сами подпроекты могут писать формальные тесты, такие как модульные " +"тесты, они обычно не собираются основным проектом и чаще всего удаляются " +"перед внесением кода в текущую ветку. footnote:[Однако всё больше тестов " +"выполняется при сборке системы (make world). Эти тесты являются очень новым " +"дополнением, и систематическая структура для них ещё не создана.]" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:865 +#, no-wrap +msgid "Maintenance" +msgstr "Сопровождение" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:872 +msgid "" +"It is an advantage to the project to for each area of the source have at " +"least one person that knows this area well. Some parts of the code have " +"designated maintainers. Others have de-facto maintainers, and some parts of " +"the system do not have maintainers. The maintainer is usually a person from " +"the sub-project that wrote and integrated the code, or someone who has " +"ported it from the platform it was written for. footnote:[sendmail and " +"named are examples of code that has been merged from other platforms.] The " +"maintainer's job is to make sure the code is in sync with the project the " +"code comes from if it is contributed code, and apply patches submitted by " +"the community or write fixes to issues that are discovered." +msgstr "" +"Для проекта полезно, чтобы за каждую область исходного кода отвечал хотя бы " +"один человек, который хорошо её знает. Некоторые части кода имеют " +"назначенных сопровождающих. Другие имеют фактических сопровождающих, а " +"некоторые части системы не имеют сопровождающих. Сопровождающий обычно " +"является участником подпроекта, который написал и интегрировал код, или тем, " +"кто портировал его с платформы, для которой он был написан. footnote:" +"[sendmail и named — примеры кода, который был объединён с других платформ.] " +"Задача сопровождающего — убедиться, что код синхронизирован с проектом, из " +"которого он получен, если это сторонний код, а также применять патчи, " +"предоставленные сообществом, или исправлять обнаруженные проблемы." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:875 +msgid "" +"The main bulk of work that is put into the FreeBSD project is maintenance. " +"[crossref:dev-model[jorgensen2001, Jørgensen, 2001]] has made a figure " +"showing the life cycle of changes." +msgstr "" +"Основной объем работы, вкладываемый в проект FreeBSD, связан с " +"сопровождением. [crossref:dev-model[jorgensen2001, Jørgensen, 2001]] " +"предоставляет схему, показывающую жизненный цикл изменений." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:913 +msgid "" +"Here \"development release\" refers to the -CURRENT branch while " +"\"production release\" refers to the -STABLE branch. The \"pre-commit " +"test\" is the functional testing by peer developers when asked to do so or " +"trying out the code to determine the status of the sub-project. \"Parallel " +"debugging\" is the functional testing that can trigger more review, and " +"debugging when the code is included in the -CURRENT branch." +msgstr "" +"Здесь \"релиз для разработки\" относится к ветке -CURRENT, а \"релиз для " +"производства\" — к ветке -STABLE. \"Предварительная проверка перед " +"коммитом\" — это функциональное тестирование, проводимое коллегами-" +"разработчиками по запросу или для проверки кода с целью определения " +"состояния подпроекта. \"Параллельная отладка\" — это функциональное " +"тестирование, которое может вызвать дополнительный обзор и отладку, когда " +"код включён в ветку -CURRENT." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:920 +msgid "" +"As of this writing, there were 269 committers in the project. When they " +"commit a change to a branch, that constitutes a new release. It is very " +"common for users in the community to track a particular branch. The " +"immediate existence of a new release makes the changes widely available " +"right away and allows for rapid feedback from the community. This also " +"gives the community the response time they expect on issues that are of " +"importance to them. This makes the community more engaged, and thus allows " +"for more and better feedback that again spurs more maintenance and " +"ultimately should create a better product." +msgstr "" +"На момент написания этого документа в проекте было 269 коммиттеров. Когда " +"они вносят изменения в ветку, это создает новый выпуск. Очень часто " +"пользователи в сообществе отслеживают определенную ветку. Мгновенное " +"появление нового выпуска делает изменения широко доступными сразу же и " +"позволяет быстро получать отзывы от сообщества. Это также дает сообществу " +"ожидаемое время реакции на проблемы, которые важны для них. Это делает " +"сообщество более вовлеченным, что, в свою очередь, позволяет получать больше " +"и лучше отзывов, что снова стимулирует больше сопровождения и в конечном " +"итоге должно создать лучший продукт." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:922 +msgid "" +"Before making changes to code in parts of the tree that has a history " +"unknown to the committer, the committer is required to read the commit logs " +"to see why certain features are implemented the way they are in order not to " +"make mistakes that have previously either been thought through or resolved." +msgstr "" +"Прежде чем вносить изменения в код в частях дерева, история которых " +"неизвестна коммиттеру, коммиттер обязан прочитать журналы коммитов, чтобы " +"понять, почему определённые функции реализованы именно так, и избежать " +"ошибок, которые уже были обдуманы или исправлены ранее." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:924 +#, no-wrap +msgid "Problem reporting" +msgstr "Сообщение о проблеме" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:929 +msgid "" +"Before FreeBSD 10, FreeBSD included a problem reporting tool called `send-" +"pr`. Problems include bug reports, feature requests, feature enhancements " +"and notices of new versions of external software that are included in the " +"project. Although `send-pr` is available, users and developers are " +"encouraged to submit issues using our https://bugs.freebsd.org/submit/" +"[ problem report form]." +msgstr "" +"До FreeBSD 10 в FreeBSD входил инструмент для отправки отчётов о проблемах " +"под названием `send-pr`. Проблемы включают отчёты об ошибках, запросы " +"функций, улучшения функций и уведомления о новых версиях внешнего " +"программного обеспечения, включённого в проект. Хотя `send-pr` доступен, " +"пользователям и разработчикам рекомендуется отправлять проблемы, используя " +"нашу https://bugs.freebsd.org/submit/[форму отчёта о проблемах]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:941 +msgid "" +"Problem reports are sent to an email address where it is inserted into the " +"Problem Reports maintenance database. A crossref:dev-model[role-bugbuster, " +"Bugbuster] classifies the problem and sends it to the correct group or " +"maintainer within the project. After someone has taken responsibility for " +"the report, the report is being analysed. This analysis includes verifying " +"the problem and thinking out a solution for the problem. Often feedback is " +"required from the report originator or even from the FreeBSD community. " +"Once a patch for the problem is made, the originator may be asked to try it " +"out. Finally, the working patch is integrated into the project, and " +"documented if applicable. It there goes through the regular maintenance " +"cycle as described in section crossref:dev-model[model-maintenance, " +"Maintenance]. These are the states a problem report can be in: open, " +"analyzed, feedback, patched, suspended and closed. The suspended state is " +"for when further progress is not possible due to the lack of information or " +"for when the task would require so much work that nobody is working on it at " +"the moment." +msgstr "" +"Отчёты о проблемах отправляются на электронный адрес, откуда они попадают в " +"базу данных сопровождения отчётов о проблемах. crossref:dev-model[role-" +"bugbuster, Исправитель ошибок (Bugbuster)] классифицирует проблему и " +"направляет её соответствующей группе или сопровождающему в рамках проекта. " +"После того, как кто-то берёт ответственность за отчёт, он анализируется. " +"Этот анализ включает проверку проблемы и разработку решения. Часто " +"требуется обратная связь от автора отчёта или даже от сообщества FreeBSD. " +"Как только создаётся патч для устранения проблемы, автора отчета могут " +"попросить его протестировать. В итоге рабочий патч интегрируется в проект " +"и, если необходимо, документируется. Затем он проходит стандартный цикл " +"сопровождения, как описано в разделе crossref:dev-model[model-maintenance, " +"Сопровождение]. Отчёт о проблеме может находиться в следующих состояниях: " +"открыт, анализируется, ожидает обратной связи, исправлен патчем, отложен и " +"закрыт. Состояние \"отложен\" используется, когда дальнейшее продвижение " +"невозможно из-за недостатка информации или когда задача требует столько " +"работы, что в данный момент никто над ней не работает." + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:942 +#, no-wrap +msgid "Process summary: problem reporting" +msgstr "Сводка процесса: сообщение о проблеме" + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:943 +#, no-wrap +msgid "proc-pr.png" +msgstr "proc-pr.png" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:949 +msgid "" +"A problem is reported by the report originator. It is then classified by a " +"bugbuster and handed to the correct maintainer. They verify the problem and " +"discuss the problem with the originator until they have enough information " +"to create a working patch. This patch is then committed and the problem " +"report is closed." +msgstr "" +"Проблема сообщается автором отчета. Затем она классифицируется ответственным " +"за обработку ошибок и передается соответствующему сопровождающему. Он " +"проверяет проблему и обсуждает её с автором отчёта до тех пор, пока не будет " +"собрано достаточно информации для создания рабочего исправления. Это " +"исправление затем фиксируется, и отчёт о проблеме закрывается." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:951 +msgid "The roles included in this process are:" +msgstr "Роли, включенные в этот процесс:" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:953 +msgid "crossref:dev-model[role-problem-originator, Report originator]" +msgstr "crossref:dev-model[role-problem-originator, Инициатор отчета]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:955 +msgid "crossref:dev-model[role-bugbuster, Bugbuster]" +msgstr "crossref:dev-model[role-bugbuster, Исправитель ошибок (Bugbuster)]" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:958 +#, fuzzy +#| msgid "[crossref:dev-model[freebsd-handle-pr, FreeBSD, 2002C]]." +msgid "" +"[crossref:dev-model[freebsd-handle-pr, FreeBSD, 2002C]]. [crossref:dev-" +"model[freebsd-send-pr, FreeBSD, 2002D]]" +msgstr "[crossref::dev-model[freebsd-handle-pr, FreeBSD, 2002C]]." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:960 +#, no-wrap +msgid "Reacting to misbehavior" +msgstr "Реагирование на неправильное поведение" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:966 +msgid "" +"[crossref:dev-model[freebsd-committer, FreeBSD, 2001]] has a number of rules " +"that committers should follow. However, it happens that these rules are " +"broken. The following rules exist in order to be able to react to " +"misbehavior. They specify what actions will result in how long a suspension " +"of the committer's commit privileges." +msgstr "" +"[crossref:dev-model[freebsd-committer, FreeBSD, 2001]] содержит ряд правил, " +"которым должны следовать коммиттеры. Однако случается, что эти правила " +"нарушаются. Следующие правила существуют для того, чтобы можно было " +"реагировать на неподобающее поведение. Они определяют, какие действия " +"приведут к приостановке привилегий коммиттера на тот или иной срок." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:968 +msgid "" +"Committing during code freezes without the approval of the Release " +"Engineering team - 2 days" +msgstr "" +"Совершение коммитов во время заморозки кода без одобрения команды Release " +"Engineering — 2 дня" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:969 +msgid "Committing to a security branch without approval - 2 days" +msgstr "Коммит изменений в ветку безопасности без одобрения - 2 дня" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:970 +msgid "Commit wars - 5 days to all participating parties" +msgstr "Войны коммитов — 5 дней для всех участвующих сторон" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:971 +msgid "Impolite or inappropriate behavior - 5 days" +msgstr "Невежливое или неподобающее поведение — 5 дней" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:973 +#, fuzzy +#| msgid "[crossref:dev-model[freebsd-handle-pr, FreeBSD, 2002C]]." +msgid "[crossref:dev-model[ref-freebsd-trenches, Lehey, 2002]]" +msgstr "[crossref::dev-model[freebsd-handle-pr, FreeBSD, 2002C]]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:978 +msgid "" +"For the suspensions to be efficient, any single core member can implement a " +"suspension before discussing it on the \"core\" mailing list. Repeat " +"offenders can, with a 2/3 vote by core, receive harsher penalties, including " +"permanent removal of commit privileges. (However, the latter is always " +"viewed as a last resort, due to its inherent tendency to create " +"controversy.) All suspensions are posted to the \"developers\" mailing " +"list, a list available to committers only." +msgstr "" +"Для эффективности приостановок любой член основной команды (Core Team) может " +"применить приостановку до обсуждения на почтовой рассылке \"core\". " +"Повторные нарушители могут, при 2/3 голосов от основной команды, получить " +"более строгие наказания, включая постоянное лишение прав на коммиты. (Однако " +"последнее всегда рассматривается как крайняя мера из-за присущей ему " +"склонности вызывать споры.) Все приостановки публикуются в почтовой рассылке " +"\"developers\", доступной только коммиттерам." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:981 +msgid "" +"It is important that you cannot be suspended for making technical errors. " +"All penalties come from breaking social etiquette." +msgstr "" +"Важно, что вас не могут приостановить за технические ошибки. Все наказания " +"связаны с нарушением социального этикета." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:983 +msgid "Hats involved in this process:" +msgstr "Роли, участвующие в этом процессе:" + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:988 +#, no-wrap +msgid "Release engineering" +msgstr "Выпуск релизов" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:994 +msgid "" +"The FreeBSD project has a Release Engineering team with a principal release " +"engineer that is responsible for creating releases of FreeBSD that can be " +"brought out to the user community via the net or sold in retail outlets. " +"Since FreeBSD is available on multiple platforms and releases for the " +"different architectures are made available at the same time, the team has " +"one person in charge of each architecture. Also, there are roles in the " +"team responsible for coordinating quality assurance efforts, building a " +"package set and for having an updated set of documents. When referring to " +"the release engineer, a representative for the release engineering team is " +"meant." +msgstr "" +"Проект FreeBSD имеет команду инженеров по выпуску релизов с главным " +"инженером, который отвечает за создание релизов FreeBSD для распространения " +"среди пользователей через интернет или продажи в розничных магазинах. " +"Поскольку FreeBSD доступна на нескольких платформах, а релизы для различных " +"архитектур выпускаются одновременно, в команде есть ответственный за каждую " +"архитектуру. Также в команде есть роли, отвечающие за координацию усилий по " +"обеспечению качества, сборку набора пакетов и актуализацию документации. Под " +"инженером по выпуску релизов подразумевается представитель команды инженеров " +"по выпуску релизов." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1001 +msgid "" +"When a release is coming, the FreeBSD project changes shape somewhat. A " +"release schedule is made containing feature- and code-freezes, release of " +"interim releases and the final release. A feature-freeze means no new " +"features are allowed to be committed to the branch without the release " +"engineers' explicit consent. Code-freeze means no changes to the code (like " +"bugs-fixes) are allowed to be committed without the release engineers' " +"explicit consent. This feature- and code-freeze is known as stabilising. " +"During the release process, the release engineer has the full authority to " +"revert to older versions of code and thus \"back out\" changes should they " +"find that the changes are not suitable to be included in the release." +msgstr "" +"Когда готовится выпуск релиза, проект FreeBSD несколько меняет свою " +"структуру. Составляется график выпуска, включающий заморозку " +"функциональности и кода, выпуск промежуточных релизов и финального релиза. " +"Заморозка функциональности означает, что новые функции не могут быть " +"добавлены в ветку без явного согласия инженеров релиза. Заморозка кода " +"означает, что изменения в коде (например, исправления ошибок) не могут быть " +"добавлены без явного согласия инженеров релиза. Этот процесс заморозки " +"функциональности и кода известен как стабилизация. В процессе выпуска релиза " +"инженер релиза имеет полномочия откатываться к более старым версиям кода и, " +"таким образом, \"отменять\" изменения, если они сочтут, что эти изменения не " +"подходят для включения в релиз." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1003 +msgid "There are three different kinds of releases:" +msgstr "Существует три различных вида выпусков:" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1005 +msgid "" +".0 releases are the first release of a major version. These are branched of " +"the -CURRENT branch and have a significantly longer release engineering " +"cycle due to the unstable nature of the -CURRENT branch" +msgstr "" +".0 выпуски являются первым релизом основной версии. Они ветвятся от ветки " +"-CURRENT и имеют значительно более длительный цикл разработки из-за " +"нестабильного характера ветки -CURRENT" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1006 +msgid "" +".X releases are releases of the -STABLE branch. They are scheduled to come " +"out every 4 months." +msgstr "" +".X релизы — это релизы ветки -STABLE. Они запланированы к выходу каждые 4 " +"месяца." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1007 +msgid "" +".X.Y releases are security releases that follow the .X branch. These come " +"out only when sufficient security fixes have been merged since the last " +"release on that branch. New features are rarely included, and the security " +"team is far more involved in these than in regular releases." +msgstr "" +".X.Y — это выпуски с исправлениями уязвимостей, следующие за веткой .X. Они " +"выходят только тогда, когда с момента последнего выпуска в этой ветке было " +"объединено достаточное количество исправлений уязвимостей. Новые функции " +"включаются редко, а команда безопасности участвует в этих выпусках гораздо " +"активнее, чем в обычных." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1017 +msgid "" +"For releases of the -STABLE-branch, the release process starts 45 days " +"before the anticipated release date. During the first phase, the first 15 " +"days, the developers merge what changes they have had in -CURRENT that they " +"want to have in the release to the release branch. When this period is " +"over, the code enters a 15 day code freeze in which only bug fixes, " +"documentation updates, security-related fixes and minor device driver " +"changes are allowed. These changes must be approved by the release engineer " +"in advance. At the beginning of the last 15 day period a release candidate " +"is created for widespread testing. Updates are less likely to be allowed " +"during this period, except for important bug fixes and security updates. In " +"this final period, all releases are considered release candidates. At the " +"end of the release process, a release is created with the new version " +"number, including binary distributions on web sites and the creation of CD-" +"ROM images. However, the release is not considered \"really released\" " +"until a crossref:dev-model[tool-pgp, Pretty Good Privacy]-signed message " +"stating exactly that, is sent to the mailing list freebsd-announce; anything " +"labelled as a \"release\" before that may well be in-process and subject to " +"change before the PGP-signed message is sent. footnote:[Many commercial " +"vendors use these images to create CD-ROMs that are sold in retail outlets.]." +msgstr "" +"Для выпусков ветки -STABLE процесс выпуска начинается за 45 дней до " +"предполагаемой даты релиза. В течение первой фазы, первых 15 дней, " +"разработчики переносят изменения из -CURRENT, которые они хотят включить в " +"релиз, в ветку выпуска. По окончании этого периода код входит в 15-дневный " +"период заморозки, в течение которого допускаются только исправления ошибок, " +"обновления документации, исправления, связанные с безопасностью, и " +"незначительные изменения драйверов устройств. Эти изменения должны быть " +"предварительно одобрены инженером выпуска. В начале последнего 15-дневного " +"периода создается кандидат на выпуск для широкого тестирования. В этот " +"период вероятность внесения изменений снижается, за исключением важных " +"исправлений ошибок и обновлений безопасности. В этот заключительный период " +"все выпуски считаются кандидатами на выпуск. По завершении процесса выпуска " +"создается релиз с новым номером версии, включая бинарные дистрибутивы на веб-" +"сайтах и создание образов CD-ROM. Однако релиз не считается «действительно " +"выпущенным» до тех пор, пока на список рассылки freebsd-announce не будет " +"отправлено сообщение, подписанное с помощью crossref:dev-model[tool-pgp, " +"Pretty Good Privacy], в котором явно указано, что релиз состоялся; все, что " +"обозначено как «релиз» до этого момента, может находиться в процессе " +"доработки и изменяться до отправки PGP-подписанного сообщения. footnote:" +"[Многие коммерческие поставщики используют эти образы для создания CD-ROM, " +"которые продаются в розничных магазинах.]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1026 +msgid "" +"The releases of the -CURRENT-branch (that is, all releases that end with " +"\".0\") are very similar, but with twice as long timeframe. It starts 8 " +"weeks prior to the release with announcement of the release time line. Two " +"weeks into the release process, the feature freeze is initiated and " +"performance tweaks should be kept to a minimum. Four weeks prior to the " +"release, an official beta version is made available. Two weeks prior to " +"release, the code is officially branched into a new version. This version " +"is given release candidate status, and as with the release engineering of " +"-STABLE, the code freeze of the release candidate is hardened. However, " +"development on the main development branch can continue. Other than these " +"differences, the release engineering processes are alike." +msgstr "" +"Версии ветки -CURRENT (то есть все версии, оканчивающиеся на \".0\"), очень " +"похожи, но с вдвое большим временным промежутком. Процесс начинается за 8 " +"недель до выпуска с объявления графика релиза. Через две недели после начала " +"процесса выпуска вводится заморозка функциональности, и оптимизация " +"производительности должна быть сведена к минимуму. За четыре недели до " +"выпуска становится доступна официальная бета-версия. За две недели до " +"выпуска код официально ветвится в новую версию. Этой версии присваивается " +"статус релиз-кандидата, и, как и в случае с разработкой -STABLE, заморозка " +"кода релиз-кандидата ужесточается. Однако разработка на основной ветке " +"разработки может продолжаться. За исключением этих различий, процессы " +"разработки релизов схожи." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1030 +#, fuzzy +#| msgid "" +#| "*.0 releases go into their own branch and are aimed mainly at early " +#| "adopters.\n" +#| "The branch then goes through a period of stabilisation, and it is not " +#| "until the\n" +#| "crossref:dev-model[role-releng, Release Engineering Team] decides the " +#| "demands to stability have been satisfied that the branch becomes -STABLE " +#| "and -CURRENT targets the next major version. While this for the majority " +#| "has been with *.1 versions, this is not a demand.\n" +msgid "" +"*.0 releases go into their own branch and are aimed mainly at early " +"adopters. The branch then goes through a period of stabilisation, and it is " +"not until the crossref:dev-model[role-releng, Release Engineering Team] " +"decides the demands to stability have been satisfied that the branch becomes " +"-STABLE and -CURRENT targets the next major version. While this for the " +"majority has been with *.1 versions, this is not a demand." +msgstr "" +"*.0 выпуски выделяются в отдельную ветку и ориентированы в основном на " +"ранних последователей.\n" +"Затем ветка проходит период стабилизации, и только после того, как\n" +"crossref:dev-model[role-releng, Команда разработки релизов] решит, что " +"требования к стабильности выполнены, ветка становится -STABLE, а -CURRENT " +"переключается на следующую мажорную версию. Хотя в большинстве случаев это " +"происходило с версиями *.1, это не является обязательным требованием.\n" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1035 +msgid "" +"Most releases are made when a given date that has been deemed a long enough " +"time since the previous release comes. A target is set for having major " +"releases every 18 months and minor releases every 4 months. The user " +"community has made it very clear that security and stability cannot be " +"sacrificed by self-imposed deadlines and target release dates. For slips of " +"time not to become too long with regards to security and stability issues, " +"extra discipline is required when committing changes to -STABLE." +msgstr "" +"Большинство выпусков происходит по достижении даты, которая считается " +"достаточно отдалённой от предыдущего выпуска. Установлена цель выпускать " +"основные версии каждые 18 месяцев, а промежуточные — каждые 4 месяца. " +"Сообщество пользователей чётко дало понять, что безопасность и стабильность " +"не могут быть принесены в жертву из-за самостоятельно установленных сроков и " +"целевых дат выпуска. Чтобы задержки не становились слишком длинными в " +"вопросах безопасности и стабильности, требуется дополнительная дисциплина " +"при внесении изменений в -STABLE." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1037 +msgid "Make release schedule" +msgstr "Сделать график выпуска релизов" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1038 +msgid "Feature freeze" +msgstr "Заморозить функциональность" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1039 +msgid "Code freeze" +msgstr "Заморозка кода" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1040 +msgid "Make branch" +msgstr "Создать ветку" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1041 +msgid "Release candidate" +msgstr "Кандидат на выпуск" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1042 +msgid "" +"Stabilize release (loop back to previous step as many times as necessary; " +"when release is considered stable, proceed with next step)" +msgstr "" +"Стабилизировать выпуск (при необходимости вернуться к предыдущему шагу; " +"когда выпуск считается стабильным, перейти к следующему шагу)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1043 +msgid "Build packages" +msgstr "Собрать пакеты" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1044 +msgid "Warn mirrors" +msgstr "Предупредить сайты-зеркала" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1045 +msgid "Publish release" +msgstr "Опубликовать выпуск" + +#. Keep the spaces around the external square bracket to avoid a warning in the +#. PDF converter +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1049 +#, fuzzy +#| msgid "[crossref:dev-model[freebsd-handle-pr, FreeBSD, 2002C]]." +msgid "[ crossref:dev-model[freebsd-releng, FreeBSD, 2002E] ]" +msgstr "[crossref::dev-model[freebsd-handle-pr, FreeBSD, 2002C]]." + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:1051 +#, no-wrap +msgid "Tools" +msgstr "Инструменты" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1055 +msgid "" +"The major support tools for supporting the development process are Bugzilla, " +"Mailman, and OpenSSH. These are externally developed tools and are commonly " +"used in the open source world." +msgstr "" +"Основные инструменты поддержки процесса разработки — это Bugzilla, Mailman и " +"OpenSSH. Это инструменты, разработанные сторонними организациями, которые " +"широко используются в мире открытого исходного кода." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:1057 +#, no-wrap +msgid "Git" +msgstr "Git" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1061 +msgid "" +"Git is a system to handle multiple versions of text files and tracking who " +"committed what changes and why. A project lives within a \"repository\" and " +"different versions are considered different \"branches\"." +msgstr "" +"Git — это система для управления несколькими версиями текстовых файлов, " +"отслеживания внесённых изменений, их авторов и причин. Проект хранится в " +"«репозитории», а разные версии считаются разными «ветками»." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:1063 +#, no-wrap +msgid "Bugzilla" +msgstr "Bugzilla" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1069 +msgid "" +"Bugzilla is a maintenance database consisting of a set of tools to track " +"bugs at a central site. It supports the bug tracking process for sending " +"and handling bugs as well as querying and updating the database and editing " +"bug reports. The project uses its web interface to send \"Problem Reports\" " +"to the project's central Bugzilla server. The committers also have web and " +"command-line clients." +msgstr "" +"Bugzilla — это база данных для сопровождения, состоящая из набора " +"инструментов для отслеживания ошибок на центральном сайте. Она поддерживает " +"процесс отслеживания ошибок, включая отправку и обработку ошибок, а также " +"запросы и обновление базы данных, а также редактирование отчётов об ошибках. " +"Проект использует веб-интерфейс для отправки \"Отчётов о проблемах\" на " +"центральный сервер Bugzilla проекта. У коммиттеров также есть веб- и " +"командные клиенты." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:1071 +#, no-wrap +msgid "Mailman" +msgstr "Mailman" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1079 +msgid "" +"Mailman is a program that automates the management of mailing lists. The " +"FreeBSD Project uses it to run 16 general lists, 60 technical lists, 4 " +"limited lists and 5 lists with Git commit logs. It is also used for many " +"mailing lists set up and used by other people and projects in the FreeBSD " +"community. General lists are lists for the general public, technical lists " +"are mainly for the development of specific areas of interest, and closed " +"lists are for internal communication not intended for the general public. " +"The majority of all the communication in the project goes through these 85 " +"lists [crossref:dev-model[ref-bsd-handbook, FreeBSD, 2003A], Appendix C]." +msgstr "" +"Mailman - это программа, которая автоматизирует управление почтовыми " +"рассылками. Проект FreeBSD использует ее для ведения 16 общих рассылок, 60 " +"технических рассылок, 4 ограниченных рассылок и 5 рассылок с логами коммитов " +"Git. Она также используется для многих почтовых рассылок, созданных и " +"используемых другими людьми и проектами в сообществе FreeBSD. Общие рассылки " +"предназначены для широкой публики, технические рассылки в основном " +"предназначены для разработки определенных областей интересов, а закрытые " +"рассылки используются для внутренней коммуникации, не предназначенной для " +"широкой публики. Большая часть всей коммуникации в проекте проходит через " +"эти 85 рассылок [crossref:dev-model[ref-bsd-handbook, FreeBSD, 2003A], " +"Приложение C]." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:1081 +#, no-wrap +msgid "Pretty Good Privacy" +msgstr "Pretty Good Privacy" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1086 +msgid "" +"Pretty Good Privacy, better known as PGP, is a cryptosystem using a public " +"key architecture to allow people to digitally sign and/or encrypt " +"information in order to ensure secure communication between two parties. A " +"signature is used when sending information out to many recipients, enabling " +"them to verify that the information has not been tampered with before they " +"received it. In the FreeBSD Project this is the primary means of ensuring " +"that information has been written by the person who claims to have written " +"it, and not altered in transit." +msgstr "" +"Pretty Good Privacy, более известный как PGP, — это криптосистема, " +"использующая архитектуру открытого ключа, чтобы позволить пользователям " +"подписывать и/или шифровать информацию цифровой подписью для обеспечения " +"безопасной связи между двумя сторонами. Подпись используется при отправке " +"информации множеству получателей, позволяя им убедиться, что информация не " +"была изменена до того, как они её получили. В проекте FreeBSD это основной " +"способ убедиться, что информация была написана тем, кто утверждает, что её " +"создал, и не была изменена в процессе передачи." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:1088 +#, no-wrap +msgid "Secure Shell" +msgstr "Secure Shell (SSH)" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1095 +msgid "" +"Secure Shell is a standard for securely logging into a remote system and for " +"executing commands on the remote system. It allows other connections, " +"called tunnels, to be established and protected between the two involved " +"systems. This standard exists in two primary versions, and only version two " +"is used for the FreeBSD Project. The most common implementation of the " +"standard is OpenSSH that is a part of the project's main distribution. " +"Since its source is updated more often than FreeBSD releases, the latest " +"version is also available in the ports tree." +msgstr "" +"Secure Shell - это стандарт безопасного входа в удалённую систему и " +"выполнения команд на ней. Он позволяет устанавливать и защищать другие " +"соединения, называемые туннелями, между двумя взаимодействующими системами. " +"Этот стандарт существует в двух основных версиях, и только версия два " +"используется в проекте FreeBSD. Наиболее распространённая реализация " +"стандарта - OpenSSH, которая входит в основную дистрибуцию проекта. " +"Поскольку её исходный код обновляется чаще, чем выпуски FreeBSD, последняя " +"версия также доступна в дереве портов." + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:1097 +#, no-wrap +msgid "Sub-projects" +msgstr "Подпроекты" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1100 +msgid "" +"Sub-projects are formed to reduce the amount of communication needed to " +"coordinate the group of developers. When a problem area is sufficiently " +"isolated, most communication would be within the group focusing on the " +"problem, requiring less communication with the groups they communicate with " +"than were the group not isolated." +msgstr "" +"Подпроекты создаются для уменьшения объема коммуникации, необходимой для " +"координации группы разработчиков. Когда проблемная область достаточно " +"изолирована, большая часть коммуникации происходит внутри группы, " +"сосредоточенной на проблеме, что требует меньше общения с другими группами " +"по сравнению с ситуацией, когда группа не изолирована." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:1102 +#, no-wrap +msgid "The Ports Subproject" +msgstr "Подпроект Ports" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1106 +msgid "" +"A \"port\" is a set of meta-data and patches that are needed to fetch, " +"compile and install correctly an external piece of software on a FreeBSD " +"system. The amount of ports has grown at a tremendous rate, as shown by the " +"following figure." +msgstr "" +"\"Порт\" — это набор метаданных и патчей, необходимых для загрузки, " +"компиляции и корректной установки внешнего программного обеспечения в " +"системе FreeBSD. Количество портов растёт с огромной скоростью, как показано " +"на следующем рисунке." + +#. type: Block title +#: documentation/content/en/books/dev-model/_index.adoc:1107 +#, no-wrap +msgid "Number of ports added between 1995 and 2022" +msgstr "Количество портов, добавленных между 1995 и 2022 годами" + +#. type: Target for macro image +#: documentation/content/en/books/dev-model/_index.adoc:1109 +#, no-wrap +msgid "portsstatus.svg" +msgstr "portsstatus.svg" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1113 +msgid "" +"crossref:dev-model[fig-ports,image::portsstatus.svg] shows the number of " +"ports available to FreeBSD in the period 1995 to 2022. It looks like the " +"curve has first grown exponentially, and then from the middle of 2001 to the " +"middle of 2007 grown linearly at a rate of about 2000 ports/year, before its " +"growth rate gets lower." +msgstr "" +"crossref:dev-model[fig-ports,image::portsstatus.svg] показывает количество " +"портов, доступных для FreeBSD в период с 1995 по 2022 год. Похоже, что " +"кривая сначала росла экспоненциально, а затем с середины 2001 до середины " +"2007 года росла линейно со скоростью около 2000 портов/год, после чего " +"скорость роста снизилась." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1116 +msgid "" +"As the external software described by the port often is under continued " +"development, the amount of work required to maintain the ports is already " +"large, and increasing. This has led to the ports part of the FreeBSD " +"project gaining a more empowered structure, and is more and more becoming a " +"sub-project of the FreeBSD project." +msgstr "" +"Поскольку внешнее программное обеспечение, описываемое портом, часто " +"находится в стадии активной разработки, объем работы, необходимой для " +"поддержки портов, уже велик и продолжает расти. Это привело к тому, что " +"часть проекта FreeBSD, связанная с портами, получила более самостоятельную " +"структуру и все больше становится подпроектом проекта FreeBSD." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1119 +msgid "" +"Ports has its own core team with the crossref:dev-model[role-ports-manager, " +"Ports Manager] as its leader, and this team can appoint committers without " +"FreeBSD Core's approval. Unlike in the FreeBSD Project, where a lot of " +"maintenance frequently is rewarded with a commit bit, the ports sub-project " +"contains many active maintainers that are not committers." +msgstr "" +"Порты имеют свою собственную основную команду с crossref:dev-model[role-" +"ports-manager, Менеджером Портов] во главе, и эта команда может назначать " +"коммиттеров без одобрения Основной команды FreeBSD (Core Team). В отличие от " +"проекта FreeBSD, где активное сопровождение часто вознаграждается правом " +"коммита, подпроект портов включает множество активных сопровождающих, не " +"являющихся коммиттерами." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1123 +msgid "" +"Unlike the main project, the ports tree is not branched. Every release of " +"FreeBSD follows the current ports collection and has thus available updated " +"information on where to find programs and how to build them. This, however, " +"means that a port that makes dependencies on the system may need to have " +"variations depending on what version of FreeBSD it runs on." +msgstr "" +"В отличие от основного проекта, дерево портов не разветвляется. Каждый " +"выпуск FreeBSD следует текущей коллекции портов, что обеспечивает доступ к " +"обновлённой информации о том, где найти программы и как их собрать. Однако " +"это означает, что порт, зависящий от системы, может требовать изменений в " +"зависимости от версии FreeBSD, на которой он запущен." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1126 +msgid "" +"With an unbranched ports repository it is not possible to guarantee that any " +"port will run on anything other than -CURRENT and -STABLE, in particular " +"older, minor releases. There is neither the infrastructure nor volunteer " +"time needed to guarantee this." +msgstr "" +"С неразветвлённым репозиторием портов невозможно гарантировать, что любой " +"порт будет работать на чём-либо, кроме -CURRENT и -STABLE, в частности на " +"старых, минорных выпусках. Для этого нет ни инфраструктуры, ни времени " +"волонтёров." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1128 +msgid "" +"For efficiency of communication, teams depending on Ports, such as the " +"release engineering team, have their own ports liaisons." +msgstr "" +"Команды, зависящие от Ports, такие как команда выпуска релизов, для " +"эффективности коммуникации имеют своих собственных представителей по портам." + +#. type: Title === +#: documentation/content/en/books/dev-model/_index.adoc:1130 +#, no-wrap +msgid "The FreeBSD Documentation Project" +msgstr "Проект документации FreeBSD" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1135 +msgid "" +"The FreeBSD Documentation project was started January 1995. From the " +"initial group of a project leader, four team leaders and 16 members, they " +"are now a total of 44 committers. The documentation mailing list has just " +"under 300 members, indicating that there is quite a large community around " +"it." +msgstr "" +"Проект документации FreeBSD был начат в январе 1995 года. От первоначальной " +"группы, состоявшей из руководителя проекта, четырёх руководителей команд и " +"16 участников, сейчас общее число коммиттеров достигло 44. Список рассылки " +"документации насчитывает чуть менее 300 участников, что указывает на " +"довольно большое сообщество вокруг него." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1137 +msgid "" +"The goal of the Documentation project is to provide good and useful " +"documentation of the FreeBSD project, thus making it easier for new users to " +"get familiar with the system and detailing advanced features for the users." +msgstr "" +"Цель проекта Документации — предоставить качественную и полезную " +"документацию проекта FreeBSD, чтобы новые пользователи могли легче освоить " +"систему, а также подробно описать расширенные функции для пользователей." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1139 +msgid "" +"The main tasks in the Documentation project are to work on current projects " +"in the \"FreeBSD Documentation Set\", and translate the documentation to " +"other languages." +msgstr "" +"Основные задачи проекта Documentation — работа над текущими проектами в " +"\"Наборе документации FreeBSD\" и перевод документации на другие языки." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1143 +msgid "" +"Like the FreeBSD Project, documentation is split in the same branches. This " +"is done so that there is always an updated version of the documentation for " +"each version. Only documentation errors are corrected in the security " +"branches." +msgstr "" +"Как и проект FreeBSD, документация разделена на те же ветви. Это сделано для " +"того, чтобы для каждой версии всегда была обновлённая документация. В ветвях " +"безопасности исправляются только ошибки в документации." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1147 +msgid "" +"Like the ports sub-project, the Documentation project can appoint " +"documentation committers without FreeBSD Core's approval. [crossref:dev-" +"model[freebsd-doceng-charter, FreeBSD, 2003B]]." +msgstr "" +"Как и подпроект ports, проект Documentation может назначать коммиттеров " +"документации без одобрения основной команды FreeBSD (Core Team). " +"[crossref:dev-model[freebsd-doceng-charter, FreeBSD, 2003B]]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1150 +msgid "" +"The Documentation project has extref:{fdp-primer}[a primer]. This is used " +"both to introduce new project members to the standard tools and syntaxes and " +"to act as a reference when working on the project." +msgstr "" +"Проект документации включает в себя extref:{fdp-primer}[вводное " +"руководство]. Оно используется как для ознакомления новых участников проекта " +"со стандартными инструментами и синтаксисом, так и в качестве справочника " +"при работе над проектом." + +#. type: Title == +#: documentation/content/en/books/dev-model/_index.adoc:1155 +#, no-wrap +msgid "References" +msgstr "Список литературы" + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1159 +msgid "" +"[Brooks, 1995] Frederick P. Brooks. Copyright © 1975, 1995 Pearson Education " +"Limited. 0201835959. Addison-Wesley Pub Co. The Mythical Man-Month. Essays " +"on Software Engineering, Anniversary Edition (2nd Edition)." +msgstr "" +"[Brooks, 1995] Фредерик П. Брукс. Авторское право © 1975, 1995 Pearson " +"Education Limited. 0201835959. Addison-Wesley Pub Co. Мифический " +"человекомесяц. Эссе о программной инженерии, юбилейное издание (2-е издание)." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1162 +msgid "" +"[Saers, 2003] Niklas Saers. Copyright © 2003. A project model for the " +"FreeBSD Project. Candidatus Scientiarum thesis. http://niklas.saers.com/" +"thesis." +msgstr "" +"[Saers, 2003] Никлас Саерс. Авторское право © 2003. Модель проекта для " +"FreeBSD. Кандидатская диссертация. http://niklas.saers.com/thesis." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1165 +msgid "" +"[Jørgensen, 2001] Niels Jørgensen. Copyright © 2001. Putting it All in the " +"Trunk. Incremental Software Development in the FreeBSD Open Source Project. " +"http://www.dat.ruc.dk/~nielsj/research/papers/freebsd.pdf." +msgstr "" +"[Йоргенсен, 2001] Нильс Йоргенсен. Copyright © 2001. _Putting it All in the " +"Trunk. Incremental Software Development in the FreeBSD Open Source Project_. " +"http://www.dat.ruc.dk/~nielsj/research/papers/freebsd.pdf." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1168 +msgid "" +"[PMI, 2000] Project Management Institute. Copyright © 1996, 2000 Project " +"Management Institute. 1-880410-23-0. Project Management Institute. Newtown " +"Square Pennsylvania USA . PMBOK Guide. A Guide to the Project Management " +"Body of Knowledge, 2000 Edition." +msgstr "" +"[PMI, 2000] Институт управления проектами. Copyright © 1996, 2000 Институт " +"управления проектами. 1-880410-23-0. Институт управления проектами. Ньютаун " +"Сквер, Пенсильвания, США. PMBOK Guide. A Guide to the Project Management " +"Body of Knowledge (Руководство PMBOK. Руководство к своду знаний по " +"управлению проектами), издание 2000 года." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1171 +msgid "" +"[FreeBSD, 2000A] Copyright © 2002 The FreeBSD Project. Core Bylaws. https://" +"www.freebsd.org/internal/bylaws/." +msgstr "" +"[FreeBSD, 2000A] Copyright © 2002 The FreeBSD Project. Core Bylaws. https://" +"www.freebsd.org/internal/bylaws/." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1174 +msgid "" +"[FreeBSD, 2002A] Copyright © 2002 The FreeBSD Documentation Project. FreeBSD " +"Developer's Handbook. extref:{developers-handbook}[Developers Handbook]." +msgstr "" +"[FreeBSD, 2002A] Copyright © 2002 The FreeBSD Documentation Project. " +"Руководство FreeBSD для разработчиков. extref:{developers-handbook}" +"[Руководство FreeBSD для разработчиков]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1177 +msgid "" +"[FreeBSD, 2002B] Copyright © 2002 The FreeBSD Project. Core team election " +"2002. http://election.uk.freebsd.org/candidates.html." +msgstr "" +"[FreeBSD, 2002B] Copyright © 2002 Проект FreeBSD. Выборы состава основной " +"команды (Core Team) 2002. http://election.uk.freebsd.org/candidates.html." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1180 +msgid "" +"[FreeBSD, 2002C] Dag-Erling Smørgrav and Hiten Pandya. Copyright © 2002 The " +"FreeBSD Documentation Project. The FreeBSD Documentation Project. Problem " +"Report Handling Guidelines. extref:{pr-guidelines}[Problem Report Handling " +"Guidelines]." +msgstr "" +"[FreeBSD, 2002C] Даг-Эрлинг Смёрграв и Хитен Пандья. Copyright © 2002 The " +"FreeBSD Documentation Project. The FreeBSD Documentation Project. " +"Рекомендации по работе с сообщениями о проблемах. extref:{pr-guidelines}" +"[Рекомендации по работе с сообщениями о проблемах]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1183 +msgid "" +"[FreeBSD, 2002D] Dag-Erling Smørgrav. Copyright © 2002 The FreeBSD " +"Documentation Project. The FreeBSD Documentation Project. Writing FreeBSD " +"Problem Reports. extref:{problem-reports}[Writing FreeBSD Problem Reports]." +msgstr "" +"[FreeBSD, 2002D] Даг-Эрлинг Смёрграв. Copyright © 2002 Проект документации " +"FreeBSD. Проект документации FreeBSD. Составление сообщений о проблеме во " +"FreeBSD. extref:{problem-reports}[Составление сообщений о проблеме во " +"FreeBSD]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1186 +msgid "" +"[FreeBSD, 2001] Copyright © 2001 The FreeBSD Documentation Project. The " +"FreeBSD Documentation Project. Committers Guide. extref:{committers-guide}" +"[Committer's Guide]." +msgstr "" +"[FreeBSD, 2001] Copyright © 2001 The FreeBSD Documentation Project. The " +"FreeBSD Documentation Project. Справочник коммиттера. extref:{committers-" +"guide}[Справочник коммиттера]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1189 +msgid "" +"[FreeBSD, 2002E] Murray Stokely. Copyright © 2002 The FreeBSD Documentation " +"Project. The FreeBSD Documentation Project. FreeBSD Release Engineering. " +"extref:{releng}[FreeBSD Release Engineering]." +msgstr "" +"[FreeBSD, 2002E] Мюррей Стокли. Copyright © 2002 The FreeBSD Documentation " +"Project. Проект документации FreeBSD. Подготовка релизов FreeBSD. extref:" +"{releng}[Подготовка релизов FreeBSD]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1192 +msgid "" +"[FreeBSD, 2003A] The FreeBSD Documentation Project. FreeBSD Handbook. extref:" +"{handbook}[FreeBSD Handbook]." +msgstr "" +"[FreeBSD, 2003A] Проект документации FreeBSD. Руководство FreeBSD. extref:" +"{handbook}[Руководство FreeBSD]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1195 +msgid "" +"[FreeBSD, 2002F] Copyright © 2002 The FreeBSD Documentation Project. The " +"FreeBSD Documentation Project. Contributors to FreeBSD. extref:{contributors}" +"[Contributors to FreeBSD]." +msgstr "" +"[FreeBSD, 2002F] Copyright © 2002 The FreeBSD Documentation Project. Проект " +"документации FreeBSD. Участники проекта FreeBSD. extref:{contributors}" +"[Участники проекта FreeBSD]." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1198 +msgid "" +"[FreeBSD, 2002G] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " +"Core team elections 2002. http://election.uk.freebsd.org." +msgstr "" +"[FreeBSD, 2002G] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " +"Выборы состава основной команды (Core Team) 2002. http://" +"election.uk.freebsd.org." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1201 +msgid "" +"[FreeBSD, 2002H] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " +"Commit Bit Expiration Policy. 2002/04/06 15:35:30. https://www.freebsd.org/" +"internal/expire-bits/." +msgstr "" +"[FreeBSD, 2002H] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " +"Политика истечения срока действия битов коммитов. 2002/04/06 15:35:30. " +"https://www.freebsd.org/internal/expire-bits/." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1204 +msgid "" +"[FreeBSD, 2002I] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " +"New Account Creation Procedure. 2002/08/19 17:11:27. https://www.freebsd.org/" +"internal/new-account/." +msgstr "" +"[FreeBSD, 2002I] Copyright © 2002 The FreeBSD Project. The FreeBSD Project. " +"Процедура создания нового аккаунта. 2002/08/19 17:11:27. https://" +"www.freebsd.org/internal/new-account/." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1207 +msgid "" +"[FreeBSD, 2003B] Copyright © 2002 The FreeBSD Documentation Project. The " +"FreeBSD Documentation Project. FreeBSD DocEng Team Charter. 2003/03/16 " +"12:17. https://www.freebsd.org/internal/doceng/." +msgstr "" +"[FreeBSD, 2003B] Copyright © 2002 The FreeBSD Documentation Project. The " +"FreeBSD Documentation Project. Устав команды разработчиков документации " +"FreeBSD. 2003/03/16 12:17. https://www.freebsd.org/internal/doceng/." + +#. type: Plain text +#: documentation/content/en/books/dev-model/_index.adoc:1209 +msgid "" +"[Lehey, 2002] Greg Lehey. Copyright © 2002 Greg Lehey. Greg Lehey. Two years " +"in the trenches. The evolution of a software project. http://www.lemis.com/" +"grog/In-the-trenches.pdf." +msgstr "" +"[Lehey, 2002] Грег Лехи. Copyright © 2002 Грег Лехи. Грег Лехи. Two years in " +"the trenches. The evolution of a software project (Два года в окопах. " +"Эволюция программного проекта). http://www.lemis.com/grog/In-the-" +"trenches.pdf." + +#~ msgid "" +#~ "There are, however, no automatic procedures for doing this. For " +#~ "reactions concerning commit privileges not triggered by time, see " +#~ "crossref:dev-model[process-reactions,section 1.5.8]." +#~ msgstr "" +#~ "Однако не существует автоматических процедур для этого. Для действий, " +#~ "связанных с привилегиями коммитов, не вызванных временем, см. " +#~ "crossref:dev-model[process-reactions,раздел 1.5.8]." |