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 предоставляет стандартный жизненный цикл ошибки:
- Открытие (New) — пользователь создаёт отчёт.
- Назначение (Assigned) — администратор или автоматическое правило назначает ответственного разработчика.
- В работе (In Progress) — разработчик подтверждает, что работает над исправлением.
- Исправлено (Resolved) — ошибка исправлена, но не проверена.
- Закрыто (Closed) — исправление подтверждено тестировщиком или пользователем.
- Переоткрыто (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 →


