Открыть сервис

Bugzilla

Bugzilla — это веб-ориентированная система отслеживания ошибок (bug tracking system) и управления проектами, разработанная и поддерживаемая корпорацией Mozilla Foundation. Она предназначена для регистрации, классификации, назначения, отслеживания статуса и закрытия ошибок (дефектов) в программном обеспечении, а также для управления запросами на улучшение (enhancement) и задачами. Bugzilla является одним из старейших и наиболее известных инструментов с открытым исходным кодом в своей категории, распространяемым под лицензией Mozilla Public License (MPL) 2.0.

История

Создание и ранние годы

Bugzilla была создана в 1998 году Терри Вайсманом (Terry Weissman) из компании Netscape Communications. Изначально система разрабатывалась на языке Perl с использованием базы данных MySQL для внутренних нужд проекта Netscape, который впоследствии стал основой для Mozilla Suite. Первая версия была запущена в эксплуатацию 26 августа 1998 года. В 1999 году, после открытия исходного кода Netscape, Bugzilla была выпущена как самостоятельный проект с открытым исходным кодом.

Развитие под эгидой Mozilla

После основания Mozilla Foundation в 2003 году Bugzilla стала одним из ключевых инструментов инфраструктуры организации. В 2007 году вышла версия 3.0, которая представила поддержку модульной архитектуры, что позволило сторонним разработчикам создавать расширения. Версия 4.0 (2011 год) добавила поддержку JSON-RPC и XML-RPC для интеграции с другими системами. В 2015 году вышла версия 5.0, которая перешла на использование базы данных PostgreSQL в качестве основной (наряду с MySQL и MariaDB) и внедрила систему шаблонов Template Toolkit.

Текущее состояние

На 2024 год последней стабильной версией является Bugzilla 5.2.2 (выпущена в 2024 году). Проект продолжает поддерживаться сообществом разработчиков, хотя его активность снизилась по сравнению с пиком популярности в 2000-х годах. Bugzilla остаётся эталонной системой для многих организаций, особенно в сфере open-source, несмотря на появление более современных альтернатив.

Архитектура и технические характеристики

Серверная часть

Bugzilla написана на языке Perl (версия 5.10 и выше) и использует веб-сервер Apache или Nginx в качестве HTTP-интерфейса. В качестве базы данных поддерживаются:

  • MySQL (начиная с версии 5.0)
  • MariaDB (начиная с версии 5.0)
  • PostgreSQL (начиная с версии 5.0)

Система использует CGI-скрипты для обработки запросов, хотя в последних версиях добавлена поддержка mod_perl для повышения производительности. Для кэширования данных применяется Memcached.

Клиентская часть

Пользовательский интерфейс Bugzilla представляет собой набор HTML-страниц, генерируемых сервером. В версии 5.0 был внедрён адаптивный дизайн на основе CSS-фреймворка Bootstrap. Система поддерживает работу через командную строку (CLI) с помощью утилиты bugzilla-cli, а также через REST API (начиная с версии 5.0).

Безопасность

Bugzilla реализует многоуровневую систему разграничения доступа:

  • Анонимные пользователи могут только просматривать открытые отчёты.
  • Зарегистрированные пользователи могут создавать и редактировать свои отчёты.
  • Администраторы имеют полный доступ к настройкам, пользователям и группам.
  • Поддерживается интеграция с LDAP, Active Directory и RADIUS для аутентификации.

Основные функции

Отслеживание ошибок

Bugzilla предоставляет стандартный жизненный цикл ошибки:

  1. Открытие (New) — пользователь создаёт отчёт.
  2. Назначение (Assigned) — администратор или автоматическое правило назначает ответственного разработчика.
  3. В работе (In Progress) — разработчик подтверждает, что работает над исправлением.
  4. Исправлено (Resolved) — ошибка исправлена, но не проверена.
  5. Закрыто (Closed) — исправление подтверждено тестировщиком или пользователем.
  6. Переоткрыто (Reopened) — если ошибка проявляется снова.

Классификация и поиск

