Согласно Эрику Рэймонду, закон Линуса гласит, что «при достаточном количестве глаз баги выплывают на поверхность» (англ.“given enough eyeballs, all bugs are shallow”); или, более формально, «при достаточном количестве бета-тестеров и сотрудников почти любая проблема будет быстро обнаружена и окажется для кого-то очевидной». Рэймонд сформулировал это правило в четвёртой части своего эссе «Собор и Базар».
Критика
Некоторые исследователи не согласны с правилом «достаточного количества глаз». Например, Роберт Гласс оспаривает закон Линуса и считает, что участие более двух-четырёх разработчиков в поисках багов в участке кода не повышает результативность этого поиска[1]. Майкл Хауард и Дэвид ЛеБланк утверждают, что «достаточное количество глаз» всё равно могут не заметить баг, если они недостаточно знакомы с данным участком кода; и что открытость исходного кода не гарантирует безопасность ПО, поскольку среди разработчиков, читающих код, лишь немногие умеют замечать уязвимости[2].
Следует заметить, что сам Эрик Рэймонд не согласен с популярными упрощёнными трактовками своей формулировки закона Линуса[3].
Закон Линуса согласно Линусу
Сам Линус Торвальдс под законом Линуса имеет в виду свои размышления о причинах развития человеческого общества, которые он изначально опубликовал в автобиографии Just for Fun[4]. В предисловии к книге Пекки Химанена «Хакерская этика и дух информационной эры» (The Hacker Ethic and the Spirit of the Information Age), Торвальдс предложил более короткую формулировку закона:
Закон Линуса гласит, что все наши мотивации можно разделить на три основные категории. И что более важно, прогресс означает прохождение через те же три категории, как «фазы» в процессе эволюции, то есть перемещение из категории в следующую категорию. Эти категории, по порядку — «выживание», «социальная жизнь» и «развлечение»[5].
Торвальдс, в одном из своих сообщений в список рассылкиGNOME, написал, что «закон Линуса (№ 76 из 271)» — «не следует писать, что у вашей программы есть какая-то опция, если её невозможно изменить через пользовательский интерфейс»[6].
«Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда»[7].
Примечания
↑Robert L. Glass.About the Life Cycle // Facts and Fallacies of Software Engineering. — Addison-Wesley, 2002. — С. 174—5. — 195 с. — ISBN 0321117425.