Cómo implementar con éxito el cumplimiento de licencias con un enfoque centrado en los desarrolladores
23 de abril de 2020
0 minutos de lecturaTradicionalmente, los desarrolladores han percibido el cumplimiento de licencias como un obstáculo, pero no tiene por qué seguir siendo así. El cumplimiento de licencias es fundamental para minimizar los riesgos para el negocio, pero la única forma de hacerlo a escala y sin obstaculizar el desarrollo es adoptar un enfoque centrado en los desarrolladores.
En última instancia, son los desarrolladores quienes deciden qué usar en su software. El cumplimiento de las licencias de software solo se puede lograr si los desarrolladores cuentan con las herramientas adecuadas y están debidamente capacitados para tomar las decisiones correctas, además de trabajar en conjunto con los equipos de cumplimiento, que deben ejercer el nivel de gobernanza adecuado.
La importancia de la autonomía de los desarrolladores
El software es el motor de la transformación digital y, hoy en día, el mundo gira en torno a quienes lo crean: los desarrolladores. Para seguir siendo competitivos en nuestros respectivos mercados, esperamos que estos creadores hagan todo lo posible para ofrecer valor con rapidez. Deben hacerse cargo de sus sistemas de principio a fin; es decir, comprender la necesidad, diseñar la solución, implementarla, desplegarla, operarla y aprender de la experiencia. Y volver a empezar.
Para que este proceso tenga éxito, los desarrolladores necesitan autonomía para tomar decisiones y las herramientas adecuadas para ponerlas en práctica. Cada vez que se necesita la intervención de un equipo externo, el proceso se ralentiza y se generan fricciones. En esencia, esto va en contra de lo que busca el negocio: rapidez con el mínimo riesgo.
El cumplimiento de licencias es, sin duda, uno de esos ámbitos en los que la interacción con los desarrolladores no ha sido exitosa. Como suele abordarse en una etapa avanzada del ciclo de desarrollo, los procesos manuales y rígidos de cumplimiento tienden a obstaculizar los flujos de trabajo.
Pero no tiene por qué ser así. Podemos replantear el cumplimiento de licencias y centrarlo en los desarrolladores si abordamos tres aspectos clave: el empoderamiento de los desarrolladores y la facilidad de uso para los desarrolladores, para que puedan adoptar el cumplimiento de licencias, y la gobernanza, para asegurar que se tomen las decisiones correctas.
Facilitar las decisiones de cumplimiento
Los desarrolladores toman innumerables decisiones todos los días; por eso, el objetivo debe ser ayudarlos a tomar las decisiones correctas sobre el cumplimiento.
Hacer pruebas lo antes posible
Presentarles a los desarrolladores una lista de problemas de licencias después de completar el proceso de compilación no solo es contraproducente, sino que también aumenta las fricciones entre ellos y los responsables de cumplimiento. Para que puedan tomar decisiones sobre el cumplimiento, deben detectar los componentes que no cumplen con los requisitos lo antes posible y así evitarse problemas más adelante. Esto comienza en sus entornos de desarrollo locales y continúa a lo largo de su flujo de trabajo de Git y, posteriormente, durante CI/CD.

Distinguir lo claro de lo ambiguo
Hoy en día se usan más de 200 licencias de código abierto. Por eso, los desarrolladores necesitan comprender claramente el riesgo que podrían introducir al decidir incluir un componente en lugar de otro.
No todas las licencias son GPL, que establece un límite claro e innegociable para los desarrolladores. Algunas son mucho más ambiguas y están abiertas a interpretación. Por ejemplo, pensemos en un componente de código abierto cuya licencia exige atribución. Los desarrolladores pueden determinar si se dio la atribución o no. También puede tratarse de una licencia desconocida, en cuyo caso necesitan los conocimientos y las herramientas para decidir si continúan y notifican al equipo de cumplimiento en segundo plano, o si detienen el desarrollo hasta recibir luz verde.
Cuanto más contexto tengan los desarrolladores, mejor preparados estarán para evaluar el riesgo frente al valor del componente de código abierto que están considerando. Este contexto se puede ofrecer, por un lado, mediante capacitación para desarrolladores y, por otro, con herramientas que proporcionen información contextual sobre problemas de licencias, como los datos de derechos de autor.
Avanzar en paralelo
Los equipos de desarrollo no pueden darse el lujo de esperar hasta el final del proyecto para involucrar a los responsables de cumplimiento. Este enfoque secuencial ya no es viable en un mundo de desarrollo continuo y solo genera fricciones innecesarias. En cambio, los desarrolladores y los responsables de cumplimiento deben fomentar una buena relación para implementar el cumplimiento en paralelo.
Por su parte, los desarrolladores deben saber cómo y cuándo involucrar a los responsables de cumplimiento desde el principio, iniciando el contacto incluso si resulta incómodo o difícil. Los responsables de cumplimiento deben apoyar la conversación y orientarla mediante recomendaciones, capacitación e intercambio de información.
Impulsar la adopción con una experiencia de uso pensada para desarrolladores
A los desarrolladores se les asignan muchas responsabilidades nuevas, entre ellas la seguridad y el cumplimiento, pero no son expertos en todas estas áreas. Si queremos que adopten el cumplimiento, es importante invertir en facilitarles la toma y la implementación de las decisiones correctas sobre el cumplimiento de licencias.
Integrar el cumplimiento en los flujos de trabajo de desarrollo
Es muy poco probable que un equipo de desarrollo implemente flujos de trabajo de cumplimiento de licencias que consuman mucho tiempo y sean contraproducentes. Obligar al equipo a hacerlo, por supuesto, generará desconfianza y resentimiento.
Integrarse de forma fluida y natural en los flujos de trabajo existentes basados en Git, en lugar de hacerlo mediante una integración externa, contribuirá en gran medida a impulsar la adopción por parte de los desarrolladores.

