# Участие в проекте FreeBSD

### Джордан Хаббард

$FreeBSD: doc/ru_RU.KOI8-R/articles/contributing/article.sgml,v 1.4 2010/02/19 17:03:52 gabor Exp $

FreeBSD это зарегистрированная торговая марка FreeBSD Foundation.

IEEE, POSIX и 802 это зарегистрированные торговые марки Institute of Electrical and Electronics Engineers, Inc. в Соединенных Штатах.

Многие из обозначений, используемые производителями и продавцами для обозначения своих продуктов, заявляются в качестве торговых марок. Когда такие обозначения появляются в этом документе, и Проекту FreeBSD известно о торговой марке, к обозначению добавляется знак ''"'' или ''╝''.

В этой статье описаны различные способы, которыми отдельные лица и организаций могут принять участие в Проекте FreeBSD.

[ По разделам / Одним файлом ]

Итак, вы хотите внести свой вклад во FreeBSD? Это великолепно! Жизнеспособность FreeBSD основана на помощи её пользователей. Ваша помощь не только принимается, она жизненно необходима для продолжения роста FreeBSD.

Несмотря на уверения некоторых людей, вам не нужно быть гениальным программистом или персоной, лично связанной с руководящей группой FreeBSD, чтобы ваша помощь была принята. FreeBSD разрабатывает большое и увеличивающееся количество участников со всего мира, самого разного возраста и разных областей технической экспертизы. Работы, которую необходимо сделать, всегда больше, чем разработчиков, могущих её выполнить, и дополнительная помочь всегда приветствуется.

Проект FreeBSD занимается операционной системой в целом, а не только ядром или несколькими отдельными утилитами. Таким образом, в нашем `TODO`-списке широкий спектр задач: от документации, бета-тестирования и презентаций до программы установки системы и специфических разработок уровня ядра. Люди любого уровня практически в любой области определённо смогут помочь проекту.

Коммерческие структуры, связанные с использованием FreeBSD, также приглашаются к диалогу. Нужны ли вам особые расширения, для работы вашего продукта? Вы увидите, что мы отвечаем на ваши запросы, если они не слишком необычны. Вы работаете над дополнительными продуктами? Дайте нам знать! Мы сможем работать вместе над некоторыми его аспектами. Мир свободного программного обеспечения ставит под сомнение многие существующие представления о том, как программного обеспечение разрабатывается, продаётся и поддерживается, и мы настоятельно просим вас посмотреть на него ещё раз.

## 1 Что нужно

В следующем перечне представлены задачи и подпроекты, являющиеся некоторым отражением различных списков `TODO` и запросов пользователей.

### 1.1 Текущие задачи не для программистов

Многие люди, связанные с FreeBSD, не являются программистами. В Проекте участвуют создатели документации, Web-дизайнеры и специалисты по поддержке пользователей. Все, что им нужно для участия, это своё время и желание учиться.

1. Периодически читайте FAQ и Руководство. Если что-то описано плохо, устарело или даже полностью неправильно, дайте нам знать. Ещё лучше, если вы пришлёте нам исправление (выучить SGML не так сложно, но и против посланий в формате ASCII никто возражать не будет).

2. Помогите перевести документацию FreeBSD на ваш родной язык. Если документация на вашем языке уже существует, вы можете помочь перевести дополнительные документы или проверить, не устарели ли переводы. Первым делом взгляните на FAQ по переводам в Учебнике проекта документирования FreeBSD. Вас не призывают перевести все документы FreeBSD -- как доброволец, вы можете делать столько переводов, сколько захотите. Если кто-то начал перевод, другие всегда присоединятся. Если у вас есть время и желание перевести одну часть документации, пожалуйста, переведите инструкции по установке.

3. Время от времени (или даже регулярно) читайте Список рассылки, посвящённый вопросам и ответам пользователей FreeBSD и группа новостей comp.unix.bsd.freebsd.misc. Вам может понравиться делиться своим опытом и помогать людям решать их проблемы; иногда вы сможете узнать для себя что-то новое! Эти форумы могут также стать источником идей, над которыми вам стоит поработать.

### 1.2 Текущие задачи для программистов

Большинство задач, перечисленных здесь, требуют либо значительных затрат времени, либо глубоких знаний ядра FreeBSD, либо того и другого. Однако имеется также много полезных задач, которые подойдут для ''воскресных хакеров''.

1. Если вы работаете с FreeBSD-CURRENT и обладаете хорошим подключением к Internet, то существует машина `current.FreeBSD.org`, которая строит полный релиз ежедневно--сейчас и всегда. Попробуйте установить самый последний релиз с этой машины и сообщите обо всех обнаруженных при этом ошибках.

