Como implementar com sucesso a conformidade de licenças priorizando os desenvolvedores
23 de abril de 2020
0 minutos de leituraTradicionalmente, os desenvolvedores veem a conformidade de licenças como um obstáculo, mas não precisa ser assim. Ela é essencial para minimizar os riscos para o negócio. Porém, para fazer isso em grande escala sem prejudicar o desenvolvimento, é preciso adotar uma abordagem que priorize os desenvolvedores.
No fim das contas, são os desenvolvedores que decidem o que usar no software. Só é possível alcançar a conformidade com licenças de software se os desenvolvedores tiverem autonomia para tomar as decisões certas, as ferramentas adequadas para isso e trabalharem em conjunto com as equipes de conformidade, que devem exercer o nível correto de governança.
A importância da autonomia dos desenvolvedores
O software impulsiona a transformação digital e, hoje, o mundo gira em torno de quem o cria: os desenvolvedores. Para continuarmos competitivos em nossos respectivos mercados, esperamos que essas pessoas façam todo o possível para entregar valor rapidamente. Elas precisam ser responsáveis por seus sistemas de ponta a ponta: entender a necessidade, definir a solução, implementá-la, implantá-la, operá-la e aprender com a experiência. E começar tudo de novo.
Para que esse processo dê certo, os desenvolvedores precisam ter autonomia para tomar decisões e as ferramentas certas para colocá-las em prática. Sempre que é necessário envolver uma equipe externa, o processo fica mais lento e surgem atritos. No fundo, isso vai contra o objetivo do negócio: ganhar velocidade com o mínimo de risco.
A conformidade de licenças é conhecida por ser uma área em que a interação com os desenvolvedores costuma não dar certo. Como geralmente é aplicada no fim do ciclo de desenvolvimento, a conformidade manual e rígida tende a atrapalhar os fluxos de trabalho.
Mas não precisa ser assim. É possível repensar a conformidade de licenças e priorizar os desenvolvedores, cuidando de três aspectos principais: dar autonomia aos desenvolvedores e facilitar o uso para eles, para que adotem a conformidade de licenças, e garantir a governança necessária para que as decisões certas sejam tomadas.
Capacite os desenvolvedores para tomar decisões sobre conformidade
Os desenvolvedores tomam inúmeras decisões todos os dias. Por isso, o objetivo deve ser ajudá-los a tomar as decisões certas sobre conformidade.
Teste o quanto antes
Apresentar aos desenvolvedores uma lista de problemas de licença depois que o processo de build foi concluído não é apenas contraproducente: também aumenta o atrito entre desenvolvedores e equipes de controle. Para que possam tomar decisões sobre conformidade, os desenvolvedores precisam detectar componentes em desacordo com as regras o quanto antes e evitar problemas mais adiante. Isso começa nos ambientes locais de desenvolvimento, continua ao longo do fluxo de trabalho com Git e segue durante a CI/CD.

Separe o que é preto no branco do que é subjetivo
Com mais de 200 licenças de código aberto em uso atualmente, os desenvolvedores precisam entender com clareza o risco que podem introduzir ao escolher um componente em vez de outro.
Nem toda licença é GPL, com regras claras e rígidas para os desenvolvedores. Algumas são bem mais ambíguas e abertas a interpretações. Pense, por exemplo, em um componente de código aberto cuja licença exige atribuição. Os desenvolvedores podem verificar se ela foi feita. Ou considere uma licença desconhecida: nesse caso, o desenvolvedor precisa ter o conhecimento e as ferramentas para decidir se deve prosseguir e informar a equipe de conformidade em paralelo ou interromper o desenvolvimento até receber sinal verde.
Quanto mais contexto os desenvolvedores tiverem, mais preparados estarão para avaliar os riscos e o valor associados ao componente de código aberto em questão. Esse contexto pode vir, por um lado, de treinamentos para desenvolvedores e, por outro, de ferramentas que ofereçam informações contextuais sobre problemas de licença, como dados de direitos autorais.
Avance em paralelo
As equipes de desenvolvimento não podem esperar até o fim do projeto para envolver as equipes de controle. Essa abordagem sequencial já não funciona em um mundo de desenvolvimento contínuo e só cria atritos desnecessários. Em vez disso, desenvolvedores e equipes de controle precisam construir uma boa relação e implementar a conformidade em paralelo.
Por sua vez, os desenvolvedores precisam saber como e quando envolver as equipes de controle desde o início, iniciando o contato mesmo quando isso for inconveniente ou difícil. As equipes de controle devem apoiar a conversa e orientar os desenvolvedores com recomendações, treinamentos e compartilhamento de informações.
Incentive a adoção com uma experiência fácil para os desenvolvedores
Os desenvolvedores estão assumindo muitas novas responsabilidades, inclusive em segurança e conformidade, mas não são especialistas em todas essas áreas. Se queremos que adotem a conformidade, é importante investir em maneiras de facilitar a tomada e a implementação das decisões certas sobre licenças.
Integre aos fluxos de trabalho de desenvolvimento
É muito improvável que uma equipe de desenvolvimento adote fluxos de trabalho de conformidade de licenças demorados e contraproducentes. Obrigá-la a fazer isso, é claro, resultará em desconfiança e ressentimento.
Integrar-se aos fluxos de trabalho existentes baseados em Git de forma nativa e sem atritos, em vez de depender de integrações externas, contribui muito para a adoção pelos desenvolvedores.

Ofereça visibilidade
Quanto mais visibilidade os desenvolvedores tiverem, mais fácil será agir diante de problemas de licença assim que forem detectados. Procure uma solução que vá além de simplesmente apresentar uma lista de problemas e indique claramente como resolvê-los.
Por exemplo, a abordagem da Snyk é descrever os problemas de licença no contexto da aplicação, e não do artefato, apresentando aos desenvolvedores uma árvore de dependências completa para que entendam exatamente como os problemas foram introduzidos. Assim, eles têm a clareza necessária para tomar decisões rápidas e bem informadas.

“Conformidade contínua”
Em um mundo em que o adjetivo “contínuo” antecede quase todos os processos do ciclo de vida moderno do desenvolvimento de software, é evidente que a automação é essencial para tornar a conformidade de licenças mais simples para os desenvolvedores.
Automatizar a conformidade de licenças em todo o SDLC ajuda a reduzir atritos e aumentar a produtividade dos desenvolvedores. Incluir testes de licença nas builds de CI/CD é uma ótima forma de começar, desde que os testes sejam precisos. A automação é importante, mas, se as builds falharem continuamente por causa de políticas inadequadas, o resultado provavelmente será o oposto do esperado.
Governança flexível, não rígida
Para ter confiança e dar autonomia às equipes de desenvolvimento, é essencial ter visibilidade. Os componentes incluídos em cada iteração da build devem ser rastreados de forma automática e consistente, com o apoio de dashboards que apresentem essas informações de maneira fácil de entender.
Isso vale para qualquer gestão de riscos, mas especialmente para a conformidade legal. As organizações precisam saber o que está acontecendo e não podem depender de reuniões de revisão como única fonte de informação: esses dados precisam estar na tecnologia.

Com isso em prática, é preciso investir em distinguir claramente as regras rígidas das mais flexíveis na governança.
Toda pessoa responsável por conformidade sabe que nem tudo é preto no branco e que, às vezes, basta demonstrar que houve um esforço razoável. Nos casos que não são tão claros, vale considerar se identificar um problema pouco depois da implantação e resolvê-lo nesse momento pode ser considerado um “esforço razoável”. Muitas vezes, pode. Adotar essa abordagem nos permite interromper menos o desenvolvimento.
Fazer essa distinção muda tudo para a equipe de desenvolvimento. Ela diferencia impedir que um desenvolvedor publique algo e interromper a build de apenas alertar a equipe de conformidade que uma licença questionável foi implantada, para que ela possa avaliar rapidamente a situação e decidir se é preciso agir.
O ideal é que essa conversa aconteça em paralelo. Quanto melhor a interação entre as equipes de desenvolvimento e conformidade, maior a chance de essa conversa acontecer no início do fluxo de trabalho de desenvolvimento. Mas, se ela acontecer mais tarde, isso não significa que seja preciso puxar o freio e parar tudo. Isso só gera ressentimento.
Em resumo
Em um mundo cada vez mais voltado à autonomia e à velocidade dos desenvolvedores, a conformidade de licenças costuma fazer justamente o contrário de dar autonomia a eles. Mas não precisa ser assim: podemos priorizar os desenvolvedores na conformidade de licenças.
A Snyk capacita os desenvolvedores a adotar a conformidade de licenças com uma solução que prioriza suas necessidades, oferecendo ferramentas fáceis de usar, governança flexível e visibilidade de ponta a ponta. O resultado: código em maior conformidade e, por fim, menos riscos. Saiba mais aqui ou comece agora mesmo, gratuitamente.
Simplifique a conformidade com licenças
Crie políticas para garantir a conformidade com licenças de código aberto em grande escala com facilidade.