Ofrecer visibilidad
Cuanta más visibilidad tengan los desarrolladores, más fácil les resultará actuar ante los problemas de licencias una vez detectados. Busca una solución que vaya más allá de mostrarte una lista de problemas y que ofrezca una ruta clara para resolverlos.
Por ejemplo, el enfoque de Snyk consiste en describir los problemas de licencias en el contexto de una aplicación, no de un artefacto, y mostrarles a los desarrolladores un árbol de dependencias completo para que entiendan la ruta exacta por la que se introdujeron los problemas. Así, obtienen la claridad que necesitan para tomar decisiones rápidas y fundamentadas.

«Cumplimiento continuo»
En un mundo donde el adjetivo «continuo» precede a casi todos los procesos del ciclo de vida moderno del desarrollo de software, no hace falta decir que la automatización es un factor clave para que el cumplimiento de licencias sea más accesible para los desarrolladores.
Automatizar el cumplimiento de licencias en todo el SDLC ayuda a reducir las fricciones y maximizar la productividad de los desarrolladores. Una buena forma de empezar es incluir pruebas de licencias en las compilaciones de CI/CD, siempre que sean precisas. La automatización es importante, pero si las compilaciones fallan continuamente debido a políticas mal definidas, probablemente se obtenga el resultado contrario.
Gobernanza flexible frente a rígida
Para tener la confianza necesaria para dar autonomía a los equipos de desarrollo, la visibilidad es clave. Los componentes que se incorporan en cada iteración de la compilación deben registrarse de forma automática y uniforme, con el respaldo de paneles que presenten esa información de manera fácil de entender.
Esto aplica a cualquier tipo de gestión de riesgos, pero especialmente al cumplimiento legal. Las organizaciones necesitan saber qué está pasando y no pueden depender únicamente de reuniones de revisión para obtener información: esta debe estar en la tecnología.

Una vez que esto esté resuelto, se debe invertir en distinguir claramente entre los límites estrictos y los flexibles de la gobernanza.
Todo responsable de cumplimiento sabe que no todo es blanco o negro y que, a veces, basta con demostrar que se hizo un esfuerzo razonable. En los casos que no son blancos o negros en nuestro contexto, pensemos si detectar un problema poco después del despliegue y resolverlo en ese momento podría considerarse un «esfuerzo razonable». Muchas veces, sí. Adoptar ese enfoque nos permitirá interrumpir menos el desarrollo.
Hacer esta distinción marca una gran diferencia para el equipo de desarrollo. Permite evitar que se impida a un desarrollador lanzar algo o que se interrumpa la compilación; en su lugar, se alerta al equipo de cumplimiento de que se desplegó una licencia cuestionable para que pueda evaluarla rápidamente y decidir si debe tomar medidas.
Lo ideal es que esa conversación haya ocurrido en paralelo. Cuanto mejor sea la interacción entre los equipos de desarrollo y de cumplimiento, más probable será que hayan tenido esta conversación al principio del flujo de trabajo de desarrollo. Pero si ocurre más adelante, no significa que haya que cortar la comunicación y detenerlo todo. Eso solo genera resentimiento.
En resumen
En un mundo cada vez más enfocado en la autonomía y la velocidad de los desarrolladores, el cumplimiento de licencias suele estar lejos de empoderarlos. No tiene por qué ser así: podemos hacer que el cumplimiento de licencias se centre en los desarrolladores.
Snyk permite que los desarrolladores adopten el cumplimiento de licencias con una solución diseñada para ellos, que ofrece herramientas fáciles de usar, gobernanza flexible y visibilidad de principio a fin. Así se obtiene código más conforme y, en última instancia, se reducen los riesgos. Obtén más información aquí o comienza gratis.
Simplifica el cumplimiento de licencias
Crea políticas para garantizar fácilmente el cumplimiento de licencias de código abierto a gran escala.



