ДЛЯ НАЧАЛА: ЖИВЫЕ

- Knoppix -
Линукс за пять минут
- Puppy Linux -
Хороший друг


ДЛЯ ДЕЛА: ПРОФИ

- Debian -
Он такой один
- Linux Mint -
С родинкой на щеке!
- CentOS -
Копейка рубль бережёт!
- Fedora -
По следам Red Hat
- Ubuntu Linux -
Мы одной крови!
- Mageia -
Красота и удобства
- openSUSE -
Настоящее немецкое качество
- Slackware -
Линукс из кубиков
- ALT Linux -
Что русскому хорошо





ДЛЯ ДЕЛА: РОЛЛЫ

- ArchLinux -
Гениальное - просто!
- PCLinuxOS -
Просто линукс
- Aptosid -
Почувствуй силу!


ДЛЯ ДЕЛА: СОБЕРИ САМ

- Gentoo -
Каждому своё
- LinuxFromScratch -
Линукс с нуля


ДЛЯ ДЕЛА: ЛЁГКИЕ

- DeLiCate -
Старость в радость!
- SLAX -
Тысяча и один модуль


ЗАЩИТА

- OpenWall -
Не стучите, закрыто!
- Kali -
Вам, хакеры!


ПРИЛОЖЕНИЯ

- Planet CCRMA -
Работа со звуком
- VegaStrike -
Каждому по планете!


ЭКСПЕРИМЕНТ

- коЛинуксы -
Не выходя из Виндоус
- GoboLinux -
Очевидно и вероятно
- ReactOS -
Освободите Виндоус!


РОДНЯ

- BSD-семейство -
На плечах гигантов
- OpenIndiana -
До звёзд рукой подать


АРХИВ (2003-2016)
ФОРУМ




НАШИ ПРОЕКТЫ

MATRIX GL
ПОЛЕЗНЫЕ СОВЕТЫ
ПИНГВИН В КАРМАНЕ
ЗАКЛАДКИ
СТАТЬИ
КОНТАКТЫ


ПОМОЧЬ






Личный архив ЕЗ

Забытые баги и закон Линуса

В мире свободного софта есть выведенная опытным путём закономерность, называемая «закон Линуса». Сформулировал её ещё в конце 90-х годов Эрик Реймонд в своём знаменитом труде «Собор и базар». С тех пор было предложено несколько вариантов формулировок, но суть у всех общая: при достаточном количестве глаз будет выявлена любая ошибка!

Логика очевидна. В сообществе open source программы пишут и анализируют в основном энтузиасты. Им не платят, их могут даже не похвалить, они трудятся ради каких-то своих целей — часто ради простого удовольствия от участия в общем большом полезном деле. Зато в отличие от компаний, эксплуатирующих «программистов за деньги», здесь авторов может быть и бывает намного больше. Такие проекты как ядро Linux или среда KDE, например, заслуженно называют одними из самых крупных софтверных проектов всех времён и народов: там миллионы строк кода, написанные десятками тысяч авторов. Именно это позволяет надеяться, что свободный софт окажется более качественным.

Но тут-то и скрывается парадокс, на который время от времени все мы натыкаемся. Случается так, что ошибки в свободном софте дремлют годами, переходя из версии в версию никем не замеченные. Вспомните баг Heartbleed в библиотеке OpenSSL, вызвавший переполох несколько лет назад: он ждал своего обнаружения почти два года и успел за это время проникнуть в сотни продуктов, которые данную библиотеку использовали. А ведь бывают случаи ещё печальней. Пример: исправленная на днях ошибка в одной из программ уже упомянутого пакета KDE — ошибка, которая ждала своего исправления без малого тринадцать лет! Хуже того, все эти тринадцать лет о ней было известно!! Что же сталось с хвалёным законом Линуса?

Kate: простой, но весьма функциональный текстовый редактор, и пакет KDE версии 3.1. Примерно так выглядел рабочий стол линуксоида, использовавшего KDE, в 2003-м году.