Каждая ошибка имеет уникальный номер (bug ID) и набор полей:

  • Продукт (Product) — название проекта или модуля.
  • Компонент (Component) — подсистема внутри продукта.
  • Версия (Version) — версия программного обеспечения, в которой обнаружена ошибка.
  • Серьёзность (Severity) — от «критической» (blocker) до «незначительной» (trivial).
  • Приоритет (Priority) — от P1 (наивысший) до P5 (низший).
  • Статус (Status) — текущий этап жизненного цикла.
  • Платформа (Platform)операционная система и аппаратное обеспечение.

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

Уведомления и коммуникация

Система автоматически отправляет электронные письма при изменении статуса, добавлении комментариев или назначении ответственного. Пользователи могут подписываться на отдельные ошибки или целые продукты. Встроенная система чата (IRC) и форумов отсутствует, но возможна интеграция с внешними сервисами через API.

Управление версиями и релизами

Bugzilla позволяет привязывать ошибки к конкретным версиям продукта и отслеживать, в каких релизах исправление будет включено. Поддерживается создание мильных камней (milestones) и целевых дат (target milestones).

Применение

Использование в проектах Mozilla

Основным пользователем Bugzilla является сама Mozilla Foundation. Система используется для отслеживания ошибок в Firefox, Thunderbird, Rust, Servo и других проектах. На момент 2024 года в базе данных Mozilla Bugzilla содержится более 2 миллионов отчётов об ошибках.

Использование в других проектах и организациях

Bugzilla широко применяется в open-source сообществах:

  • Apache Software Foundation — для проектов Apache HTTP Server, Tomcat, Hadoop.
  • GNOME Foundation — для отслеживания ошибок в GNOME Desktop.
  • KDE — для проектов KDE Plasma и KDE Frameworks.
  • Red Hat — для продуктов Red Hat Enterprise Linux и Fedora.
  • FreeBSD — для операционной системы FreeBSD.
  • Linux Kernel — в ограниченном объёме, через интеграцию с Bugzilla на kernel.org.

В коммерческом секторе Bugzilla используется в компаниях, разрабатывающих программное обеспечение, особенно в тех, которые предпочитают open-source решения. Однако с 2010-х годов её популярность снизилась из-за появления более современных систем, таких как Jira, GitHub Issues и GitLab.

Критика и ограничения

Устаревший интерфейс

Пользовательский интерфейс Bugzilla считается устаревшим по сравнению с современными веб-приложениями. Отсутствие встроенной поддержки drag-and-drop, интерактивных диаграмм и real-time обновлений снижает удобство работы.

Сложность настройки

Установка и конфигурация Bugzilla требуют определённых знаний Perl, Apache и баз данных. В отличие от облачных решений (например, GitHub Issues), Bugzilla требует самостоятельного развёртывания и поддержки сервера.

Отсутствие интеграции с Git

В отличие от современных систем, Bugzilla не имеет встроенной интеграции с системами контроля версий (Git, Mercurial). Связь между коммитами и ошибками осуществляется через ручное добавление ссылок или через сторонние плагины.

Производительность

При больших объёмах данных (более 100 000 отчётов) производительность Bugzilla может снижаться без оптимизации базы данных и кэширования. Система не предназначена для распределённой работы с несколькими серверами.

Интересные факты

  • Название «Bugzilla» является отсылкой к персонажу Годзилле (Godzilla) — монстру, который «уничтожает» ошибки.
  • Исходный код Bugzilla содержит более 500 000 строк на Perl.
  • Bugzilla стала первой системой отслеживания ошибок, которая внедрила концепцию «прикреплённых файлов» (attachments) для ошибок.
  • В 2004 году Bugzilla была признана лучшим инструментом для управления проектами по версии журнала InfoWorld.

Источники

  • Официальная документация Bugzilla (bugzilla.org/docs)
  • История проекта Bugzilla (bugzilla.org/about)
  • Статья «Bugzilla: The Evolution of Bug Tracking» в журнале Linux Journal, 2012 год
  • Интервью с Терри Вайсманом на сайте Mozilla Foundation, 2018 год
  • Сравнительный обзор систем отслеживания ошибок на сайте opensource.com, 2020 год

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →