1281 lines
53 KiB
Text
1281 lines
53 KiB
Text
<!--
|
||
The FreeBSD Russian Documentation Project
|
||
|
||
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/problem-reports/article.sgml,v 1.20 2006/04/05 04:28:40 gad Exp $
|
||
|
||
Original revision: 1.61
|
||
-->
|
||
|
||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN">
|
||
%articles.ent;
|
||
]>
|
||
|
||
<article lang="ru">
|
||
<articleinfo>
|
||
<title>Составление сообщений о проблеме во &os;</title>
|
||
|
||
<pubdate>$FreeBSD$</pubdate>
|
||
|
||
<legalnotice id="trademarks" role="trademarks">
|
||
&tm-attrib.freebsd;
|
||
&tm-attrib.cvsup;
|
||
&tm-attrib.ibm;
|
||
&tm-attrib.intel;
|
||
&tm-attrib.sparc;
|
||
&tm-attrib.sun;
|
||
&tm-attrib.general;
|
||
</legalnotice>
|
||
|
||
<abstract>
|
||
<para>Эта статья описывает, как наилучшим образом сформулировать и
|
||
отправить сообщение о проблеме в Проект &os;.</para>
|
||
</abstract>
|
||
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Dag-Erling</firstname>
|
||
<surname>Smørgrav</surname>
|
||
<contrib>Текст предоставил </contrib>
|
||
</author>
|
||
|
||
<author>
|
||
<firstname>Mark</firstname>
|
||
<surname>Linimon</surname>
|
||
</author>
|
||
</authorgroup>
|
||
</articleinfo>
|
||
|
||
<indexterm><primary>сообщения о проблемах</primary></indexterm>
|
||
|
||
<section id="pr-intro">
|
||
<title>Введение</title>
|
||
|
||
<para>Одной из самых разочаровывающих практик, которую можно получить в
|
||
качестве пользователя программного обеспечения, является отправка
|
||
сообщения о проблеме, которое вскоре закрывается с кратким и ничему не
|
||
помогающим объяснением типа <quote>это не проблема</quote> или
|
||
<quote>неправильное PR</quote>. Подобным же образом одной из самых
|
||
разочаровывающих практик, которую можно получить в качестве разработчика
|
||
программного обеспечения, является получение массы сообщений о проблемах,
|
||
которые на самом деле не являются сообщениями о проблемах, а запросами на
|
||
получение поддержки, или которые содержат мало или вообще не содержат
|
||
никакой информации о сути проблемы или способе ее воспроизведения.</para>
|
||
|
||
<para>В этом документе делается попытка описать то, как составлять хорошие
|
||
сообщения о проблемах. Что же, спросите вы, является хорошим сообщением
|
||
о проблеме? Ну, если перейти прямо к сути, то хорошим сообщением об
|
||
проблеме является то, которое может быть быстро проанализировано и
|
||
отработано, к обоюдному удовлетворению как пользователя, так и
|
||
разработчика.</para>
|
||
|
||
<para>Хотя в основном статья фокусируется на сообщениях о проблемах во
|
||
&os;, большей частью она должна хорошо подходить и другим программным
|
||
проектам.</para>
|
||
|
||
<para>Заметьте, что эта статья организована по тематическому принципу, а
|
||
не хронологически, так что вы должны прочесть документ целиком прежде,
|
||
чем посылать сообщение о проблеме, и не воспринимать статью как пошаговое
|
||
руководство.</para>
|
||
</section>
|
||
|
||
<section id="pr-when">
|
||
<title>Когда нужно отправлять сообщение о проблеме</title>
|
||
|
||
<para>Имеется много классов ошибок, и не все они должны приводить к
|
||
появлению сообщения о проблеме. Конечно же, нет идеальных людей, и
|
||
будут моменты, когда вы решите, что нашли ошибку в программе, а на самом
|
||
деле вы неправильно поняли синтаксис команды или сделали опечатку в
|
||
конфигурационном файле (хотя само по себе это иногда говорит о плохой
|
||
документации или неправильной обработке ошибок в прикладной программе).
|
||
Есть еще много случаев, когда посылка сообщения о проблеме явно
|
||
<emphasis>не</emphasis> является правильным действием, а только
|
||
приводит к разочарованию вас и разработчиков. И наоборот, есть случаи,
|
||
когда может быть нужно послать сообщение о чем-то, не являющемся
|
||
ошибкой—к примеру, запрос на доработку или расширение
|
||
функциональности.</para>
|
||
|
||
<para>Но как же определить, что является ошибкой, а что нет? Простым
|
||
правилом, которому нужно следовать, является следующее – ваша
|
||
проблема <emphasis>не</emphasis> является ошибкой, если она формулируется
|
||
как вопрос (обычно в форме <quote>Как сделать X?</quote> или <quote>Где
|
||
можно найти Y?</quote>). Не всегда это так однозначно, но правило
|
||
вопроса покрывает большинство случаев. Если Вам нужен ответ, лучше всего
|
||
задать свой вопрос в &a.questions;.</para>
|
||
|
||
<para>Вот некоторые случаи, в которых может оказаться полезным отправить
|
||
сообщение о чем-то, что не является ошибкой:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Запросы на расширение функциональности. Обычно хорошей идеей
|
||
является озвучивание этого в списках рассылки до того, как посылать
|
||
сообщение о проблеме.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Уведомление об обновлении программного обеспечения, которое
|
||
поддерживается сторонними разработчиками (в основном порты, но также
|
||
и компоненты базовой системы, разрабатываемые сторонними
|
||
организациями, такие, как BIND или различные утилиты GNU).</para>
|
||
|
||
<para>Для не поддерживаемых никем портов (переменная
|
||
<makevar>MAINTAINER</makevar>
|
||
содержит <literal>ports@FreeBSD.org</literal>), такие уведомления о
|
||
обновлении будут замечены заинтересовавшимся коммиттером и вас могут
|
||
попросить предоставить патч для обновления порта; предоставление
|
||
патча до того, как вас попросят об этом сильно увеличит шансы того,
|
||
что порт будет обновлён вовремя.</para>
|
||
|
||
<para>Если порт поддерживается, PR-ы, указывающие о появлении новых
|
||
улучшенных (upstream) релизов обычно не очень полезны, так как они
|
||
прибавляют много вспомогательной работы для коммиттеров, а мэйнтейнер
|
||
наверняка уже знает о новой версии. Они уже наверняка работали с
|
||
разработчиками над ней или они возможно тестируют её, чтобы убедиться
|
||
в отсутствии регрессии и т.п.</para>
|
||
|
||
<para>В любом случае, следование процессу, описанному в <ulink
|
||
url="&url.books.porters-handbook;/port-upgrading.html">Руководстве по
|
||
созданию портов</ulink> даст наилучшие результаты.
|
||
(Также можно ознакомиться с статьей <ulink
|
||
url="&url.articles.contributing-ports;/article.html">
|
||
Контрибуция в коллекцию портов FreeBSD</ulink>.)</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Ошибка, которую нельзя воспроизвести, вряд ли будет
|
||
исправлена. Если ошибка возникла только единожды, и вы не можете ее
|
||
воспроизвести, к тому же никто с ней больше не сталкивался, нет никаких
|
||
шансов, что разработчики смогут ее воспроизвести или понять, что делается
|
||
неправильно. Это не значит, что такого не случается, но это значит, что
|
||
шансов у вашего сообщения дойти когда-либо до стадии исправления ошибки
|
||
очень малы. Часто эти виды ошибок возникают из-за неудовлетворительной
|
||
работы жёстких дисков, перегревшихся процессоров. Всегда, когда это
|
||
возможно вы должны отслеживать такие случаи перед посылкой сообщения об
|
||
ошибке.</para>
|
||
|
||
<para>Теперь, чтобы определить кому вы должны отправить ваше сообщение об
|
||
ошибке, вы должны понимать, что программное обеспечение, которое входит
|
||
во &os;, составляется из нескольких различных частей:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Код в базовой системе, который пишется и поддерживается
|
||
контрибьюторами &os;. Такой, как ядро, библиотека C,
|
||
драйвера устройств (входят в категорию <literal>kern</literal>);
|
||
утилиты (<literal>bin</literal>); страницы справочника и
|
||
документация (<literal>docs</literal>); веб-страницы
|
||
(<literal>www</literal>). Все ошибки в этих областях
|
||
должны быть сообщены разработчикам &os;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Код в базовой системе, который пишется и поддерживается
|
||
другим, импортируется во &os; и адаптируется. Примеры
|
||
включают в себя: <application>bind</application>, &man.gcc.1; и
|
||
&man.sendmail.8;. Большинство ошибок, попадающие в данные
|
||
области должны быть сообщены разработчикам &os;, но в
|
||
некоторых случаях они должны быть отправлены изначальным
|
||
разработчикам, если проблемы не являются специфичными
|
||
для &os;. Обычно ошибки такого рода попадают под
|
||
категории <literal>bin</literal> или <literal>gnu</literal>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Отдельные приложения, не входящие в базовую систему,
|
||
но являющиеся частью Коллекции Портов &os; (категория
|
||
<literal>ports</literal>). Большинство этих приложений
|
||
не пишется разработчиками &os;; что предоставляет &os;,
|
||
так это только лишь инфраструктуру для установки приложения.
|
||
Следовательно, вы должны отправлять сообщение об ошибке
|
||
разработчикам &os; только тогда, когда вы уверены в том, что
|
||
проблема специфична для &os; - иначе отправляйте её авторам
|
||
программного обеспечения.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Затем вы должны убедиться, действительно ли проблема существует.
|
||
Существует всего несколько вещей, которые раздражают разработчика больше,
|
||
чем получение сообщения об ошибке, которую он уже исправил.</para>
|
||
|
||
<para>Если проблема в базовой системе, то вам нужно сначала прочесть
|
||
раздел <ulink
|
||
url="&url.books.faq;/introduction.html#LATEST-VERSION">версии
|
||
&os;</ulink> из FAQ, если вы ещё не знакомы с данной темой. Для &os;
|
||
возможно исправлять проблемы только для некоторых недавних веток базовой
|
||
системы, поэтому отправка сообщения об ошибке для более старой версии
|
||
приведёт к тому, что разработчик посоветует вам обновиться до
|
||
поддерживаемой версии, чтобы посмотреть присутствует ли в ней
|
||
проблема. Команда офицеров безопасности поддерживает <ulink
|
||
url="&url.base;/security/">список поддерживаемых
|
||
версий.</ulink>.</para>
|
||
|
||
<para>Если проблема связана с портами, помните, что вы сначала
|
||
должны обновиться до самой последней версии Коллекции Портов
|
||
и проверить, существует ли в ней проблема. Из-за быстрых
|
||
внесений изменений в эти приложения, неосуществимым для &os;
|
||
является поддержка чего-либо, кроме самых последних версий, и
|
||
проблемы со устаревшими версиями приложений просто не могут
|
||
быть исправлены.</para>
|
||
</section>
|
||
|
||
<section id="pr-prep">
|
||
<title>Подготовка</title>
|
||
|
||
<para>Нужно следовать хорошему правилу всегда сначала выполнять
|
||
дополнительные исследования перед тем, как послать сообщение о проблеме.
|
||
Может быть, о вашей проблеме уже сообщено; может быть, она недавно
|
||
обсуждалась или обсуждается в списках рассылки; она может быть уже
|
||
исправлена в более новой версии, чем та, что вы используете. Поэтому вы
|
||
должны проверить все обычные места до того, как послать ваше сообщение о
|
||
проблеме. Для &os; это значит:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>&os;
|
||
<ulink url="&url.books.faq;/index.html">FAQ</ulink>
|
||
(Ответы на часто задаваемые вопросы).
|
||
FAQ содержит ответы на вопросы из самых разных категорий,
|
||
в частности,
|
||
<ulink url="&url.books.faq;/hardware.html">аппаратной
|
||
совместимости</ulink>,
|
||
<ulink url="&url.books.faq;/applications.html">пользовательских
|
||
программ</ulink>
|
||
и <ulink url="&url.books.faq;/kernelconfig.html">конфигурации
|
||
ядра</ulink>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink
|
||
url="&url.books.handbook;/handbook/eresources.html#ERESOURCES-MAIL">Списки
|
||
рассылки</ulink>—если Вы не подписаны на них, воспользуйтесь
|
||
<ulink
|
||
url="http://www.FreeBSD.org/search/search.html#mailinglists">поиском
|
||
в архивах</ulink> на сайте &os;. Если ваша проблема не
|
||
обсуждалась в списках рассылки, вы можете попытаться опубликовать
|
||
сообщение о ней и подождать несколько дней, пока кто-нибудь не сможет
|
||
увидеть то, что вы не заметили.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Как вариант, весь веб—используйте вашу любимую поисковую
|
||
систему для поиска каких-либо ссылок по вашей проблеме. Вы можете
|
||
даже увидеть ссылки на архивы списков рассылки или телеконференций, о
|
||
которых вы не знали или не думали там искать.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Следующим пунктом должна быть
|
||
<ulink url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">
|
||
база данных PR &os;</ulink> (GNATS). Если только ваша проблема не
|
||
нова или редка, есть некоторый шанс, что о ней уже сообщено.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>И самое важное, вы должны посмотреть не затрагивает ли
|
||
документация в базовой системе вашу проблему.</para>
|
||
|
||
<para>Для основного кода &os; вы должны тщательно изучить содержимое
|
||
файла <filename>/usr/src/UPDATING</filename> или его текущую версию
|
||
по адресу <ulink
|
||
url="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/UPDATING"></ulink>.
|
||
(Если вы переходите с одной версии на другую, особенно если вы
|
||
обновляетесь до &os.current;, то в этом файле вы можете найти много
|
||
важной информации).</para>
|
||
|
||
<para>Если же ваша проблема связана с коллекцией портов &os;, вы должны
|
||
обратиться к файлу <filename>/usr/ports/UPDATING</filename>
|
||
(изменения, касающиеся индивидуальных портов) или к
|
||
<filename>/usr/ports/CHANGES</filename> (изменения, касающиеся всей
|
||
коллекции портов). Они также доступны через интерфейс CVSweb: <ulink
|
||
url="http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/UPDATING"></ulink> и
|
||
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/ports/CHANGES"></ulink>.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</section>
|
||
|
||
<section id="pr-writing">
|
||
<title>Написание сообщения о проблеме</title>
|
||
|
||
<para>Теперь, после того, как вы решили, что ваш вопрос подпадает под
|
||
категорию сообщения о проблеме, и это проблема &os;, самое время
|
||
написать собственно сообщение о проблеме (PR). Прежде чем мы углубимся
|
||
в частности использования программы для создания и отправки PR, вот
|
||
несколько советов, которые помогут вам сделать PR более
|
||
эффективным.</para>
|
||
|
||
<section>
|
||
<title>Как писать хорошие сообщения о проблемах</title>
|
||
|
||
<itemizedlist>
|
||
<!-- marck: RU-specific -->
|
||
<listitem>
|
||
<para>Основным языком общения разработчиков FreeBSD является
|
||
английский. База данных по проблемам также ведется на английском.
|
||
Если вы испытываете проблемы с формулировкой описания проблемы
|
||
по-английски, свяжитесь со своими соотечественниками, которые
|
||
помогут вам составить PR.</para> <!-- XXX URLs!!? -->
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Не оставляйте поле <quote>Synopsis</quote>
|
||
(краткое описание) пустым.</emphasis> Сообщения о проблемах
|
||
попадают как в списки рассылки, которые затем расходятся по всему
|
||
миру (в них поле <quote>Synopsis</quote> определяет тему письма),
|
||
так и в базу данных. Просматривающий эту базу, как правило,
|
||
пройдет мимо PR с пустым кратким описанием. Не забудьте, что PR
|
||
остается в базе до тех пор, пока кто-либо не закроет его;
|
||
сообщение-аноним, скорее всего, просто потеряется на общем
|
||
фоне.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Избегайте туманных описаний в поле
|
||
<quote>Synopsis</quote></emphasis>. Не стоит предполагать, что
|
||
читающий ваше сообщение владеет контекстом; поэтому, чем подробнее
|
||
вы опишете ситуацию, тем лучше. В частности, к какой части системы
|
||
относится ваша проблема? Проявляется ли она на этапе установки или
|
||
во время нормальной работы? Например, вместо строки
|
||
<literal>Synopsis: portupgrade is broken</literal> следовало бы
|
||
написать что-то вроде <literal>Synopsis: port ports-mgmt/portupgrade
|
||
coredumps on -current</literal>. В случае портированных приложений
|
||
в поле <quote>Synopsis</quote> полезно указывать не только имя
|
||
порта, но и категорию.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Если у вас есть готовый патч, скажите об
|
||
этом.</emphasis> PR, содержащий патч, имеет куда больше шансов
|
||
быть рассмотренным. В этом случае добавьте строку
|
||
<literal>[patch]</literal> (включая квадратные скобки) в начало
|
||
поля <quote>Synopsis</quote> (хотя использование именно этой формы
|
||
необязательно, она является стандартом де-факто).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Если вы отвечаете за исходные тексты, сообщите об
|
||
этом.</emphasis> Если вы отвечаете за часть исходных текстов
|
||
(например, порт), вы можете добавить в начало поля
|
||
<quote>Synopsis</quote> строку
|
||
<literal>[maintainer update]</literal> (включая квадратные скобки),
|
||
а также установить класс вашего PR (поле <quote>Class</quote>) в
|
||
<literal>maintainer-update</literal>. В этом случае коммиттеру,
|
||
обрабатывающему ваш PR, не придётся лишний раз проверять.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Будьте точны в формулировках.</emphasis> Чем больше
|
||
информации вы можете предоставить о проблеме, тем больше у вас
|
||
шансов получить ответ.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Включите информацию о версии &os;, которую вы используйте
|
||
(существует специальное поле для его включения, смотрите ниже)
|
||
и на какой архитектуре. Сообщите, используете ли вы release
|
||
версию (установили с компакт-диска либо загрузили) или скачали
|
||
её с помощью &man.cvsup.1; (если так, то как давно вы
|
||
обновлялись). Если вы используйте &os.current;, то первый
|
||
вопрос, который вам могут задать, будет про дату последнего
|
||
обновления, так как исправления для этой ветки имеют тенденцию
|
||
(особенно для серьёзных проблем) появляться слишком
|
||
быстро.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Включите информацию о том, какие глобальные опции вы указали
|
||
в <filename>make.conf</filename>. На заметку: Объявление
|
||
опций наподобие <literal>-02</literal> и других, описанных в
|
||
&man.gcc.1; во многих случаях может быть причиной ошибок. Хотя
|
||
и разработчики &os; будут принимать патчи, у них не будет
|
||
желания исследовать такие случаи из-за отсутствия времени и
|
||
добровольцев, и вместо этого они могут ответить, что это не
|
||
поддерживается.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если проблему можно легко повторить, включите
|
||
необходимую информацию, чтобы разработчик смог воспроизвести
|
||
ее самостоятельно. Если проблема проявляется при некоторых
|
||
вводимых данных, то, по возможности, приведите их вместе
|
||
с получаемым и ожидаемым выводом. Если же вводимых данных
|
||
много или же их нельзя разглашать, то попробуйте выделить
|
||
из них лишь небольшой фрагмент, приводящий к возникновению
|
||
проблемы, и включите его в PR.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если ваша проблема связана с ядром, будьте готовы
|
||
предоставить следующую информацию (вам не обязательно включать
|
||
её всю, она пойдёт лишь на заполнение базы данных, но вы должны
|
||
включить информацию, которая по вашему мнению актуальна):</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Вашу конфигурацию ядра, включая то, какие устройства
|
||
у вас установлены</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Включены ли у вас опции отладки (например,
|
||
<literal>WITNESS</literal>), и если так, то существует ли
|
||
проблема после изменения значения этой опции</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Полный вывод обратной трассировки (backtrace),
|
||
паники или иного консольного вывода, или же записи из
|
||
<filename>/var/log/messages</filename>, если они были
|
||
сгенерированы</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Вывод команды <command>pciconf -l</command>, а также
|
||
соответствующие части вывода <command>dmesg</command>,
|
||
в случае, если проблема связана с конкретным
|
||
оборудованием</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Прочли ли вы <filename>src/UPDATING</filename>,
|
||
описана ли там ваша проблема (кто-нибудь спросит
|
||
обязательно)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Запускается ли другое ядро (это для тех случаев,
|
||
когда причиной сбоя стало оборудование, например
|
||
отказывающие винчестеры или перегревшиеся процессоры,
|
||
что может маскировать проблемы ядра)</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если же ваша проблема связана с портами, то предоставьте
|
||
следующую информацию (вам не обязательно включать её всю,
|
||
она пойдет лишь на заполнение базы данных, но вы должны
|
||
включить информацию, которая по вашему мнению актуальна):</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Какие порты вы устанавливали</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Имеются ли какие-либо переменные окружения,
|
||
которые переписывают первоначально-установленные
|
||
в <filename>bsd.port.mk</filename>, такие как,
|
||
<makevar>PORTSDIR</makevar>)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Прочли ли вы <filename>ports/UPDATING</filename>, и
|
||
описана ли там ваша проблема (кто-нибудь спросит
|
||
обязательно)</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Избегайте нечетких запросов о новых
|
||
возможностях.</emphasis> Сообщение типа <quote>кто-то обязательно
|
||
должен сделать так, чтобы такая-то утилита вела себя так-то</quote>
|
||
имеет куда меньше шансов встретить позитивный отклик, чем более
|
||
четко сформулированный запрос. Помните, что исходные тексты
|
||
доступны всем, так что если вам нужна реализация какого-то нового
|
||
свойства, лучший способ— взяться за работу самому! Не
|
||
забудьте также, что такие моменты лучше обсуждать в списках
|
||
рассылки, таких как <literal>freebsd-questions</literal>, чем
|
||
делать это посредством базы данных PR.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Убедитесь, что ваша проблема еще никем не описана.
|
||
</emphasis> Мы уже говорили об этом, но стоит повториться.
|
||
Потратьте пару минут на составление запросов к базе PR:
|
||
<ulink url="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query"></ulink>.
|
||
(Несмотря на повторы, об этом постоянно забывают)</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Сообщайте об одной проблеме в одном PR.</emphasis>
|
||
Избегайте описания двух и более проблем в одном сообщении
|
||
(исключением являются взаимосвязанные проблемы). Оформляя патчи,
|
||
не пытайтесь в них добавлять множество функциональных возможностей
|
||
или исправлять ими несколько ошибок в одном и том же сообщении
|
||
о проблеме (опять же, за исключением взаимосвязанных проблем)
|
||
— для таких PR-ов потребуется значительно больше времени
|
||
на обработку.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Избегайте полемики.</emphasis>
|
||
Если ваше сообщение касается области или способов реализации,
|
||
которые ранее вызвали разногласия, вам стоит быть готовым
|
||
предоставить не только патчи, но и внятные аргументы, почему
|
||
следует поступать именно так (то есть, это <quote>Правильный
|
||
Путь</quote>). Как отмечалось выше, аккуратный поиск по архиву
|
||
списков рассылки
|
||
<ulink url="http://www.FreeBSD.org/search/search.html#mailinglists"></ulink>
|
||
никогда не помешает.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Будьте вежливы.</emphasis>
|
||
Почти каждый из тех, кто может заниматься вашим сообщением,
|
||
является добровольцем. Никому не понравятся указания, как и что
|
||
делать, когда он и так занимается этим, да еще и по каким-либо
|
||
причинам, отличным от финансовых. Вообще говоря, этого подхода
|
||
следует придерживаться, имея дело с любым проектом с Открытыми
|
||
Исходными текстами (Open Source).</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Прежде всего</title>
|
||
|
||
<para>Если вы используйте утилиту &man.send-pr.1; проверьте, что
|
||
переменная вашего окружения <envar>VISUAL</envar> (или
|
||
<envar>EDITOR</envar>, если <envar>VISUAL</envar> не задана) задана
|
||
подходящим образом.</para>
|
||
|
||
<para>Следует также проверить работоспособность системы электронной
|
||
почты. Утилита &man.send-pr.1; использует почтовую систему для
|
||
отправки и отслеживания сообщения о проблеме. Если с машины, на
|
||
которой вы запускаете &man.send-pr.1;, нельзя отправить почту,
|
||
сообщение не попадёт в базу данных GNATS. О настройке электронной
|
||
почты во &os; можно прочитать в главе <quote>Электронная
|
||
почта</quote> Руководства по &os; по адресу <ulink
|
||
url="http://www.FreeBSD.org/doc/ru_RU.KOI8-R/books/handbook/mail.html"></ulink>.</para>
|
||
|
||
<para>Убедитесь, что ваш почтовый клиент не исказит сообщение по
|
||
пути в GNATS. В частности, если ваш почтовый клиент автоматически
|
||
переносит строки, изменяет символы табуляции на пробелы или
|
||
предотвращает интерпретацию символов новой строки, любой патч,
|
||
который вы пришлёте окажется непригодным. Для текста мы хотели
|
||
бы, чтобы вы делали строчки размером примерно в 70 символов
|
||
для читабельности PR на веб странице.</para>
|
||
|
||
<para>Примерные соображения должны учитываться при отправке
|
||
сообщения об ошибке через <ulink
|
||
url="&url.base;/send-pr.html">веб-форму</ulink> вместо
|
||
&man.send-pr.1;. Помните, что операции копирования-вставки могут
|
||
иметь сторонние эффекты в форматировании текста. В определённых
|
||
случаях может быть необходимо использовать &man.uuencode.1;
|
||
для гарантии того, что патчи придут не изменёнными.</para>
|
||
|
||
<para>И наконец, если ваше сообщение будет объёмным, вы должны
|
||
приготовить его в offline, чтобы ничего не потерялось в случае,
|
||
если будет проблема при его отправке. Это особенно касается <ulink
|
||
url="&url.base;/send-pr.html">веб-формы</ulink>.</para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Вложение патчей или файлов</title>
|
||
|
||
<para>Нижеследующее применимо к передаче сообщения о проблеме
|
||
посредством электронной почты:</para>
|
||
|
||
<para>Программа &man.send-pr.1; предусматривает присоединение файлов к
|
||
сообщению о проблеме. Вы можете вложить сколько угодно файлов, но
|
||
каждый с уникальным именем (имеется в виду имя файла без маршрута).
|
||
Просто используйте параметр командной строки <option>-a</option> для
|
||
задания имен файлов, которые вы хотите присоединить:</para>
|
||
|
||
<screen>&prompt.user; <userinput>send-pr -a /var/run/dmesg -a /tmp/errors</userinput></screen>
|
||
|
||
<para>Не беспокойтесь о бинарных файлах, они будут автоматически
|
||
перекодированы для того, чтобы не повредить работе вашей почтовой
|
||
программы.</para>
|
||
|
||
<para>Если вы вкладываете патч, обязательно используйте параметр
|
||
<option>-c</option> или <option>-u</option> вместе с командой
|
||
&man.diff.1; для создания контекстного или унифицированного diff-файла
|
||
(унифицированный формат предпочтителен),
|
||
и обязательно укажите точные номера версий CVS файлов, которые вы
|
||
изменяли, чтобы разработчики, которые будут читать ваше сообщение,
|
||
смогли легко его применить. Для проблем, связанных с ядром или с
|
||
базовыми утилитами предпочтительнее будет патч относительно ветки
|
||
&os.current; (или HEAD CVS), т.к. весь новый код должен быть сначала
|
||
протестирован в ней. После завершения тестирования код будет
|
||
интегрирован в ветвь &os.stable;.</para>
|
||
|
||
<para>Если вы вставляете патч в тело сообщения, учтите, что некоторые
|
||
почтовые программы имеют тенденцию заменять табуляции серией пробелов,
|
||
что полностью разрушит, например, часть файла сборки (Makefile).</para>
|
||
|
||
<para>Не отсылайте патчи в виде вложений, используя
|
||
<command>Content-Transfer-Encoding: quoted-printable</command>.
|
||
Это выполнит экранирование (escaping) символов и весь патч
|
||
будет бесполезным.</para>
|
||
|
||
<para>Следует также заметить, что включение небольших патчей в сообщение
|
||
о проблеме является приемлемой практикой, в особенности если они решают
|
||
проблему, описанную в сообщении, большие же патчи, а в особенности
|
||
новый код, который может требовать значительного просмотра перед тем,
|
||
как он будет внесен в дерево исходных текстов, должны быть размещены на
|
||
web- или ftp-сервере, а в сообщение о проблеме должен быть включён
|
||
только URL указывающий на этот патч. Очень часто патчи, пересылаемые
|
||
по электронной почте, а в особенности если задействована GNATS, бывают
|
||
искажены, и, как следствие, чем больше патч, тем труднее будет для
|
||
заинтересованных людей привести его к нормальному виду. Также то, что
|
||
патч будет размещён отдельно от сообщения о проблеме, даёт возможность
|
||
изменять его не отсылая полный патч в дополнение к изначальному
|
||
сообщению о проблеме. И наконец, большие патчи просто увеличивают
|
||
размер базы данных, так как закрытые сообщения об ошибках на самом
|
||
деле не удаляются, а сохраняются и помечаются, как
|
||
<literal>closed</literal>.</para>
|
||
|
||
<para>Вы должны также помнить, что пока вы явно не укажете обратного в
|
||
вашем сообщении о проблеме или в самих патчах, будет предполагаться,
|
||
что они подпадают под те же условия лицензирования, что и оригинальный
|
||
файл, измененный вами.</para>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Заполнение шаблона</title>
|
||
|
||
<para>Следующие несколько абзацев применимы только к способу подачи
|
||
PR через электронную почту:</para>
|
||
|
||
<para>После запуска утилиты &man.send-pr.1; вам будет представлен шаблон
|
||
сообщения о проблеме. Шаблон состоит из списка полей, некоторые из
|
||
которых уже заполнены, а некоторые содержат комментарии, объясняющие
|
||
назначение поля или перечисляющие подходящие значения. Не беспокойтесь
|
||
о комментариях; они будут автоматически удалены, если вы их не изменяли
|
||
(или удалите их сами).</para>
|
||
|
||
<para>Вверху шаблона, ниже строк <literal>SEND-PR:</literal> находятся
|
||
заголовки почтового сообщения. Вам обычно не нужно их изменять, если
|
||
только вы не посылаете сообщение о проблеме с машины или от учетной
|
||
записи, которая может посылать, но не может получать электронную почту,
|
||
в случае чего вы можете задать в полях <literal>From:</literal> и
|
||
<literal>Reply-To:</literal> ваши реальные адреса электронной почты.
|
||
Вы можете также послать самому себе (или кому-то еще) копию сообщения
|
||
о проблеме, добавив один или большее количество адресов к заголовку
|
||
<literal>Cc:</literal>.</para>
|
||
|
||
<para>В шаблоне вы найдете два однострочных поля:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><emphasis>Submitter-Id:</emphasis> Не меняйте его. Значение
|
||
по умолчанию <literal>current-users</literal> правильно, даже если
|
||
вы используете &os.stable;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Confidential:</emphasis> Предварительно заполнено как
|
||
<literal>no</literal>, его изменение не имеет значения, так как нет
|
||
такого понятия, как конфиденциальное сообщение о
|
||
проблеме—база данных PR распространяется по всему миру
|
||
посредством <application>CVSup</application>.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Далее описаны общие поля для почтового и <ulink
|
||
url="&url.base;/send-pr.html">веб интерфейса</ulink>:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><emphasis>Originator:</emphasis> Пожалуйста,
|
||
укажите ваше реальное имя, за которым опционально следует
|
||
адрес вашей электронной почты в угловых скобках.
|
||
Обычно, &man.send-pr.1; заполняет поле Originator содержимым
|
||
поля <literal>gecos</literal> из учетной записи текущего
|
||
пользователя.</para>
|
||
|
||
<note>
|
||
<para>Предоставленный вами адрес электронной почты станет публичной
|
||
информацией и может стать доступным спамерам. Поэтому совсем
|
||
не лишними будут меры по борьбе со спамом на вашей стороне, или
|
||
же можно воспользоваться временным адресом электронной почты.
|
||
Однако, если вы укажете несуществующий почтовый адрес, то у нас
|
||
не будет возможности уточнять детали по вашему PR.</para>
|
||
</note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Organization:</emphasis> Все, что вы захотите здесь
|
||
указать. Это поле не содержит значительной информации.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Synopsis:</emphasis> Заполняется кратким и точным
|
||
описанием проблемы. Краткое описание используется в качестве темы
|
||
сообщения электронной почты о проблеме, и используется при выдаче
|
||
списков и выборках сообщений о проблемах; сообщения о проблемах с
|
||
непонятными краткими описаниями чаще всего игнорируются.</para>
|
||
|
||
<para>Повторим: если к вашему сообщению о проблеме приложен патч,
|
||
то, пожалуйста, начните краткое описание с
|
||
<literal>[patch]</literal> (включая квадратные скобки); если PR
|
||
принадлежит к категории ports и вы являетесь его мейнтейнером,
|
||
то начните описание с <literal>[maintainer update]</literal>
|
||
(включая квадратные скобки) и установите класс проблемы
|
||
(поле <quote>Class</quote>) в
|
||
<literal>maintainer-update</literal>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Severity:</emphasis> Одно из
|
||
<literal>non-critical</literal>,
|
||
<literal>serious</literal> или <literal>critical</literal>. Не
|
||
переусердствуйте; избегайте пометки вашей проблемы как
|
||
<literal>critical</literal>, если только это не действительно
|
||
критичная проблема (повреждение данных, существенная потеря
|
||
функциональности в -CURRENT),
|
||
или <literal>serious</literal>, если только это не касается многих
|
||
пользователей (паники ядра, блокировки (freezes), проблемы с
|
||
конкретными драйверами устройств или с
|
||
системными утилитами). Разработчики &os; не обязательно будут
|
||
работать над вашей проблемой быстрее, если вы установите слишком
|
||
высокий уровень важности, т.к. существует много других людей,
|
||
которые сделали тоже самое — некоторые разработчики всё же
|
||
уделят этому полю немного внимания и перейдут к следующему
|
||
сообщению именно из-за этого поля.</para>
|
||
|
||
<note>
|
||
<para>Большинство проблем с безопасностью <emphasis>не</emphasis>
|
||
следует отправлять в GNATS, потому что вся эта информация
|
||
становится публичной. Пожалуйста, направляйте подобные отчеты
|
||
на электронный адрес &a.security-officer;.</para>
|
||
</note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Priority:</emphasis> Одно из
|
||
<literal>low</literal>, <literal>medium</literal> или
|
||
<literal>high</literal>. <literal>high</literal> должен
|
||
использоваться для проблем, которые затронут конкретно
|
||
каждого пользователя &os;, а <literal>medium</literal> для чего-то,
|
||
что затронет многих пользователей.</para>
|
||
|
||
<note>
|
||
<para>Ввиду массовых злоупотреблений это поле потеряло свое
|
||
значение.</para>
|
||
</note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Category:</emphasis> Выберите соответствующую
|
||
категорию.</para>
|
||
|
||
<para>Первым делом необходимо решить, к какой части системы
|
||
относится ваша проблема. Помните: &os; — завершенная
|
||
операционная система, которая устанавливает ядро, стандартные
|
||
библиотеки, множество драйверов периферийного оборудования,
|
||
а также — большой набор системных утилит (<quote>базовая
|
||
система</quote>). В дополнение к этому, в коллекции портов
|
||
имеются тысячи приложений. Следовательно, определитесь:
|
||
обнаруженная вами проблема находится в базовой системе или
|
||
в чем-то, установленным через коллекцию портов.</para>
|
||
|
||
<para>Вот описание основных категорий:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Если проблема в ядре, в библиотеках (таких как стандартная
|
||
библиотека С <literal>libc</literal>) или в драйвере
|
||
из базовой системы, то используйте категорию
|
||
<literal>kern</literal>. (Есть несколько исключений,
|
||
описанных ниже). В общем, это всё, что описано в разделах
|
||
2, 3 или 4 справочника.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если проблема с бинарной программой, например
|
||
с &man.sh.1; или &man.mount.8;, то вам прежде всего необходимо
|
||
определить принадлежность программы к базовой системе
|
||
или к установке из коллекции портов. Если вы не уверены,
|
||
выполните команду <command>whereis <replaceable>имя
|
||
программы</replaceable></command>. В &os; для коллекции портов
|
||
существует договоренность: установка ведется в <filename
|
||
class="directory">/usr/local</filename>, однако это может быть
|
||
переопределено системным администратором. Для таких программ
|
||
следует использовать категорию <literal>ports</literal> (даже
|
||
если категория порта <literal>www</literal>; см. ниже).
|
||
Если программа располагается в
|
||
<filename class="directory">/bin</filename>,
|
||
<filename class="directory">/usr/bin</filename>,
|
||
<filename class="directory">/sbin</filename> или в
|
||
<filename class="directory">/usr/sbin</filename>,
|
||
то это часть базовой системы, и вам следует использовать
|
||
категорию <literal>bin</literal>. (Несколько программ,
|
||
например &man.gcc.1;, на самом деле используют категорию
|
||
<literal>gnu</literal>, но не беспокойтесь об этом сейчас.)
|
||
Программы этой категории описаны в разделах 1 и 8
|
||
справочной системы.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если вы уверены, что в стартовых скриптах
|
||
<literal>(rc)</literal> или в каком-то ином неисполняемом
|
||
конфигурационном файле присутствует ошибка, тогда верной
|
||
категорией будет <literal>conf</literal> (configuration).
|
||
Эти сущности описываются в разделе 5 справочной системы.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если вы нашли проблему в наборе документации (статьи,
|
||
книги, страницы справочной системы), правильным выбором будет
|
||
<literal>docs</literal>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если вы наблюдаете проблему на страницах <ulink
|
||
url="http://www.FreeBSD.org">сайта FreeBSD</ulink>,
|
||
то правильным выбором будет <literal>www</literal>.</para>
|
||
|
||
<note>
|
||
<para>Если проблема с чем-то из порта, называемого
|
||
<literal>www/<replaceable>someportname</replaceable>
|
||
</literal>, то она все же принадлежит к категории
|
||
<literal>ports</literal>.</para>
|
||
</note>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Далее представлены более специализированные категории.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Если проблема принадлежит к <literal>kern</literal>, но
|
||
в то же время имеет дело с подсистемой USB, то правильным
|
||
выбором будет <literal>usb</literal>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если проблема принадлежит к <literal>kern</literal>
|
||
и найдена в потоковых библиотеках, правильным выбором будет
|
||
<literal>threads</literal>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если проблема принадлежит к базовой системе и касается
|
||
соблюдения стандартов, таких как &posix;, правильным выбором
|
||
будет <literal>standards</literal>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если проблема связана с ошибками внутри
|
||
&java.virtual.machine; (&jvm;), даже если &java; была
|
||
установлена из коллекции портов, вам следует выбрать категорию
|
||
<literal>java</literal>. Более общие проблемы с портами &java;
|
||
попадают под категорию <literal>ports</literal>.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Далее перечислены остальные категории.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Если вы уверены, что проблема проявляется только на
|
||
используемой вами процессорной архитектуре, выберите одну
|
||
из архитектурно-специфичных категорий: это
|
||
<literal>i386</literal> для Intel-совместимых машин в
|
||
32-битном режиме; <literal>amd64</literal> для AMD машин
|
||
в 64-битном режиме (сюда также входят Intel-совместимые
|
||
машины работающие в режиме EMT64); и менее распространенные
|
||
<literal>arm</literal>, <literal>ia64</literal>,
|
||
<literal>powerpc</literal> и <literal>sparc64</literal>.</para>
|
||
|
||
<note>
|
||
<para>Люди часто ошибаются в выборе категории. Если вы
|
||
не уверены в правильности выбора, то лучше не гадать, а
|
||
выбрать <literal>misc</literal>.</para>
|
||
</note>
|
||
|
||
<example>
|
||
<title>Правильное использование категории</title>
|
||
|
||
<para>У вас простой ПК, и вы подозреваете, что столкнулись
|
||
с проблемой, специфичной для конкретного чипсета или
|
||
материнской платы: верная категория —
|
||
<literal>i386</literal>.</para>
|
||
</example>
|
||
|
||
<example>
|
||
<title>Неправильное использование категории</title>
|
||
|
||
<para>Если вы наблюдаете проблему с периферийной картой
|
||
расширения на распространенной шине или неполадки
|
||
с конкретного типа жестким диском: в этом случае возможно,
|
||
что неисправность наблюдается на более чем одной архитектуре,
|
||
и верным выбором будет <literal>kern</literal>.</para>
|
||
</example>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если вы не знаете в чем проблема (или вам кажется, что
|
||
описание не попадает ни под какую из вышеобозначенных),
|
||
используйте категорию <literal>misc</literal>. Перед тем, как
|
||
написать PR, можно для начала спросить помощи в &a.questions;.
|
||
Возможно, там вам подскажут, какую из существующих категорий
|
||
следует выбрать.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Вот текущий перечень категорий (взят из
|
||
<ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/src/gnu/usr.bin/send-pr/categories"></ulink>):</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><literal>advocacy:</literal> проблемы, связанные с
|
||
общественным мнением о &os;. Вышло из употребления.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>alpha:</literal> проблемы, специфичные для
|
||
платформы Alpha.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>amd64:</literal> проблемы, специфичные для
|
||
платформы AMD64.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>arm:</literal> проблемы, специфичные для
|
||
платформы ARM.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>bin:</literal> проблемы с пользовательскими
|
||
программами из базовой системы.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>conf:</literal> проблемы с файлами настройки,
|
||
используемыми по умолчанию значениями и прочее.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>docs:</literal> проблемы со страницами справочной
|
||
системы или онлайновой документацией.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>gnu:</literal> проблемы с портированным
|
||
программным обеспечением GNU, таким как &man.gcc.1; или
|
||
&man.grep.1;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>i386:</literal> проблемы, специфичные для
|
||
платформы &i386;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>ia64:</literal> проблемы, специфичные для
|
||
платформы ia64.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>java:</literal> проблемы, связанные с виртуальной
|
||
машиной &java;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>kern:</literal> проблемы с ядром или с
|
||
библиотеками в базовой системе, или с драйверами устройств, не
|
||
связанными с какой-либо конкретной платформой.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>misc:</literal> все, что не подпадает ни под какую
|
||
другую категорию. (Надо отметить, что нет почти ничего, чтобы
|
||
действительно соответствовало этой категории, за исключением
|
||
проблем с релизами и с инфраструктурой сборки. Временные
|
||
отказы при построении ветки <literal>HEAD</literal> не
|
||
принадлежат к данной категории. Также надо отметить, что
|
||
проблемы этой категории
|
||
имеют тенденцию теряться легче всего).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>ports:</literal> проблемы, связанные с коллекцией
|
||
портов.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>powerpc:</literal> проблемы, специфичные для
|
||
платформы &powerpc;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>sparc64:</literal> проблемы, специфичные для
|
||
платформы &sparc64;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>standards:</literal> проблемы, связанные с
|
||
соответствием стандартам.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>threads:</literal> проблемы, касающиеся
|
||
реализации тредов во &os; (особенно во &os.current;).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>usb:</literal> проблемы, относящиеся к реализации
|
||
USB во &os;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>www:</literal> изменения или улучшения сайта
|
||
&os;</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Class:</emphasis> Выберите одно из следующего:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><literal>sw-bug:</literal> ошибки в программном
|
||
обеспечении.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>doc-bug:</literal> ошибки в документации.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>change-request:</literal> запросы на расширение
|
||
функций или изменение в существующих.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>update:</literal> обновления портов или другого
|
||
программного обеспечения сторонних разработчиков.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><literal>maintainer-update:</literal> обновления в портах,
|
||
для которых вы являетесь ответственной персоной.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Release:</emphasis> Используемая вами версия &os;.
|
||
Оно заполняется автоматически программой &man.send-pr.1; и требует
|
||
изменения, если только вы отсылаете сообщение о проблеме с системы,
|
||
отличающейся от той, где вы столкнулись с проблемой.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>И наконец, последовательность многострочных полей:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><emphasis>Environment:</emphasis> Оно должно максимально точно
|
||
описывать окружение, в котором встречается проблема. Сюда
|
||
включается версия операционной системы, версия конкретной программы
|
||
или файла, содержащего проблему, и любая другая информация, такая,
|
||
как конфигурация системы, другое программное обеспечение, которое
|
||
влияет на проблему, и так далее—просто все, что разработчик
|
||
должен знать для создания условий появления проблемы.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Description:</emphasis> Полное и точное описание
|
||
проблемы, с которой вы столкнулись. Попытайтесь избежать своих
|
||
предположений о причинах проблемы, если только вы не
|
||
уверены, что правы, так как вы можете привести разработчика к
|
||
неправильным предположениям о проблеме.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>How-To-Repeat:</emphasis> Последовательность
|
||
действий, которые должны быть выполнены для повторения
|
||
проблемы.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Fix:</emphasis> Предпочтителен патч, или по крайней
|
||
мере обходной путь (который не только поможет другим людям обойти
|
||
ту же самую проблему, но также поможет разработчику понять ее
|
||
причины), однако если у вас нет никаких здравых идей, то лучше
|
||
оставить это поле пустым, чем строит догадки.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</section>
|
||
|
||
<section>
|
||
<title>Отправка сообщения о проблеме</title>
|
||
|
||
<para>Если вы используете &man.send-pr.1;:</para>
|
||
|
||
<para>Как только вы заполните шаблон, сохраните его и выйдете из
|
||
редактора, &man.send-pr.1; запросит вас
|
||
<prompt>s)end, e)dit or a)bort?</prompt>. Вы можете нажать
|
||
<userinput>s</userinput> для продолжения и отправки сообщения о
|
||
проблеме, <userinput>e</userinput> для повторного запуска редактора и
|
||
выполнения дальнейших изменений, или <userinput>a</userinput> для
|
||
отказа от вашего сообщения. Если вы выберете последнее, то ваше
|
||
сообщение о проблеме останется на диске (&man.send-pr.1; укажет вам
|
||
имя файла перед завершением работы), так что вы сможете отредактировать
|
||
его на свой вкус или передать в систему с лучшим подключением к сети,
|
||
перед тем, как послать его при помощи параметра <option>-f</option>
|
||
программы &man.send-pr.1;:</para>
|
||
|
||
<screen>&prompt.user; <userinput>send-pr -f ~/my-problem-report</userinput></screen>
|
||
|
||
<para>При этом будет прочитан указанный файл, будет проверено содержимое,
|
||
убраны комментарии и сообщение будет отослано.</para>
|
||
|
||
<para>Если вы используете <ulink
|
||
url="&url.base;/send-pr.html">веб форму</ulink>:</para>
|
||
|
||
<para>Перед нажатием <literal>submit</literal> вам потребуется
|
||
заполнить проверочное поле текстом, представленным на картинке рядом.
|
||
Эта непопулярная мера была принята в связи со злоупотреблениями со
|
||
стороны роботов и некоторых неверно сориентированных индивидуумов.
|
||
Это необходимая мера, которая никому не нравится, и, пожалуйста,
|
||
не просите нас убрать её.</para>
|
||
|
||
<para>Отметим, что вам <literal>настоятельно рекомендуется</literal>
|
||
сохранить вашу работу (PR) куда-нибудь перед нажатием кнопки
|
||
<literal>submit</literal>. Распространенная пользовательская ошибка:
|
||
отображение браузером устаревшей проверочной картинки из его кэша.
|
||
Если это произойдет в вашем случае, ваше сообщение будет отвергнуто
|
||
и ваши труды пропадут.</para>
|
||
|
||
<para>Если по какой-либо причине вы не имеете возможности видеть
|
||
проверочную картинку, а также не можете воспользоваться
|
||
&man.send-pr.1;, пожалуйста примите наши извинения за неудобства
|
||
и пришлите ваш PR электронной почтой команде
|
||
<email>freebsd-bugbusters@FreeBSD.org</email>.</para>
|
||
</section>
|
||
</section>
|
||
|
||
<section id="pr-followup">
|
||
<title>Отслеживание</title>
|
||
|
||
<para>После того, как ваше сообщение будет принято, вы получите по
|
||
электронной почте уведомление, в котором будет указан номер для
|
||
отслеживания, который был назначен вашему сообщению о проблеме и URL,
|
||
который вы можете использовать для проверки его состояния. В случае
|
||
удачи кто-нибудь проявит интерес к вашей проблеме и попытается ее
|
||
решить, или, как это бывает, описать, почему это не является проблемой.
|
||
Вы будете автоматически оповещаться о любом изменении состояния
|
||
и получать копии всех комментариев или патчей, которые будут
|
||
присоединяться в процессе отработки вашего сообщения о проблеме.</para>
|
||
|
||
<para>Если кто-то запросит дополнительную информацию от вас, или вы
|
||
вспомните или обнаружите нечто, что не указали в начальном сообщении,
|
||
пожалуйста пошлите ваше дополнение (отклик) с помощью одного из этих
|
||
способов:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Самый простой путь это использовать соответствующую ссылку
|
||
(followup) на индивидуальной веб страничке сообщения об ошибки, к
|
||
которой можно перейти, используя <ulink url
|
||
="http://www.FreeBSD.org/cgi/query-pr-summary.cgi?query">страничку
|
||
поиска PR</ulink>. Кликнув на этой ссылке откроется окно для
|
||
отправки email с уже корректно заполненными полями To: и Subject:
|
||
(если ваш браузер сконфигурирован для этого).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Или просто пошлите письмо на адрес &a.bugfollowup;, включив
|
||
отслеживаемый номер в теме письма, чтобы система отслеживания
|
||
сообщений могла знать, к какому сообщению о проблеме его
|
||
присоединить.</para>
|
||
|
||
<note>
|
||
<para>Если вы <emphasis>не</emphasis> включите отслеживаемый номер,
|
||
GNATS растеряется и создаст совершенно новое PR, которое будет
|
||
закреплено за администратором GNATS. В результате ваш отклик
|
||
затеряется до тех пор пока кто-нибудь не начнёт разгребать
|
||
скопившийся мусор, что может произойти спустя дни или даже
|
||
недели.</para>
|
||
|
||
<para>Неправильно:</para>
|
||
|
||
<programlisting>Subject: that PR I sent</programlisting>
|
||
|
||
<para>Правильно:</para>
|
||
|
||
<programlisting>Subject: Re: ports/12345: compilation problem with foo/bar</programlisting>
|
||
</note>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Если сообщение о проблеме остается открытым после того, как
|
||
проблема была решена, просто отправьте сообщение (так, как это
|
||
описано выше), с указанием, что сообщение о проблеме может быть
|
||
закрыто, и если это возможно, объясните, как и когда проблема была
|
||
устранена.</para>
|
||
</section>
|
||
|
||
<section id="pr-problems">
|
||
<title>Проблемы взаимодействия с GNATS</title>
|
||
|
||
<para>Большинство PR проходят сквозь систему и принимаются быстро;
|
||
однако, во время загруженности GNATS, подтверждение на ваше сообщение
|
||
о проблеме может задержаться на 10 и более минут. Пожалуйста,
|
||
сохраняйте спокойствие.</para>
|
||
|
||
<para>Помимо всего прочего, так как GNATS получает все данные через
|
||
электронную почту, становится понятным, почему &os; пропускает все
|
||
сообщения через спамфильтры. Если подтверждение не приходит
|
||
на протяжении часа-двух, то, возможно, что ваше сообщение попало под них;
|
||
если так, то, пожалуйста, свяжитесь с администраторами GNATS по адресу
|
||
<email>bugmeister@FreeBSD.org</email> и попросите помощи.</para>
|
||
|
||
<note>
|
||
<para>Среди антиспам мер есть одна, которая сопоставляет сообщения
|
||
с множеством злоупотреблений, наблюдаемых в электронной почте
|
||
с HTML-форматированием текста (однако, сюда не относится простое
|
||
включение HTML в PR). Мы настоятельно рекомендуем не использовать
|
||
HTML-форматированный текст при посылке PR: не только из-за вероятности
|
||
попадания в спамфильтры, но и из-за загромождения базы данных. Отдайте
|
||
предпочтение простому старому текстовому формату.</para>
|
||
</note>
|
||
|
||
<para>В редких случаях вы можете столкнуться с ошибкой GNATS, когда
|
||
PR принят и ему присвоен номер, но он не отображается в списках PR
|
||
ни на одной из страниц веб поиска PR. Вероятно, что рассинхронизировался
|
||
индекс базы с самой базой. Этот случай можно проверить, обратившись
|
||
к страничке <ulink url="http://www.FreeBSD.org/cgi/query-pr.cgi">
|
||
Query PR Database</ulink> и проконтролировав наличие вашего PR.
|
||
Если он есть, пожалуйста, известите администраторов GNATS
|
||
(<email>bugmeister@FreeBSD.org</email>). Следует отметить, что
|
||
перестройка базы выполняется периодически по <literal>cron</literal>,
|
||
и если вам не к спеху, то не предпринимайте никаких шагов.</para>
|
||
</section>
|
||
|
||
<section id="pr-further">
|
||
<title>Дополнительная литература</title>
|
||
|
||
<para>Это список информационных ресурсов, относящихся к правильному
|
||
написанию и обработке сообщений о проблемах. Он, без сомнения, не
|
||
полон.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><ulink
|
||
url="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">
|
||
How to Report Bugs Effectively</ulink>—прекрасное эссе, которое
|
||
написал Simon G. Tatham о составлении полезных (не специфичных для
|
||
&os;) сообщений о проблемах.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink url="&url.articles.pr-guidelines;/article.html">Problem
|
||
Report Handling Guidelines</ulink>—интересный взгляд на
|
||
обработку сообщений о проблемах самими разработчиками &os;.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</section>
|
||
</article>
|