История этого бага замечательна с какой стороны за неё ни возьмись. В 2003-м году один из пользователей KDE столкнулся с неприятной, хоть и не фатальной, ошибкой в текстовом редакторе Kate (входит в комплект KDE с 2001-го). Есть открыть в нём два документа и переключаться между ними, иконки на панели инструментов начинали скакать, непредсказуемо перемещаться с места на место. С самого начала было понятно, что это именно ошибка, а не «фича»: никому не было нужды делать такое специально. Так что 22 сентября 2003-го года некто Карлос Вольс сообщил о ней через автоматическую службу приёма багов KDE — и ей был присвоен номер 64754.

Учитывая лёгкость воспроизведения ошибки (получалось, правда, не у всех, но у многих) и её очевидный характер, можно было ожидать, что пройдут максимум несколько недель и кто-нибудь её исправит. Однако шли недели и месяцы, а патч так и не появлялся. Скажу прямо: читать сегодня багрепорты, навешанные на сообщение Карлоса за последующие годы, без смеха или слёз трудно. Смеяться или плакать — зависит от того, насколько важную роль лично в вашей жизни и работе играет Kate. Те, кто использовал его лишь эпизодически, просто поругивались: мол, почему этот глупый баг всё ещё не закрыт? Те же, кто сидел в Kate постоянно, были уже на грани нервного срыва: играть в кошки-мышки с иконками на панели — удовольствие то ещё!

Так это проявляется в деле. Как видите, ничего страшного, только скачущие иконки. Как кто-то грустно пошутил несколько лет спустя: уж лучше бы исчезали файлы, тогда по крайней мере ошибкой бы занялись!

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

Событие это вызвало резонанс далеко за пределами сообщества KDE — и ничего удивительного! Представьте только, каким был мир в 2003-м, когда баг номер 64754 был впервые обнаружен. Линуксовое ядро носило номер 2.4, Windows XP была самой популярной системой на персоналках, не было ни «Айфонов», ни «Андроида», ни смартфонов, ни планшеток, ни тач-интерфейса в современном понимании, Wi-Fi был диковинкой, мышь Apple имела всего одну кнопку, Facebook, Twitter и Gmail ещё только предстояло придумать и запустить. А ошибка в Kate уже сидела и перебиралась из версии в версию. Так где же был закон Линуса? И не фикция ли он вообще, не выдуман ли теоретиками, не существует ли только в воображении, не имея ничего общего с действительным положением вещей?

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

А вот энтузиасты, разрабатывающие open source-софт, руководствуются в значительной степени личным интересом: им никто не указывает, не может приказать, какой именно участок кода взять для изучения или для доработки. Именно так и обнаруживаются ошибки там, где вроде бы всё уже давно проверено.

Kate сегодня.

Но есть и другая оговорка, сделанная несколькими исследователями в последние годы: «продолжительность жизни» среднестатистического бага, конечно, зависит от количества глаз, которые устремлены на данную программу, однако зависимость эта не прямо пропорциональная.

Пока разработчиков сравнительно мало (меньше 10), каждый новый человек действительно значительно ускоряет темп выявления ошибок. Но когда людей, работающих над программой, становится намного больше — сотни или тысячи — эффект от «добавления новой пары глаз» уже не так силён. В принципе, это можно объяснить логически. Энтузиасты ведь — не слаженная команда с однородным составом: у них разная степень подготовки, разные интересы, разные цели.

Поэтому ошибки, подобные багу номер 64754, время от времени «случаются». Вот, например, очень похожая история из конкурирующего проекта GNOME. Да и упомянутый выше Heartbleed сюда тоже вписывается. Чем менее интересен участок кода, скрывающий ошибку, тем меньше шансов, что им займутся даже участники open source-сообщества. Но это не значит, что закон Линуса не работает. По-прежнему, чем больше глаз — тем лучше для всех нас!

--------------------------------------------

Этот текст всегда доступен по адресу linux.su/260616.shtml


При частичной или полной перепечатке, переводе, переработке материалов сайта ссылка на Knoppix.ru обязательна.
(c) Knoppix.ru 2003 - 2016