2. Читайте Список рассылки FreeBSD, посвящённый сообщениям о проблемах. Здесь может встретиться проблема, которую вы сможете конструктивно прокомментировать или патчи, которые вы можете протестировать. Либо вы можете даже попытаться исправить какую-то проблему самостоятельно.

3. Если вы знаете о существовании каких-либо исправлений ошибок, успешно применённых к -CURRENT, но ещё не перенесённых в -STABLE после достаточно большого интервала времени (обычно несколько недель), направьте коммиттеру вежливое напоминание.

4. Перенос стороннего программного обеспечения в каталог `src/contrib` дерева исходных текстов.

5. Проверка актуальности кода в каталоге `src/contrib`.

6. Построение из дерева исходных текстов (или её части) с включением режима дополнительных предупреждений, избавление от них.

7. Исправление предупреждений от портов, которые используют недопустимые вызовы типа `gets()` или включают файл объявлений `malloc.h`.

8. Если вы создавали порты и вам приходилось делать специфичные для FreeBSD исправления, пошлите ваши патчи авторам оригинального программного обеспечения (это упростит вам жизнь при выпуске следующей версии).

9. Найдите копии официальных стандартов, например, POSIX╝. Вы можете найти несколько ссылок на них на странице Web-сайта Проекта соответствия FreeBSD стандартам C99 & POSIX. Сравните поведение FreeBSD с тем, что определено стандартом. Если реакция отличается, особенно в незначительных или непонятных разделах спецификации, направьте об этом PR. Если можете, найдите, как исправить это и включите в PR патч. Если вы полагаете, что в стандарте есть ошибка, направьте запрос его разработчикам.

10. Предложите дополнительные задачи для этого списка!

### 1.3 Работа с базой сообщений об ошибках PR

Список сообщений об ошибках FreeBSD содержит все актуальные сообщения о проблемах и запросы на улучшения, которые были посланы пользователями FreeBSD. База данных PR содержит задачи как для программистов, так и не для них. Просмотрите открытые PR, найдите те, что привлекут ваше внимание. Некоторые из них могут быть очень простыми, требующими лишь ещё одной пары глаз, чтобы посмотреть и подтвердить, что предлагаемое в PR исправление достаточно. Другие могут быть гораздо сложнее и даже вовсе не содержать исправления.

Начните с тех PR, которые никому ещё не назначены. Если PR уже за кем-то закреплено, но содержит проблему, которую вы можете решить, направьте по электронной почте письмо человеку, которому назначено это PR, и спросите, можете ли вы поработать над ней--у них уже может готов патч для тестирования или какие-то идеи, которые можно вместе обсудить.

### 1.4 Выберите один из пунктов со странички ''идей''

Список проектов и идей для добровольцев также доступен для людей, желающих помочь проекту FreeBSD. Список постоянно обновляется и содержит пункты, как для программистов, так и для не программистов, с информацией о каждом проекте.

## 2 Как принять участие в работе

Характер участия в работе над системой обычно подпадает под одну или несколько из следующих 5 категорий:

### 2.1 Сообщения об ошибках и отзывы общего характера

Идеи или пожелания общего технического характера должны направляться по электронной почте в адрес Список рассылки FreeBSD, посвящённый техническим дискуссиям. Подобным же образом тот, кто интересуется такими вещами (и устойчив к большому потоку почты!) может подписаться на список рассылки Список рассылки FreeBSD, посвящённый техническим дискуссиям. Обратитесь к Руководству FreeBSD для получения дополнительной информации об этом и других списках рассылки.

Если вы нашли ошибку или предлагаете внести какое-то конкретное исправление, пожалуйста, отправьте сообщение при помощи программы send-pr(1) или её Web-эквивалента. Постарайтесь заполнить все поля в сообщении об ошибке. Если его размер оно не превышает 65 Кбайт, включите все патчи непосредственно в сообщение. Если патч предназначен для дерева исходных текстов, поместите `[PATCH]` в теме сообщения. При включении патчей не используйте технику cut-and-paste, потому что при этом символы табуляции преобразуются в пробелы и патч становится непригодным к использованию. Если объём патчей превышает 20 Кбайт, лучше включать их в сообщение в сжатом виде, для чего упакуйте их (например, при помощи gzip(1) или bzip2(1)) и обработайте архив утилитой uuencode(1).

После отправки сообщения вы должны получить подтверждение и номер для отслеживания. Сохраните этот номер, чтобы использовать его в дальнейшем при направлении подробностей о проблеме по электронной почте на адрес `<bug-followup@FreeBSD.org>`. Используйте номер в качестве темы письма, например, `"Re: kern/3377"`. Дополнительная информация о любом сообщении об ошибке должна направляться этим способом.

