закон Линуса


В разработке программного обеспечения законом Линуса является утверждение, что «при наличии достаточного количества глазных яблок все ошибки неглубоки».

Закон был сформулирован Эриком С. Рэймондом в его эссе и книге «Собор и базар » (1999) и назван в честь Линуса Торвальдса . [1] [2]

Более формальное утверждение звучит так: «При наличии достаточно большой базы бета-тестеров и соразработчиков почти каждая проблема будет быстро охарактеризована, а решение для кого-то очевидно». Представление кода нескольким разработчикам с целью достижения консенсуса относительно его приемлемости — это простая форма рецензирования программного обеспечения . Исследователи и практики неоднократно демонстрировали эффективность проверки процессов в поиске ошибок и проблем с безопасностью. [3]

В книге « Факты и заблуждения о программной инженерии» Роберт Гласс называет этот закон «мантрой» движения за открытый исходный код , но называет его заблуждением из-за отсутствия подтверждающих доказательств и потому, что исследования показали, что скорость появления дополнительных ошибок непокрытые не масштабируются линейно с количеством рецензентов; скорее, существует небольшое максимальное количество полезных рецензентов, от двух до четырех, и дополнительные рецензенты сверх этого числа обнаруживают ошибки с гораздо меньшей скоростью. [4] В то время как специалисты по закрытому исходному коду также продвигают строгий независимый анализ кода во время разработки программного проекта, они сосредотачиваются на углубленном просмотре несколькими, а не в первую очередь количеством «глазных яблок». [5]

Сохранение ошибки безопасности Heartbleed в критическом фрагменте кода в течение двух лет рассматривалось как опровержение изречения Рэймонда. [6] [7] [8] [9] Ларри Зельцер подозревает, что доступность исходного кода может привести к тому, что некоторые разработчики и исследователи будут проводить менее обширные тесты, чем в случае с программным обеспечением с закрытым исходным кодом, что облегчает сохранение ошибок. [9] В 2015 году исполнительный директор Linux Foundation Джим Землин утверждал, что сложность современного программного обеспечения возросла до такого уровня, что желательно специальное выделение ресурсов для повышения его безопасности. О некоторых крупнейших глобальных уязвимостях программного обеспечения с открытым исходным кодом в 2014 году, говорит он, «в этих случаях глазные яблоки на самом деле не смотрели». [8] Крупномасштабные эксперименты или рецензируемые опросы для проверки того, насколько хорошо мантра действует на практике, не проводились.

Эмпирическое подтверждение справедливости закона Линуса [10] было получено путем сравнения популярных и непопулярных проектов одной и той же организации. Популярные проекты — это проекты, набравшие 5% лучших звезд GitHub (7481 звезда и более). Идентификация ошибок измерялась с использованием корректирующей вероятности фиксации, отношения коммитов, определенных как связанные с исправлением ошибок. Анализ показал, что в популярных проектах доля исправлений ошибок была выше (например, в популярных проектах Google доля исправлений ошибок была на 27% выше, чем в менее популярных проектах Google). Поскольку маловероятно, что Google понизил стандарты качества кода в более популярных проектах, это свидетельствует о повышении эффективности обнаружения ошибок в популярных проектах.