No existe un conjunto de prácticas que pueda garantizar que el software nunca tendrá defectos o vulnerabilidades. Incluso los métodos formales pueden fallar si las especificaciones o suposiciones son incorrectas. Tampoco existe un conjunto de prácticas que pueda garantizar que un proyecto mantendrá una comunidad de desarrollo saludable y que funcione bien.
Sin embargo, seguir las mejores prácticas puede ayudar a mejorar los resultados de los proyectos. Por ejemplo, algunas prácticas permiten la revisión de múltiples personas antes de la publicación, lo que puede ayudar a encontrar vulnerabilidades técnicas que de otro modo serían difíciles de encontrar y ayudar a construir confianza y un deseo de interacción repetida entre desarrolladores de diferentes organizaciones.
Esta página discute el conjunto de mejores prácticas para proyectos de Software Libre y de Código Abierto (FLOSS) desarrollado para la insignia de Mejores Prácticas de la Open Source Security Foundation (OpenSSF). Los proyectos que sigan estas mejores prácticas podrán autocertificarse voluntariamente y mostrar que han logrado la insignia relevante. Los proyectos pueden hacer esto, sin costo alguno, utilizando una aplicación web (BadgeApp) para explicar cómo cumplen con estas prácticas y sus criterios detallados.
Estas mejores prácticas se han creado para:
El modismo "mejores prácticas" significa "un procedimiento o conjunto de procedimientos que es preferido o considerado estándar dentro de una organización, industria, etc." (fuente: Dictionary.com). Estos criterios son lo que creemos que son ampliamente "preferidos o considerados estándar" en la comunidad FLOSS más amplia.
Para más información sobre cómo se desarrollaron estos criterios, vea el sitio GitHub de la insignia de Mejores Prácticas de OpenSSF.
También puede ver los criterios completos.
Los criterios de mejores prácticas se dividen en tres niveles:
Cada criterio tiene un nombre corto, mostrado como texto en superíndice dentro de corchetes después del texto de los criterios.
La Linux Foundation también patrocina el Proyecto OpenChain, que identifica criterios para un "programa de cumplimiento de Software Libre y de Código Abierto (FOSS) de alta calidad". OpenChain se enfoca en cómo las organizaciones pueden utilizar mejor FLOSS y contribuir de vuelta a los proyectos FLOSS, mientras que la insignia de Mejores Prácticas de OpenSSF se enfoca en los proyectos FLOSS en sí mismos. La insignia de Mejores Prácticas de OpenSSF y OpenChain trabajan juntos para ayudar a mejorar FLOSS y cómo se utiliza FLOSS.
En algunos casos probamos y completamos automáticamente la información si el proyecto sigue las convenciones estándar y está alojado en un sitio (por ejemplo, GitHub) con un soporte de API decente.
Tenemos la intención de mejorar esta automatización en el futuro. ¡Las mejoras a la automatización son bienvenidas!
Sin embargo, hemos priorizado intencionalmente lo "que es importante", incluso si no puede automatizarse de manera asequible. Nos encantan las mediciones automatizadas, pero no todo lo importante es automatizable o puede automatizarse de manera asequible.
Esperamos que estas prácticas y sus criterios detallados se actualicen con el tiempo. Planeamos agregar nuevos criterios pero marcarlos como criterios "futuros", para que los proyectos puedan agregar esa información y mantener su insignia.
Los comentarios son muy bienvenidos a través del sitio de GitHub como issues o pull requests. También hay una lista de correo para discusión general.
Las palabras clave "DEBE", "NO DEBE", "DEBERÍA", "NO DEBERÍA", y "PUEDE" en este documento deben interpretarse como se describe en RFC 2119. Se añade el término adicional SUGERIDO. En resumen, estas palabras clave tienen los siguientes significados:
A menudo un criterio se establece como algo que DEBERÍA hacerse, o es SUGERIDO, porque puede ser difícil de implementar o los costos para hacerlo pueden ser altos.
Para obtener una insignia, se deben cumplir todos los criterios DEBE y NO DEBE, todos los criterios DEBERÍA deben cumplirse O no cumplirse con justificación, y todos los criterios SUGERIDOS deben considerarse (debe calificarse como cumplido o no cumplido, pero no se requiere justificación a menos que se indique lo contrario). Una respuesta de N/A ("no aplicable"), cuando se permite, se considera lo mismo que estar cumplido. En algunos casos, especialmente en los niveles superiores, puede requerirse justificación y/o una URL.
Algunos criterios tienen marcas especiales que influyen en esto:
Un proyecto debe alcanzar el nivel anterior para alcanzar el siguiente nivel. En algunos casos, los criterios DEBERÍA se convierten en DEBE en insignias de nivel superior, y algunos criterios SUGERIDOS en niveles inferiores se convierten en DEBERÍA o DEBE en insignias de nivel superior. Los niveles superiores también requieren más justificación, porque queremos que otros entiendan cómo se están cumpliendo los criterios.
Los (muchos) criterios criptográficos no siempre se aplican, porque algunos programas no tienen necesidad de usar directamente capacidades criptográficas. En esos casos, responda N/A.
Hay un criterio de aprobación implícito - cada proyecto DEBE tener un sitio web público con una URL estable. Esto es necesario para crear una entrada de insignia en primer lugar.
Si no está familiarizado con el desarrollo de software o la ejecución de un proyecto FLOSS, materiales como Producing Open Source Software de Karl Fogel pueden serle útiles.
Aquí hay algunos términos clave:
Los criterios:
El nivel de aprobación no incluye criterios que serían imprácticos para un proyecto de una sola persona, por ejemplo, algo que requiera una cantidad significativa de dinero. Muchos proyectos FLOSS son pequeños, y no queremos privarlos de sus derechos.
Nuestra aplicación le da a cada entrada de proyecto un identificador único, pero eso no ayuda a las personas a buscar el proyecto. Para nuestros propósitos, el nombre real de un proyecto es la URL de su repositorio, y donde eso no esté disponible, la URL de la "página principal" del proyecto. Limitamos los cambios a la URL del repositorio para prevenir algunos absurdos. Los proyectos normalmente tienen un nombre legible para humanos, pero estos nombres no son lo suficientemente únicos.
El documento Open badges for education: what are the implications at the intersection of open systems and badging? identifica tres razones generales para los sistemas de insignias (todas son válidas para esto):
Hemos elegido usar la auto-certificación, porque esto hace posible que un gran número de proyectos (incluso los pequeños) participen. Hay millones de proyectos FLOSS, y pagar a terceros para evaluar independientemente cada uno no escala. Existe el riesgo de que los proyectos hagan afirmaciones falsas, pero creemos que el riesgo es pequeño, los usuarios pueden verificar las afirmaciones por sí mismos, y las afirmaciones falsas pueden ser anuladas. También usamos automatización para anular afirmaciones falsas donde podemos estar seguros de los resultados.