Если вы не получили подтверждения в течение разумного периода времени (от 3 дней до недели, в зависимости от вашего подключения к электронной почты) или по какой-то причине не можете воспользоваться командой send-pr(1), то можете попросить кого-нибудь направить сообщение за вас на адрес Список рассылки FreeBSD, посвящённый сообщениям о проблемах.

Прочтите также эту статью, чтобы узнать, как писать хорошие сообщения о проблемах.

### 2.2 Изменения в документации

Изменения в документации обсуждаются в Список рассылки Проекта Документации FreeBSD. Пожалуйста, посмотрите Учебник Проекта документирования FreeBSD для получения полных инструкций. Посылайте свои пожелания и изменения (принимаются даже самые небольшие!) при помощи send-pr(1), как это описано в разделе о сообщениях об ошибках и общих пожеланиях.

### 2.3 Изменения к имеющемуся исходному коду

Добавление нового исходного кода или внесение изменений в существующий является не такой простой задачей, и зависит во многом от того, насколько вы далеки от текущего состояния разработок во FreeBSD. Существуют специальные промежуточные релизы FreeBSD, известные как ''FreeBSD-CURRENT'', которые доступны несколькими разными способами, удобными разработчикам, активно работающим над системой. Обратитесь к Руководству FreeBSD для получения дополнительной информации о получении и использовании FreeBSD-CURRENT.

Если вы работаете с несколько устаревшими исходными текстами, то ваши изменения иногда могут оказаться уже ненужными или слишком большими, чтобы повторно интегрировать их во FreeBSD. Уменьшить такой риск можно, подписавшись на списки рассылки Список рассылки анонсов FreeBSD и Список рассылки, посвящённый обсуждению FreeBSD-CURRENT, в которых обсуждается текущее состояние системы.

Предположим, что вы смогли получить актуальные исходные тексты, на базе которых делали свои изменения. Тогда следующим шагом является создание набора файлов, отражающих ваши изменения для их посылки тем, кто отвечает за поддержку FreeBSD. Это делается при помощи команды diff(1).

Предпочтительным форматом diff(1) для посылки патчей является унифицированная выдача, создаваемая командой `diff -u`. Однако для патчей, которые существенно изменяют какой-то блок кода, контекстный формат, создаваемый командой `diff -c`, может оказаться более читаемым и поэтому более предпочтительным.

К примеру:

    % diff -c oldfile newfile

или

    % diff -c -r olddir newdir

будут создавать такой набор контекстных diff-файлов для данного файла с исходным текстом или целой иерархии каталогов.

Подобным же образом

    % diff -u oldfile newfile

или

    % diff -u -r olddir newdir

сделают то же самое, но в унифицированном diff-формате.

Дополнительную информацию можно найти на странице справки по команде diff(1).

После того, как вы получили набор diff-файлов (которые вы можете протестировать командой patch(1)), вы должны прислать их для включения во FreeBSD. Воспользуйтесь программой send-pr(1), как это описано в разделе о сообщениях об ошибках и общих замечаниях. Не посылайте diff-файлы в список рассылки Список рассылки FreeBSD, посвящённый техническим дискуссиям, они будут потеряны! Нам очень нужна ваша помощь (это добровольный проект!); из-за нашей занятости мы не сможем рассмотреть его сразу, и он будет находиться в базе данных PR, пока мы не сделаем это. Укажите на вашу посылку, включив строку `[PATCH]` в тему сообщения.

Если вы считаете, что это нужно (к примеру, вы добавляли, удаляли или переименовывали файлы), то объедините ваши изменения в `tar`-файл и обработайте его программой uuencode(1). Принимаются также и архивы, созданные программой shar(1).

