| |
$FreeBSD$
FreeBSD is a registered trademark of Wind River Systems, Inc. This is expected to change soon.
Motif, OSF/1, and UNIX are registered trademarks and IT DialTone and The Open Group are trademarks of The Open Group in the United States and other countries.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the ``™'' or the ``®'' symbol.
Это руководство описывает рекомендуемую практику обработки сообщений об ошибках
FreeBSD (Problem Reports - PR). Хотя эти рекомендации предназначены для Группы поддержки
базы данных сообщений о проблемах FreeBSD (PR Database Maintenance Team) <freebsd-bugbusters@FreeBSD.org>
,
им должны следовать все, кто работает с этими сообщениями.
GNATS является системой управления неисправностями (сообщениями об ошибках), которая используется в Проекте FreeBSD. Так как тщательное отслеживание заметных изъянов в программном обеспечении важно для обеспечения качества FreeBSD, правильное использование GNATS необходимо для дальнейшего развития Проекта.
Доступ к GNATS даётся разработчикам FreeBSD, а также более широкому сообществу. Для того, чтобы поддерживать целостность базы данных и единства работы с пользователями, выработанные рекомендации покрывают общие вопросы управления проблемами, такие, как написание отклика, обработку уже закрытых вопросов и так далее.
Респондент посылает PR при помощи утилиты send-pr(1) и получает подтверждающее сообщение.
Среднестатический коммиттер (Вася) проявляет интерес к PR и назначает его самому себе, или другой любитель ошибок (Петя) решает, что лучше всех с описанной проблемой справится именно Вася, и назначает её Васе.
Вася связывается с Респондентом (при этом вся переписка должна фиксироваться) и выясняет причину появления проблемы. Затем он документирует причину в журнале аудита, и переводит PR в состояние ``analyzed'' (проанализировано).
Вася проводит бессонную ночь и выпускает патч, которая, по его мнению, решает означенную проблему, и затем посылает её ответом, прося Респондента протестировать его. Затем он переводит PR в состояние ``feedback''.
Через несколько таких итераций Вася и Респондент удавлетворяются получающимся патчем, и Вася переносит его в дерево -CURRENT (или непосредственно в -STABLE, если этой проблемы в -CURRENT не наблюдается), при этом при выполнении коммита в сопутствующем сообщении делается ссылка на сообщение о проблеме (а также упоминается Респондент, если он последний весь или часть патча), и, если это нужно, начинается отсчёт для MFC.
Если патчу не нужно выполнение MFC, Вася закрывает PR.
Если патч требует выполнения MFC, Вася оставляет Сообщение о проблеме в состоянии ``patched'' до выполнения операции MFC, а затем закрывает его.
Note: Многие PR присылаются с очень слабым описанием проблемы, а некоторые из них либо очень сложно решить, либо являются вершиной айсберга другой, более широкой проблемы; в этих случаях очень важно получить всю информацию, требуемую для решения проблемы. Если описанная проблема не может быть решена, или проявится снова, необходимо повторно открыть PR.
Note: Адрес ``электронной почты'' может оказаться недоступным. В этом случае ответьте на PR обычным образом и попросите Респондента (в своём сообщении) предоставить рабочий адрес электронной почты. Обычно это происходит в случаях использования send-pr(1) в системах с выключенной или неустановленной почтовой системой.
При выполнении некоторых действий очень важно обновлять состояние PR. Это состояние должно в точности отражать текущее состояние работы над PR.
Example 1. Маленький пример того, когда именно нужно менять состояние PR
Когда PR находится в работе и ответственный разработчик(и) удовлетворён получающимся решением, то он отвечает на PR и меняет его состояние на ``feedback''. В этот момент Респондент должен изучить исправление в своей ситуации и ответить, действительно ли был устранён дефект.
Сообщение о проблеме может находится в одном из следующих состояний:
Начальное состояние; проблема была поставлена и её необходимо рассмотреть.
Проблема была рассмотрена, ищется её решение.
Дальнейшая работа требует дополнительной информации от Респондента или сообщества; возможно помещение информации о предлагаемом решении.
Патч был перенесён в дерево исходных текстов, но что-то (выполнение MFC или, возможно, подтверждение Респондента) ещё требуется доделать.
Работа над проблемой была остановлена из-за отсутствия информации или необходимых ресурсов. Это первый кандидат для тех, кто ищет проект для работы над ним. Если проблема вообще не может быть решена, она будет закрыта, а не приостановлена. Проект создания документации использует ``suspended'' для ``желательных'' нововведений, которые требуют значительной работы, для которой ни у кого пока нет времени.
Сообщение о проблеме было закрыто, когда все изменения были перенесены, задокументированы и протестированы, либо когда исправление проблемы было отвергнуто.
Note: Состояние ``patched'' напрямую связано с предлагаемыми решениями, так что вы можете перейти сразу к состоянию ``closed'', если Респондент не может простестировать патч, либо на ваших тестовых прогонах он работает.
При обработке сообщений об ошибках, либо в качестве разработчика, имеющего непосредственный доступ к базе данных GNATS, либо в качестве контрибутора, который просматривает базу данных и посылает свои отклики с патчами, комментариями, пожеланиями или запросами на изменение, вы будете иметь дело с несколькими различными типами PR.
В последующих разделах описывается, для чего предназначены те или иные типы PR, условия отнесения PR к одному из этих типов, и какое внимание нужно уделять каждому из этих типов.
Если в PR в заполненном поле responsible указано имя разработчика FreeBSD, это значит, что PR взята этим человеком для дальнейшей работы.
Уже назначенное PR не должно трогаться никем, кроме того, кому эта проблема назначена. Если у вас есть комментарии, напишите отклик. Если по какой-то причине вы думаете, что PR должна изменить своё состояние или её необходимо назначить кому-то другому, пошлите сообщение тому, кто назначен ответственным. Если этот человек не ответит в течение двух недель, смените назначение PR, а дальше действуйте по своему усмотрению.
Если вы обнаружите, что один и тот же вопрос описывается более чем в одном PR, выберите то, что содержит максимальный объём полезной информации и закройте все остальные, чётко указав номер более полного PR. Если несколько PR содержат непересекающуюся информацию, перенесите всю недостающую информацию в какой-либо отклик, включая ссылки на остальные PR; затем закройте другие PR (которые теперь полностью перекрыты).
PR считается простроченным, если оно не модифицировалось в течение более полугода. При обработке просроченных PR испольщуйте следующую процедуру:
Если PR достаточно подробна, попытайтесь воспроизвести проблему в дереве -CURRENT и -STABLE. Если вам это удалось, напишите отклик, описывающий ваши изыскания и попытайтесь найти кого-то, кому эту проблему можно назначить. Если это подходит, измените состояние на ``analyzed''.
Если PR описывает проблему, которая, как вы знаете, является результатом неправильного использования (некорректная настройка или что-то ещё), напишите отклик, в котором опишите, что автор исходного сделал не так, а затем закройте PR с описанием ``User error'' или ``Configuration error''.
Если в PR описывается ошибка, которая, как вы знаете, была исправлена как в -CURRENT, так и -STABLE, закройте его с сообшением, указывающим на даты исправлений в каждой ветке.
Если PR описывает ошибку, которая, по вашим данным, была исправлена в -CURRENT, но не в -STABLE, попытайтесь выяснить, когда человек, исправивший эту ошибку, планирует выполнить MFC, либо попробуйте найти для этого кого-то ещё (может, это будете вы сами?). Измените состояние сообщения на ``feedback'' и переназначьте его кому-либо, кто будет делать MFC.
В остальных случаях запросите у автора исходного сообщения подтверждения того, что проблема всё ещё присутствует в новых версиях. Если автор не отвечает в течение месяца, закройте PR с пометкой ``Feedback timeout''.
GNATS требовательно подходит к формату присылаемых сообщений об ошибках. Вот почему много PR заканчивают жизнь в состоянии ``misfiled'', если посылающий забыл заполнить поле или ввёл неправильные данные в некоторые поля PR. Этот раздел поможет предоставить основной объём необходимых подробностей для разработчиков FreeBSD, который может помочь им закрыть или повторно заполнить эти PR.
Если система GNATS не может понять, что делать с сообщением об ошибке, которое достигло базы данных, она определяет gnats-admin в качестве ответственного за PR и помещает сообщение в категорию pending. Теперь это PR в состоянии ``misfiled'' и оно не будет появляться в списках сообщений об ошибках, если только кто-то специально не запросит перечень всех незаполненных PR. Если у вас есть доступ к машинам в кластере FreeBSD, можете воспользоваться командой query-pr для просмотра списка PR, которые были некорректно сформированы:
% query-pr -x -q -r gnats-admin 52458 gnats-ad open serious medium Re: declaration clash f 52510 gnats-ad open serious medium Re: lots of sockets in 52557 gnats-ad open serious medium 52570 gnats-ad open serious medium Jigdo maintainer update
Как правило, PR вроде перечисленных выше оказываются незаполненными по одной из следующих причин:
Отклик на существующее PR, посланный по электронной почте, имеет неверный формат заголовка Subject:.
При заполнении шаблона send-pr(1) посылающий забыл указать правильное значение для категории или класса PR.
Это не реальное PR, а какое-то случайное сообщение, посланное на адрес <bug-followup@freebsd.org>
или <freebsd-gnats-submit@freebsd.org>
.
К наиболее массовой категории неправильно оформленных PR относятся те, у которых неверна тема письма, и именно они на самом деле требует самых больших усилий от разработчиков. Это не настоящие PR, описывающие отдельные ошибки. Когда по одному из адресов, который ``прослушивает'' GNATS на предмет обработки входящих сообщений, принимается ответ на существуещее PR, то тема ответа должна быть всегда в таком виде:
Subject: Re: category/number: старая тема
Большинство почтовых программ, когда вы отвечаете на оригинальное почтовое сообщение с PR, будут добавлять часть ``Re: ''. Часть ``category/number: '' является соглашением, специфичным для GNATS, которое вы должны выполнить, вручную поставив его в тему письма с откликом.
Все разработчики FreeBSD, имеющие прямой доступ к базе данных GNATS, могут регулярно
проверять наличие таких PR и перемещать заинтересовавшие их в отклики к оригинальному PR
(послав корректный отклик на сообщение об ошиюке на адрес <bug-followup@freebsd.org>
). Затем
неправильно оформленное PR может быть закрыто с примерно таким пояснением:
Your problem report was misfiled. Please use the format "Subject: category/number: original text" when following up to older, existing PRs. I've added the relevant bits from the body of this PR to kern/12345
Поиск по команде query-pr оригинального PR, на которое отвечает неправильно оформленный отклик, легко выполняется следующим образом:
% query-pr -q -y "some text"
После того, как вы обнаружили оригинальное PR и неправильно оформленный отклик на него, воспользуйтесь параметром -F команды query-pr для сохранения полного текста всех относящихся к делу PR в файле формата почтового ящика UNIX®, то есть:
% query-pr -F 52458 52474 > mbox
Теперь вы можете использовать любую почтовую программу для просмотра всех PR, которые вы сохранили в файле mbox. Скопируйте текст всех неверно оформленных PR в отклике на оригинальное сообщение о проблеме, и обязательно включите правильный заголовок Subject:. После этого закройте неверно оформленное PR. Когда вы закрываете такие PR, помните, что автор получает оповещение по почте о том, что его PR сменило состояние на ``closed''. В пояснении обязательно описывайте в подробностях, почему это состояние изменилось. Обычно подойдёт примерно следующий текст:
Followup to ports/45364 misfiled as a new PR. This was misfiled because the subject didn't have the format: Re: ports/45364: ...
В этом случае автор неправильно оформленного PR будет знать, чего необходимо избегать при отправке отклика на существующее PR.
Ко второму типу неправильно оформленных PR обычно относят те, что являются результатом забывчивости авторов, которые не заполнили все необходимые поля при написании первоначального PR.
Отсутствие или ошибочное задание полей ``category'' или ``class'' может привести к появлению некорректного сообщения. Разработчики могут использовать edit-pr(1) для смены значений категории или класса этих неправильно оформленных PR на более подходящие и сохранить PR.
Другой распространённой причиной появления неправильно оформленных PR являются вопросы форматирования, квотирование, изменение или удаление шаблона send-pr, как по вине пользователя, редактирующего шаблон, так и почтовых программ, которые проделывают странные вещи с обычными текстовыми сообщениями. Это происходит не постоянно, и может быть исправлено программой edit-pr; это требует некоторых усилий со стороны разработчика, которые перевводит PR, однако в большинстве случаев это можно сделать относительно легко.
Иногда пользователь желает сообщить об ошибке и посылает GNATS по электронной почте
обычное сообщение. Скрипты GNATS работает с сообщениями об ошибках, которые форматированы
при помощи шаблона send-pr(1). Они не
могут обрабатывать любые сообщения электронной почты. Вот почему сообщения об ошибках,
посылаемые на адрес <freebsd-gnats-submit@freebsd.org>
,
должны быть оформлены по шаблону команды send-pr, хотя сообщения
по электронной почте можно послать на Список
рассылки FreeBSD, посвящённый сообщениям о проблемах.
Разработчики, которые видят PR, выглядящие так, будто они должны были быть посланы в адрес freebsd-bugs или какого-то другого списка рассылки, должны закрыть PR, проинформировав его автора в протоколе изменения состояния о причинах, по которых это не является настоящим PR и куда следует посылать сообщения.
Электронный адрес, который использует GNATS для приёма поступающих PR, опубликован в документации к FreeBSD, объявлялся и указан на Web-сайте. Это значит, что спамеры его увидели. Каждый день несколько рекламных сообщений поступает в GNATS, которая относит их к категории ``pending'', пока кто-нибудь их не пересмотрит. Закрытие любого из таких сообщений при помощи edit-pr(1) весьма раздражает, потому что GNATS отвечает автору, а сейчас адрес отправителя спам-почты никогда не бывает настоящим. Для каждого закрытого PR будут приходить сообщения о невозможности доставки.
На данный момент с установкой некоторых фильтров против спама, проверяющих все добавления в базу данных GNATS, количество спама, достигающего состояния ``pending'', весьма мало.
Все разработчики, имеющие доступ к машинам кластера FreeBSD.org, приглашаются к проверке неправильно оформленных PR и немедленному закрытию тех, что являются почтовым спамом. Когда вы закрываете такое PR, хорошо бы заодно указать в качестве категории ``junk''. Ненужные PR не сохраняются, так что перенос почтового спама в эту категорию ясно указывает на то, что мы не собираемся его сохранять или тратить на него дисковое пространство.
Это перечень ресурсов, относящихся к качественному написанию и обработке сообщений об ошибках. Несомненно, этот список не является полным.
Как писать Сообщения об ошибках FreeBSD--руководство для авторов PR.
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам связанными с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам связанным с русским переводом документации, пишите <frdp@FreeBSD.org.ua>.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |