Это архивная статья
Как мы уже говорили (и не
раз),
одна из серьезных техническиx проблем, стоящих перед коммьюнити Fedora,
это наша строгая политика насчет обновлений GCC - любое большое
обновление ведет за собой пересборку всего дерева пакетов. Повторимся,
это очень непросто - с первой попытки порой не получается скомпилировать
около 10% пакетов, и мэйнтейнеры самостоятельно или с помощью
разработчиков upstream пишут патчи. Между прочим, это порядка тысячи
патчей с каждой пересборки, отправленных в upstream проекты, в полном
согласии с другим нашим правилом - "уведомлять проекты о том, какие
изменения мы вносим". Некоторые маргинальные дистрибутивы пропускают
этот этап, считая, что достаточно увеличить номер версии GCC в
дистроспецифичном "рецепте сборки", чтоб публично объявить, что "в нашем
настраиваемом под себя дистрибутиве уже давно самый свежий GCC, а вы
только его включаете". Наоборот, включение нового GCC (да и вообще
нового ПО) в Fedora происходит куда более технически грамотно и гораздо
более основательно.
Очень мало только просто собрать сам GCC, мало и пересобрать все ПО с
новым GCC - надо еще исправить проблемы, которые возникнут. Тут все
зависит от квалификации коммьюнити. В нашем сообществе, в отличие от
маргинальных дистрибутивов, люди крайне высокой квалификации (и этой
магией они с удовольствием поделятся с вами - приходите к нам, на темную
сторону Силы! бросайте ваши уютные самосборные дистрибутивы - у нас есть
печеньки!) - ключевые участники основных Open Source проектов, люди с
богатым опытом разработки, и просто способная молодежь, которая запросто
переписывает аудио- и init-подсистемы. Некоторые ошибки исправляются
легко, небольшими
патчами,
что под силу и небольшому коммьюнити вокруг самосборного дистрибутива из
нерадивых студентов, у которых полно свободного времени, а некоторые - с
большим трудом. Что бывает, когда баг требует квалифицированного
вмешательства признанных специалистов мы сейчас расскажем.
Пользователи Fedora на PowerPC / PPC64 столкнулись с неприятной
проблемой - Firefox, начиная с версии 10, быстро зависает на первой же
странице (или даже при старте, если у вас много
дополнений). О проблеме нам
сообщил в середине апреля 2012 года инженер IBM и участник Fedora PPC,
Gustavo Luiz
Duarte (ранее
бывший участником коммьюнити Ubuntu). Заявку тут же подобрал мэйнтейнер
продуктов Mozilla Foundation в Fedora Martin
Stránský и отправил в MoFo
bugzilla. Почти
сразу там указали на возможную проблему и предложили патч. Несмотря на
то, что патч действительно решил одну из ошибок, она оказалась не
относящейся к обсуждаемой проблеме.
Спустя еще неделю разработчик Mozilla, Terrence
Cole сделал предположение, что ошибка
происходит в модуле регулярных выражений. После подтверждения от Martin,
что ошибка имеет место лишь на Fedora 17 (на тот момент еще не
вышедшая), Gustavo определил, что она возникает лишь в Firefox и
Xulrunner, скомпилированных GCC 4.7.0, причем на тот момент, ситуация не
изменялась, если использовать последний снапшот GCC (т.е. она не была
исправлена). Еще через пару дней, Gustavo сумел создать минимальный
test-case, приводящий к ошибке и поиграв с опциями компилятора
определил, что если использовать опцию gcc --disable-optimize, то как
минимум проходятся unit-тесты. Стало понятно, что проблема определенно в
новом GCC, но где именно?
Прошла еще неделя, и Gustavo с коллегами по IBM сумел создать
минимальный
патч,
который позволяет обойти проблему. С этим уже можно обращаться в
багтрекер GCC, что и было сделано в тот же
день инженером
IBM William J.
Schmidt. О
причине ошибки почти ту же сделал предположение инженер Cavium Networks
Andrew Pinski, которое
оказалось правильным. Незамедлительно, инженер SuSE/Novell Richard
Guenther предложил
патч, который
проверил William и подтвердил, что он исправляет ошибку. Патч был
добавлен в master-бранч на следующий день, а бэкпортирован в ветку 4.7.0
спустя еще
неделю.
Одновременно с приемом патча в ветку gcc 4.7.0 был успешно пересобран
для платформ
PowerPC/PPC64
Xulrunner с патчем из bugzilla MoFo, и Firefox наконец-то заработал.
Это, на самом деле, типичная история для нашего сообщества. По
результатам многочисленных сборок и разборок были закрыты две ошибки в
двух разных известных Open Source проектах и предложен один временный
workaround, что пойдет на пользу всем дистрибутивам, а не только Fedora.
Конечно, у нас еще много незакрытых ошибок (нас все еще слишком мало,
чтоб реагировать оперативно на все проблемы, плюс на некоторые проблемы
мы вообще не можем прореагировать, в том числе и из-за несовершенства
нашей инфраструктуры, работа над улучшением которой
ведется),
конечно, вы можете легко нагуглить и печальные истории о том, как заявки
в багзилле не закрываются месяцами и даже годами, но мы и исправляем
огромное количество непростых ошибок. Нас действительно порой называют
бета-тестерами, пытаясь этим уязвить и почему-то полагая, что сообщать и
исправлять ошибки в открытом ПО, это что-то постыдное и оскорбительное
(на наш же взгляд, бета-тестеров надо, как минимум, благодарить). Но
если уж мы и правда тестеры, то всего опенсорса, в том числе и вашего
дистрибутива. То, с чем столкнулись мы, скорее всего вы больше не
увидите, получая спустя полгода-год-полтора отлаженное ПО.
А в коммьюнити вашего дистрибутива какие бывают истории? Ну, конечно,
если ваш главарь публично сообщает, что ваше коммьюнити не интересуется
низкоуровневой разработкой (все, кроме нескучных обоев и дизайна
окошек), то может возникают какие-нибудь загадки при переносе кнопок
слева направо или справа налево?