Если ваше изменение потенциально может оказаться сомнительным (например, вы не уверены в отсутствии лицензионных ограничений относительно его распространения или просто не готовы выпустить его без тщательной проверки, то вы должны послать его напрямую в список рассылки FreeBSD Core, а не через send-pr(1). В списке рассылки FreeBSD Core участвует гораздо меньшее количество людей, которые выполняют основную ежедневную работу над FreeBSD. Заметьте, что эта группа также очень занята, так что сюда письма нужно посылать только в случае действительной необходимости.

Пожалуйста, обратитесь к справке по intro(9) и style(9) для получения некоторой информации о стиле кодирования. Мы надеемся, что вы хотя бы примете эту информацию к сведению перед тем, как прислать нам свой код.

### 2.4 Новый код или большие дополнительные пакеты

В случае значительного объёма присланного вами кода и соответствующей работы, либо добавления к FreeBSD важной новой функции, становится практически всегда необходимо посылать изменения в виде tar-файлов, обработанных uuencode, или передавать их на Web-сайт или FTP-сервер для получения другими людьми. Если у ас нет доступа к Web- или FTP-серверам, попросите в соответствующем списке рассылке FreeBSD кого-нибудь разместить изменения за вас.

При работе с большим объёмом кода неизбежно возникает вопрос о соблюдении авторских прав. Допустимыми лицензионными соглашениями для кода, включаемого во FreeBSD, являются следующие:

1. Лицензионное соглашение BSD. Оно является самым предпочтительным из-за ''отсутствия дополнительных условий'' и общей привлекательности для коммерческих компаний. Проект FreeBSD далёк от того, чтобы выступать против коммерческого использования, но активно популяризирует такое пересечение коммерческих интересов, которое позволит постепенно запустить механизм инвестиций во FreeBSD.

2. GNU General Public License, или ''GPL''. Это лицензионное соглашение не очень популярно у нас из-за объёма требований, которые нужно выполнять всем, кто собирается использовать код в коммерческих целях. Однако, учитывая абсолютное превосходство объёма этого кода (компилятор, ассемблер, инструменты форматирования текста и так далее) было бы глупо отказываться от дополнительных разработок, подпадающих под действие этой лицензии. Код, распространяемый по условиям лицензионного соглашения GPL также размещается в отдельной части дерева исходных текстов, в `/sys/gnu` или `/usr/src/gnu`, и поэтому легко идентифицируется всяким, для кого GPL представляет проблему.

Разработки, подпадающие под действие других типов лицензионных соглашений, должны быть тщательно просмотрены перед принятием решения об их включении во FreeBSD. Разработки, на которые распространяются жёсткие ограничения коммерческих лицензионных соглашений, обычно отвергаются, а авторам всегда предлагается распространять подобные изменения по собственным каналам.

Для того, чтобы на вашу работу распространялись условия лицензионного ограничения ''в стиле BSD'', разместите следующий текст в самом начале каждого файла с исходными текстами, которые вы хотите защитить, заменив текст между `%%` соответствующей информацией:

    Copyright (c) %%полные_номера_годов%%
    	%%ваше_имя%%, %%ваш_штат%%  %%ваш_почтовый_индекс%%.
    	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 as
       the first lines of this file unmodified.
    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 %%your_name_here%% ``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 %%your_name_here%% 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.

    	$Id$

Для вашего удобства копия этого текста размещена в файле `/usr/share/examples/etc/bsd-style-copyright`.

### 2.5 Деньги, оборудование или Internet-доступ

Мы всегда с удовольствием примем материальную помощь, нужную для дальнейшего существования Проекта FreeBSD, а в добровольном проекте, типа нашего маленькая помощь может послужить долго! Безвозмездная передача вычислительной техники также очень важна для расширения списка поддерживаемого периферийного оборудования, так как обычно у нас нет средств для самостоятельного его приобретения.

#### 2.5.1 Финансовая помощь

The FreeBSD Foundation является некоммерческой организацией, освобождённой от уплаты налогов, созданной с целью реализации целей Проекта FreeBSD. Как организация типа 501(c)3, Фонд обычно освобождается от федерального налога США на прибыль. Суммы безвозмездных пожертвований таким организациям часто вычитаются из общей суммы налогооблагаемой прибыли.

Финансовая помощь может быть направлена в виде чеков на адрес:

════The═FreeBSD═Foundation
════7321 Brockway Dr.
════Boulder,═CO═80303
════USA
══

The FreeBSD Foundation теперь может принимать помощь через Web по системе PayPal. Для направления помощи, пожалуйста, посетите Web-сайт Фонда.

Дополнительную информацию о Фонде FreeBSD можно найти на странице, содержащей вводную информации о Фонде FreeBSD. Для того, чтобы обратиться в Фонд по электронной почте, напишите письмо на адрес `<bod@FreeBSDFoundation.org>`.

#### 2.5.2 Помощь в виде оборудования

Проект FreeBSD с удовольствие примет помощь в виде оборудования, которому он найдёт хорошее применение. Если вы заинтересованы в передаче оборудования, пожалуйста, обратитесь к Руководству Центра пожертвований.

#### 2.5.3 Помощь в виде доступа в Internet

Мы всегда воспользуемся новым зеркалирующим сервером для FTP, WWW или `cvsup`. Если вы захотите выступить в роли такого зеркала, пожалуйста, обратитесь к статье о зеркалировании FreeBSD для получения более полной информации.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.