---
authors:
  - 
    author: 'Dag-Erling Smørgrav'
  - 
    author: 'Mark Linimon'
description: 'Как лучше сформулировать и отправить отчёт о проблеме в проект FreeBSD'
tags: ["formulate", "submit", "FreeBSD", "PR"]
title: 'Составление сообщений о проблеме во FreeBSD'
trademarks: ["freebsd", "ibm", "intel", "sun", "general"]
---

= Составление сообщений о проблеме во FreeBSD
:doctype: article
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:source-highlighter: rouge
:experimental:
:images-path: articles/problem-reports/

ifdef::env-beastie[]
ifdef::backend-html5[]
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[]
:imagesdir: ../../../images/{images-path}
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[.abstract-title]
Аннотация

Эта статья описывает, как наилучшим образом сформулировать и отправить сообщение о проблеме в Проект FreeBSD.

'''

toc::[]

[[pr-scope]]
== Область применения данной статьи

Изначально эта статья была написана для описания отправки отчётов о проблемах через Bugzilla, но некоторые её разделы также применимы при отправке через систему рецензирования Phabricator или через организацию FreeBSD на Github.

[[pr-intro]]
== Введение

Одной из самых разочаровывающих практик, которую можно получить в качестве пользователя программного обеспечения, является отправка сообщения о проблеме, которое вскоре закрывается с кратким и ничему не помогающим объяснением типа "это не проблема" или "неправильный отчет". Подобным же образом одной из самых разочаровывающих практик, которую можно получить в качестве разработчика программного обеспечения, является получение массы сообщений о проблемах, которые на самом деле не являются сообщениями о проблемах, а запросами на получение поддержки, или которые содержат мало или вообще не содержат никакой информации о сути проблемы или способе её воспроизведения.

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

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

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

[[pr-when]]
== Когда нужно отправлять сообщение о проблеме

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

Но как же определить, что является ошибкой, а что нет? Простым правилом, которому нужно следовать, является следующее - ваша проблема _не_ является ошибкой, если она формулируется как вопрос (обычно в форме "Как сделать X?" или "Где можно найти Y?"). Не всегда это так однозначно, но правило вопроса покрывает большинство случаев. Если Вам нужен ответ, лучше всего сначала проконсультироваться https://forums.freebsd.org[на форумах FreeBSD], в IRC или в {freebsd-questions}.

Вот некоторые случаи, в которых может оказаться полезным отправить сообщение о чем-то, что не является ошибкой:

* Уведомление об обновлении программного обеспечения, которое поддерживается сторонними разработчиками (в основном порты, но также и компоненты базовой системы, разрабатываемые сторонними организациями, такие, как BIND или различные утилиты GNU).
* Для не поддерживаемых никем портов (переменная `MAINTAINER` содержит `ports@FreeBSD.org`) отчёт о проблеме без приложенного файла с исправлениями едва ли будет замечен коммиттером. Чтобы стать сопровождающим порта, у которого не было сопровождающего, отправьте отчёт с запросом (файл с исправлением желателен, но не обязателен).
* В любом случае, следование процессу, описанному в extref:{porters-handbook}upgrading[Руководстве по созданию портов] даст наилучшие результаты. (Также можно ознакомиться с статьей extref:{contributing}[Вклад в коллекцию портов FreeBSD, ports-contributing].)

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

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

* Код в базовой системе, который пишется и поддерживается контрибьюторами FreeBSD. Такой, как ядро, библиотека C, драйвера устройств (входят в категорию `kern`); утилиты (`bin`); страницы справочника и документация (`docs`); веб-страницы (`www`). Все ошибки в этих областях должны быть сообщены разработчикам FreeBSD.
* Код в базовой системе, который пишется и поддерживается другим, импортируется во FreeBSD и адаптируется. Примеры включают в себя: bind, man:gcc[1] и man:sendmail[8]. Большинство ошибок, попадающие в данные области должны быть сообщены разработчикам FreeBSD, но в некоторых случаях они должны быть отправлены изначальным разработчикам, если проблемы не являются специфичными для FreeBSD. Обычно ошибки такого рода попадают под категории `bin` или `gnu`.
* Отдельные приложения, не входящие в базовую систему, но являющиеся частью Коллекции Портов FreeBSD (категория `ports`). Большинство этих приложений не пишется разработчиками FreeBSD; что предоставляет FreeBSD, так это только лишь инфраструктуру для установки приложения. Следовательно, вы должны отправлять сообщение об ошибке разработчикам FreeBSD только тогда, когда вы уверены в том, что проблема специфична для FreeBSD - иначе отправляйте её авторам программного обеспечения.

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

Если проблема в базовой системе, то вам нужно сначала прочесть раздел extref:{handbook}cutting-edge[Руководства FreeBSD о версиях], если вы ещё не знакомы с данной темой. Для FreeBSD возможно исправлять проблемы только для некоторых недавних веток базовой системы, поэтому отправка сообщения об ошибке для более старой версии приведёт к тому, что разработчик посоветует вам обновиться до поддерживаемой версии, чтобы посмотреть присутствует ли в ней проблема. Команда офицеров безопасности поддерживает link:https://www.FreeBSD.org/ru/security/#sup[список поддерживаемых версий.].

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

[[pr-prep]]
== Подготовка

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

* Во-первых, всегда проверяйте, не описан ли этот вопрос в extref:{handbook}[Руководстве].
* Список extref:{faq}[Часто задаваемых вопросов] (FAQ) по FreeBSD. FAQ содержит ответы на несколько вопросов, таких как вопросы, касающиеся extref:{faq}[совместимости оборудования, hardware].
* extref:{handbook}eresources/[Списки рассылки, eresources-mail] — если Вы не подписаны на них, воспользуйтесь https://www.FreeBSD.org/search/#mailinglists[поиском в архивах] на сайте FreeBSD. Если ваша проблема не обсуждалась в списках рассылки, вы можете попытаться опубликовать сообщение о ней и подождать несколько дней — возможно, кто-то заметит то, что было упущено.
* Как отмечалось выше, форумы FreeBSD и IRC.
* Как вариант, весь веб-используйте вашу любимую поисковую систему для поиска каких-либо ссылок по вашей проблеме. Вы можете даже увидеть ссылки на архивы списков рассылки или телеконференций, о которых вы не знали или не думали там искать.
* Следующим пунктом должна быть https://bugs.freebsd.org/bugzilla/query.cgi[ база данных FreeBSD Bugzilla]. Если только ваша проблема не нова или редка, есть некоторый шанс, что о ней уже сообщено.
* И самое важное, вы должны посмотреть не затрагивает ли документация в базовой системе вашу проблему.
+
Для основного кода FreeBSD вы должны тщательно изучить содержимое файла [.filename]#/usr/src/UPDATING# или его текущую версию по адресу https://cgit.freebsd.org/src/tree/UPDATING[https://cgit.freebsd.org/src/tree/UPDATING]. (Если вы переходите с одной версии на другую, особенно если вы обновляетесь до FreeBSD-CURRENT, то в этом файле вы можете найти много важной информации).
+
Если же ваша проблема связана с коллекцией портов FreeBSD, вы должны обратиться к файлу [.filename]#/usr/ports/UPDATING# (изменения, касающиеся индивидуальных портов) или к [.filename]#/usr/ports/CHANGES# (изменения, касающиеся всей коллекции портов). Они также доступны через интерфейс cgit: https://cgit.freebsd.org/ports/tree/UPDATING[https://cgit.freebsd.org/ports/tree/UPDATING] и https://cgit.freebsd.org/ports/tree/CHANGES[https://cgit.freebsd.org/ports/tree/CHANGES] .

[[pr-writing]]
== Написание сообщения о проблеме

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

[[pr-writing-tips]]
== Как писать хорошие сообщения о проблемах в Bugzilla

* _Не оставляйте поле "Summary" (краткое описание) пустым._ Сообщения о проблемах попадают как в списки рассылки, которые затем расходятся по всему миру (в них поле "Summary" определяет тему письма), так и в базу данных. Просматривающий эту базу, как правило, пройдет мимо PR с пустым кратким описанием. Не забудьте, что PR остаётся в базе до тех пор, пока кто-либо не закроет его; сообщение-аноним, скорее всего, просто потеряется на общем фоне.
* __Избегайте туманных описаний в поле "Summary"__. Не стоит предполагать, что читающий ваше сообщение владеет контекстом; поэтому, чем подробнее вы опишете ситуацию, тем лучше. В частности, к какой части системы относится ваша проблема? Проявляется ли она на этапе установки или во время нормальной работы? Например, вместо строки `Summary: portupgrade is broken` следовало бы написать что-то вроде `Summary: port ports-mgmt/portupgrade coredumps on -current`. В случае портированных приложений в поле "Summary" полезно указывать не только имя порта, но и категорию.
* _Если у вас есть патч, сообщите об этом._ Наличие патча значительно упрощает обработку отчёта.
** Не используйте ключевые слова `patch` или `patch-ready` — они устарели. Вместо этого прикрепите патч как вложение и отметьте флажок `[patch]`. Если флажок не отображается, нажмите `Show Advanced Fields` (Показать расширенные поля) в левом верхнем углу.
** Предпочтительны файлы с исправлениями с MIME-типом `text/plain`.
** Предпочтительны патчи, совместимые с `git`.
* _Если вы сопровождаете порт, укажите это._ Если вы сопровождаете часть исходного кода (например, существующий порт), обязательно установите поле `maintainer-feedback` в вашем сообщении о проблеме в `+`. Таким образом, любой коммиттер, обрабатывающий ваш PR, не будет вынужден проверять это.
* _Будьте точны в формулировках._ Чем больше информации вы можете предоставить о проблеме, тем больше у вас шансов получить ответ.

** Включите версию FreeBSD, которую вы используете (для этого есть специальное поле, см. ниже), и архитектуру. Укажите, используете ли вы релиз (например, с CD-ROM или загруженный) или систему, поддерживаемую через Git (и, если да, укажите хэш и ветку). Если вы используете ветку FreeBSD-CURRENT, укажите это в первую очередь, так как исправления (особенно для известных проблем) часто добавляются очень быстро, и пользователи FreeBSD-CURRENT должны следить за обновлениями.
** Включите информацию о том, какие глобальные опции вы указали в [.filename]#make.conf#. На заметку: Объявление опций наподобие `-02` и других, описанных в man:gcc[1] во многих случаях может быть причиной ошибок. Хотя и разработчики FreeBSD будут принимать патчи, у них не будет желания исследовать такие случаи из-за отсутствия времени и добровольцев, и вместо этого они могут ответить, что это не поддерживается.
** Если проблему можно легко повторить, включите необходимую информацию, чтобы разработчик смог воспроизвести её самостоятельно. Если проблема проявляется при некоторых вводимых данных, то, по возможности, приведите их вместе с получаемым и ожидаемым выводом. Если же вводимых данных много или же их нельзя разглашать, то попробуйте выделить из них лишь небольшой фрагмент, приводящий к возникновению проблемы, и включите его в PR.
** Если ваша проблема связана с ядром, будьте готовы предоставить следующую информацию (вам не обязательно включать её всю, она пойдёт лишь на заполнение базы данных, но вы должны включить информацию, которая по вашему мнению актуальна):

*** Вашу конфигурацию ядра, включая то, какие устройства у вас установлены
*** Включены ли у вас опции отладки (например, `WITNESS`), и если так, то существует ли проблема после изменения значения этой опции
*** Полный вывод обратной трассировки (backtrace), паники или иного консольного вывода, или же записи из [.filename]#/var/log/messages#, если они были сгенерированы
*** Вывод команды `pciconf -l`, а также соответствующие части вывода `dmesg`, в случае, если проблема связана с конкретным оборудованием
*** Прочли ли вы [.filename]#src/UPDATING#, описана ли там ваша проблема (кто-нибудь спросит обязательно)
*** Запускается ли другое ядро (это для тех случаев, когда причиной сбоя стало оборудование, например отказывающие винчестеры или перегревшиеся процессоры, что может маскировать проблемы ядра)

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

*** Какие порты вы устанавливали
*** Имеются ли какие-либо переменные окружения, которые переписывают первоначально-установленные в [.filename]#bsd.port.mk#, такие как, `PORTSDIR`)
*** Прочли ли вы [.filename]#ports/UPDATING#, и описана ли там ваша проблема (кто-нибудь спросит обязательно)

* _Избегайте нечетких запросов о новых возможностях._ Сообщение типа "кто-то обязательно должен сделать так, чтобы такая-то утилита вела себя так-то" имеет куда меньше шансов встретить позитивный отклик, чем более четко сформулированный запрос. Помните, что исходные тексты доступны всем, так что если вам нужна реализация какого-то нового свойства, лучший способ — взяться за работу самому! Не забудьте также, что такие моменты лучше обсуждать в списках рассылки, таких как `freebsd-questions`, чем делать это посредством базы данных PR.
* _Убедитесь, что ваша проблема ещё никем не описана._ Мы уже говорили об этом, но стоит повториться. Потратьте пару минут на составление запросов в Bugzilla: https://bugs.freebsd.org/bugzilla/query.cgi[https://bugs.freebsd.org/bugzilla/query.cgi]. (Несмотря на повторы, об этом постоянно забывают)
* _Сообщайте об одной проблеме в одном PR._ Избегайте описания двух и более проблем в одном сообщении (исключением являются взаимосвязанные проблемы). Оформляя патчи, не пытайтесь в них добавлять множество функциональных возможностей или исправлять ими несколько ошибок в одном и том же сообщении о проблеме (опять же, за исключением взаимосвязанных проблем) - для таких PR-ов потребуется значительно больше времени на обработку.
* _Избегайте полемики._ Если ваше сообщение касается области или способов реализации, которые ранее вызвали разногласия, вам стоит быть готовым предоставить не только патчи, но и внятные аргументы, почему следует поступать именно так (то есть, это "Правильный Путь"). Как отмечалось выше, аккуратный поиск по архиву списков рассылки https://www.FreeBSD.org/search/#mailinglists[https://www.FreeBSD.org/search/#mailinglists] никогда не помешает.
* _Будьте вежливы._ Почти каждый из тех, кто может заниматься вашим сообщением, является добровольцем. Никому не понравятся указания, как и что делать, когда он и так занимается этим, да ещё и по каким-либо причинам, отличным от финансовых. Вообще говоря, этого подхода следует придерживаться, имея дело с любым проектом с Открытыми Исходными текстами (Open Source).

[[pr-writing-before-beginning]]
== Прежде всего

Следующие соображения применимы к использованию https://bugs.freebsd.org/bugzilla/enter_bug.cgi[веб-формы Bugzilla для отправки PR]. Будьте осторожны с операциями копирования и вставки, которые могут изменить пробелы или другое форматирование текста.

И наконец, если ваше сообщение будет объёмным, вы должны приготовить его в offline, чтобы ничего не потерялось в случае, если будет проблема при его отправке.

[[pr-writing-attaching-patches]]
== Вложение патчей или файлов

Следующие инструкции применимы не только к отправке отчётов о проблемах через Bugzilla, но также через Phabricator или организацию FreeBSD на Github (в виде пул-реквестов).

В общем, мы настоятельно рекомендуем использовать `git format-patch` для создания одного или серии унифицированных diff-файлов относительно базовой ветки (например, `origin/main`). Патчи, созданные таким образом, будут содержать хеши Git, а также ваше имя и адрес электронной почты, что упростит применение вашего патча коммиттерами и правильное указание вас как автора (с помощью `git am`). Для небольших изменений, где вы предпочитаете не использовать git, убедитесь, что используете man:diff[1] с опцией `-u` для создания унифицированного diff-файла, так как это даст разработчикам больше контекста и сделает его более читаемым по сравнению с другими форматами diff. Убедитесь, что ваши патчи созданы от корня соответствующего дерева репозитория.

Для проблем с ядром или базовыми утилитами предпочтителен патч для FreeBSD-CURRENT (основной ветки Git), поскольку весь новый код должен сначала применяться и тестироваться там. После проведения соответствующих или достаточных тестов код будет объединён/перенесён в ветку FreeBSD-STABLE.

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

Не отсылайте патчи в виде вложений, используя `Content-Transfer-Encoding: quoted-printable`. Это выполнит экранирование (escaping) символов и весь патч будет бесполезным. Пожалуйста, просто используйте тип MIME `text/plain'.

Следует также заметить, что включение небольших патчей в запросах на изменение (pull request) Github является приемлемой практикой, в особенности если они решают проблему, описанную в запросе на изменение, большие же патчи, а в особенности новый код, который может требовать значительного просмотра перед тем, как он будет внесён в дерево исходных текстов, должны быть размещены на web- или ftp-сервере, а в запрос на изменение должен быть включён только URL указывающий на этот патч. Очень часто патчи, пересылаемые по электронной почте, бывают искажены, и, как следствие, чем больше патч, тем труднее будет для заинтересованных людей привести его к нормальному виду. Также то, что патч будет размещён отдельно от сообщения о проблеме, даёт возможность изменять его не отсылая полный патч в дополнение к изначальному сообщению о проблеме. И наконец, большие патчи просто увеличивают размер базы данных, так как закрытые сообщения об ошибках на самом деле не удаляются, а сохраняются и помечаются, как `closed`.

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

[[pr-writing-filling-template]]
== Заполнение формы Bugzilla

Следующие инструкции применимы только к отправке через Bugzilla.

[NOTE]
====
Используемый вами адрес электронной почты станет общедоступной информацией и может попасть к спамерам. У вас должны быть процедуры обработки спама или следует использовать временный почтовый аккаунт. Однако учтите, что если вы вообще не используете действительный почтовый аккаунт, мы не сможем задать вам вопросы о вашем сообщении.
====

При подаче сообщения об ошибке вы увидите следующие поля:

* _Краткое описание:_ Заполните это кратким и точным описанием проблемы. Краткое описание используется как тема письма с отчётом о проблеме, а также в списках и сводках отчётов; отчёты с неясными описаниями часто остаются без внимания.
* _Серьезность:_ Одно из значений: `Затрагивает только меня (Affects only me)`, `Затрагивает некоторых людей (Affects some people)` или `Затрагивает многих людей (Affects many people)`. Не переоценивайте проблему; избегайте отмечать её как `Затрагивает многих людей`, если это не так. Разработчики FreeBSD не обязательно будут работать над вашей проблемой быстрее, если вы преувеличите её важность, поскольку многие другие уже поступали точно так же.
* _Категория:_ Выберите подходящую категорию.
+
Первое, что вам нужно сделать, — это определить, в какой части системы находится ваша проблема. Помните, что FreeBSD — это полноценная операционная система, которая включает в себя ядро, стандартные библиотеки, множество драйверов периферийных устройств и большое количество утилит («базовая система»). Однако в Коллекции портов доступны тысячи дополнительных приложений. Сначала вам нужно выяснить, связана ли проблема с базовой системой или с чем-то, установленным через Коллекцию портов.
+
Вот описание основных категорий:

** Если проблема в ядре, в библиотеках (таких как стандартная библиотека С `libc`) или в драйвере из базовой системы, то используйте категорию `kern`. (Есть несколько исключений, описанных ниже). В общем, это всё, что описано в разделах 2, 3 или 4 справочника.
** Если проблема с бинарной программой, например с man:sh[1] или man:mount[8], то вам прежде всего необходимо определить принадлежность программы к базовой системе или к установке из коллекции портов. Если вы не уверены, выполните команду `whereis _имя программы_`. В FreeBSD для коллекции портов существует договоренность: установка ведется в [.filename]#/usr/local#, однако это может быть переопределено системным администратором. Для таких программ следует использовать категорию `ports` (даже если категория порта `www`; см. ниже). Если программа располагается в [.filename]#/bin#, [.filename]#/usr/bin#, [.filename]#/sbin# или в [.filename]#/usr/sbin#, то это часть базовой системы, и вам следует использовать категорию `bin`. (Несколько программ, например man:gcc[1], на самом деле используют категорию `gnu`, но не беспокойтесь об этом сейчас.) Программы этой категории описаны в разделах 1 и 8 справочной системы.
** Если вы уверены, что в стартовых скриптах `(rc)` или в каком-то ином неисполняемом конфигурационном файле присутствует ошибка, тогда верной категорией будет `conf` (configuration). Эти сущности описываются в разделе 5 справочной системы.
** Если вы нашли проблему в наборе документации (статьи, книги, страницы справочной системы), правильным выбором будет `docs`.
+
[NOTE]
====
Если проблема с чем-то из порта, называемого `www/_имяпорта_`, то она все же принадлежит к категории `ports`.
====
+
Далее представлены более специализированные категории.

** Если проблема принадлежит к `kern`, но в то же время имеет дело с подсистемой USB, то правильным выбором будет `usb`.
** Если проблема принадлежит к `kern` и найдена в потоковых библиотеках, правильным выбором будет `threads`.
** Если проблема принадлежит к базовой системе и касается соблюдения стандартов, таких как POSIX(R), правильным выбором будет `standards`.
** Если вы уверены, что проблема возникнет только на используемой вами архитектуре процессора, выберите одну из архитектурно-зависимых категорий: обычно `i386` для Intel-совместимых машин в 32-битном режиме; `amd64` для машин AMD, работающих в 64-битном режиме (это также включает Intel-совместимые машины, работающие в режиме EMT64); и реже `arm`, `powerpc` или `riscv64`.
+
[NOTE]
====
Люди часто ошибаются в выборе категории. Если вы не уверены в правильности выбора, то лучше не гадать, а выбрать `misc`.
====
+
.Правильное использование архитектурно-зависимых категорий
[example]
====
У вас простой ПК, и вы подозреваете, что столкнулись с проблемой, специфичной для конкретного чипсета или материнской платы: верная категория - `i386`.
====
+
.Некорректное использование категории, зависящей от архитектуры
[example]
====
Если вы наблюдаете проблему с периферийной картой расширения на распространённой шине или неполадки с конкретного типа жёстким диском: в этом случае возможно, что неисправность наблюдается на более чем одной архитектуре, и верным выбором будет `kern`.
====
** Если вы не знаете в чем проблема (или вам кажется, что описание не попадает ни под какую из вышеобозначенных), используйте категорию `misc`. Перед тем, как сделать так, можно для начала спросить помощи. Возможно, вам подскажут, какую из существующих категорий следует выбрать.
* _Environment:_ Оно должно максимально точно описывать окружение, в котором встречается проблема. Сюда включается версия операционной системы, версия конкретной программы или файла, содержащего проблему, и любая другая информация, такая, как конфигурация системы, другое программное обеспечение, которое влияет на проблему, и так далее-просто все, что разработчик должен знать для создания условий появления проблемы.
* _Описание:_ Полное и точное описание проблемы, с которой вы столкнулись. Старайтесь избегать предположений о причинах проблемы, если не уверены в своей правоте, так как это может ввести разработчика в заблуждение и привести к неверным выводам. В описании должны быть указаны действия, необходимые для воспроизведения проблемы. Если вам известен обходной путь, укажите его. Это не только поможет другим людям с той же проблемой временно её решить, но и может помочь разработчику понять причину возникновения проблемы.

[[pr-followup]]
== Отслеживание

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

Если кто-то запросит у вас дополнительную информацию, или вы вспомните или обнаружите что-то, что не упомянули в первоначальном отчёте, пожалуйста, отправьте уточнение. Основная причина, по которой ошибка не исправляется, — это отсутствие связи с автором отчёта. Проще всего воспользоваться опцией комментария на веб-странице Bugzilla конкретного PR, которую можно открыть с https://bugs.freebsd.org/bugzilla/query.cgi[страницы поиска PR Bugzilla].

Если проблема исчезла, но отчёт о ней остаётся открытым, просто добавьте комментарий с указанием, что отчёт можно закрыть, и, по возможности, объясните, как или когда проблема была устранена.

Иногда возникает задержка в одну-две недели, когда отчёт о проблеме остаётся без внимания — никто не назначается на него и не оставляет комментариев. Такое может произойти при увеличении очереди отчётов о проблемах или во время праздничного сезона. Если отчёт о проблеме не получил внимания в течение нескольких недель, стоит найти коммиттера, особенно заинтересованного в работе над ним.

Существует несколько способов сделать это, желательно в следующем порядке, с перерывом в несколько дней между попытками использования каждого канала связи:

* Отправить письмо по электронной почте в extref:{handbook}eresources/[соответствующий список, eresources-summary] для получения комментариев к отчёту.
* Присоединитесь к соответствующим IRC-каналам. Частичный список доступен здесь: https://wiki.freebsd.org/IRC/Channels[]. Сообщите участникам канала о проблеме и запросите помощь. Будьте терпеливы и оставайтесь в канале после отправки сообщения, чтобы у людей из разных часовых поясов была возможность отреагировать.
* Найдите коммиттеров, заинтересованных в сообщенной проблеме. Если проблема касается конкретного инструмента, бинарного файла, порта, документа или исходного файла, проверьте https://cgit.FreeBSD.org[Git Repository]. Определите последних коммиттеров, внесших существенные изменения в файл, и попытайтесь связаться с ними через IRC или электронную почту. Список коммиттеров и их адреса электронной почты можно найти в статье extref:{contributors}[Участники проекта FreeBSD].

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

[[pr-problems]]
== Если возникли проблемы

Если вы обнаружили проблему в системе отслеживания ошибок, сообщите об ошибке! Для этого существует специальная категория. Если у вас не получается это сделать, свяжитесь с ответственными за обработку ошибок по адресу mailto:bugmeister@FreeBSD.org[bugmeister@FreeBSD.org].

[[pr-further]]
== Для дальнейшего ознакомления

Это список информационных ресурсов, относящихся к правильному написанию и обработке сообщений о проблемах. Он, без сомнения, не полон.

* https://github.com/smileytechguy/reporting-bugs-effectively/blob/master/ENGLISH.md[How to Report Bugs Effectively]-прекрасное эссе, которое написал Simon G. Tatham о составлении полезных (не специфичных для FreeBSD) сообщений о проблемах.
* extref:{pr-guidelines}[Руководство по обработке отчётов о проблемах] — интересный взгляд на обработку сообщений о проблемах самими разработчиками FreeBSD.
