En el desarrollo de software , la ley de Linus es la afirmación de que "si se observan suficientes errores, todos son superficiales". La ley fue formulada por Eric S. Raymond en su ensayo y libro La catedral y el bazar (1999), y recibió su nombre en honor a Linus Torvalds . [1] [2]
Una declaración más formal es: "Dada una base de probadores beta y codesarrolladores lo suficientemente grande , casi todos los problemas se caracterizarán rápidamente y la solución será obvia para alguien". Presentar el código a múltiples desarrolladores con el propósito de alcanzar un consenso sobre su aceptación es una forma simple de revisión de software . Los investigadores y los profesionales han demostrado repetidamente la eficacia de los procesos de revisión para encontrar errores y problemas de seguridad. [3]
En Facts and Fallacies about Software Engineering, Robert Glass se refiere a la ley como un "mantra" del movimiento de código abierto , pero la califica de falacia debido a la falta de evidencia que la respalde y porque las investigaciones han indicado que la tasa a la que se descubren errores adicionales no escala linealmente con el número de revisores; más bien, hay un pequeño número máximo de revisores útiles, entre dos y cuatro, y los revisores adicionales por encima de este número descubren errores a una tasa mucho menor. [4] Si bien los profesionales del código cerrado también promueven un análisis de código riguroso e independiente durante el desarrollo de un proyecto de software, se centran en la revisión en profundidad por parte de unos pocos y no principalmente en el número de "ojos". [5]
La persistencia del error de seguridad Heartbleed en una pieza crítica de código durante dos años se ha considerado como una refutación del dictamen de Raymond. [6] [7] [8] [9] Larry Seltzer sospecha que la disponibilidad del código fuente puede hacer que algunos desarrolladores e investigadores realicen pruebas menos exhaustivas de las que realizarían con software de código cerrado , lo que facilita que los errores permanezcan. [9] En 2015, el director ejecutivo de la Linux Foundation, Jim Zemlin, argumentó que la complejidad del software moderno ha aumentado a tales niveles que la asignación específica de recursos es deseable para mejorar su seguridad. Con respecto a algunas de las mayores vulnerabilidades del software de código abierto global de 2014 , dice: "En estos casos, los ojos no estaban realmente mirando". [8] No se han realizado experimentos a gran escala ni encuestas revisadas por pares para probar qué tan bien se mantiene el mantra en la práctica. [10]
El respaldo empírico de la validez de la ley de Linus [11] se obtuvo comparando proyectos populares e impopulares de la misma organización. Los proyectos populares son proyectos con el 5 % superior de estrellas de GitHub (7481 estrellas o más). La identificación de errores se midió utilizando la probabilidad de confirmación correctiva, la proporción de confirmaciones que se determinó que estaban relacionadas con la corrección de errores. El análisis mostró que los proyectos populares tenían una mayor proporción de correcciones de errores (por ejemplo, los proyectos populares de Google tenían una tasa de corrección de errores un 27 % mayor que los proyectos menos populares de Google). Dado que es poco probable que Google haya reducido sus estándares de calidad de código en proyectos más populares, esto es una indicación de una mayor eficiencia de detección de errores en proyectos populares.