В разработке программного обеспечения закон Линуса — это утверждение, что «при достаточном количестве глаз все ошибки неглубоки». Закон был сформулирован Эриком С. Рэймондом в его эссе и книге «Собор и базар» (1999) и назван в честь Линуса Торвальдса . [1] [2]
Более формальное утверждение звучит так: «При наличии достаточно большой базы бета-тестеров и соразработчиков почти каждая проблема будет быстро описана, а исправление станет очевидным для кого-то». Представление кода нескольким разработчикам с целью достижения консенсуса относительно его принятия — это простая форма обзора программного обеспечения . Исследователи и практики неоднократно демонстрировали эффективность процессов обзора при поиске ошибок и проблем безопасности. [3]
В книге «Факты и заблуждения о программной инженерии» Роберт Гласс называет этот закон «мантрой» движения за открытый исходный код , но называет его заблуждением из-за отсутствия подтверждающих доказательств и потому, что исследования показали, что скорость обнаружения дополнительных ошибок не линейно зависит от количества рецензентов; скорее, существует небольшое максимальное количество полезных рецензентов, от двух до четырех, а дополнительные рецензенты сверх этого числа обнаруживают ошибки с гораздо меньшей скоростью. [4] Хотя приверженцы закрытого исходного кода также продвигают строгий, независимый анализ кода во время разработки программного проекта, они сосредоточены на глубоком анализе несколькими людьми, а не в первую очередь на количестве «зрительных яблок». [5]
Сохранение ошибки безопасности Heartbleed в критическом фрагменте кода в течение двух лет рассматривалось как опровержение изречения Рэймонда. [6] [7] [8] [9] Ларри Сельцер подозревает, что доступность исходного кода может привести к тому, что некоторые разработчики и исследователи будут проводить менее обширные тесты, чем они бы делали с закрытым исходным кодом, что облегчает сохранение ошибок. [9] В 2015 году исполнительный директор Linux Foundation Джим Землин утверждал, что сложность современного программного обеспечения возросла до такого уровня, что для повышения его безопасности желательно выделение определенных ресурсов. Относительно некоторых из крупнейших в мире уязвимостей программного обеспечения с открытым исходным кодом в 2014 году он говорит: «В этих случаях глаза на самом деле не смотрели». [8] Масштабные эксперименты или рецензируемые опросы для проверки того, насколько хорошо мантра работает на практике, не проводились. [10]
Эмпирическое подтверждение справедливости закона Линуса [11] было получено путем сравнения популярных и непопулярных проектов одной и той же организации. Популярные проекты — это проекты с верхними 5% звезд GitHub (7481 звезда или больше). Выявление ошибок измерялось с использованием вероятности корректирующего коммита, отношения коммитов, определенных как связанные с исправлением ошибок. Анализ показал, что популярные проекты имели более высокий коэффициент исправления ошибок (например, популярные проекты Google имели на 27% более высокий уровень исправления ошибок, чем менее популярные проекты Google). Поскольку маловероятно, что Google снизил свои стандарты качества кода в более популярных проектах, это является показателем возросшей эффективности обнаружения ошибок в популярных проектах.