Conheça o vencedor regional de Call for Code 2020 para a América Latina Blog post

Considere a escala, o controle aberto e a cultura

Estamos ansiosos para ver mais empresas adotando os princípios de operação e software livre. A adoção de software livre na empresa é ótima para ecossistemas de software livre que se desenvolvem com base na força e na diversidade da comunidade. Mais desenvolvedores corporativos trabalhando com software livre produzem tecnologia mais segura e inovadora para todos.

Então, como você cria uma empresa que adota software livre? Ao se tornar uma empresa que usa tecnologia aberta, é necessário considerar os riscos, a escala, o controle aberto e a cultura.

Considere os riscos. Não tem como adotar o software livre sem correr alguns riscos. É necessário ter uma estratégia definida quanto a onde você investirá e como essa tecnologia afetará suas tecnologias atuais.

Pense sobre a escala. Ao criar ou investir em projetos de software livre, é necessário considerar como escalar esses projetos dentro de sua empresa. Quando nos envolvemos em um projeto, nós focamos nos aspectos mais importantes para a empresa: interoperabilidade, portabilidade, segurança, escalabilidade e acessibilidade.

Estimule o controle aberto. O controle aberto assegura o sucesso a longo prazo e a viabilidade de projetos abertos. Nós participamos de comunidades que adotam o controle aberto, doando nosso código para o benefício da comunidade, enquanto também usamos o código resultante em nossos próprios produtos.

Crie uma cultura aberta. Tornar-se uma empresa aberta requer uma mudança na cultura de sua empresa. Isso não acontecerá naturalmente, mas existem algumas coisas que podem ser feitas para incentivar uma cultura aberta. Entraremos em mais detalhes abaixo.

Saiba mais sobre nossa abordagem para tecnologia aberta  
pessoas trabalhando em um escritório bem iluminado

Fundamentos de um programa de software livre

Na IBM, temos seis elementos principais em nosso programa de software livre para nos ajudar a alcançar essa cultura de abertura. Considere usar ou adaptar esses elementos para criar sua própria empresa aberta.

Analise cada elemento e descubra como é possível criar uma abertura.

  • Antes de trabalhar com software livre, na empresa ou na vida pessoal, os funcionários devem realizar nosso treinamento anual. Esse treinamento assegura que todos tenham um entendimento sólido do software livre e de seus benefícios e riscos.

    Como estamos refinando constantemente nosso processo de software livre, os IBMistas devem concluir o treinamento anualmente enquanto eles estiverem ativamente engajados no desenvolvimento ou em outras atividades que envolvam software livre. Mais de 60.000 IBMistas concluem esse treinamento todo ano.

    Elementos essenciais do treinamento de software livre

    Alguns dos principais elementos que nós abordamos em nosso treinamento incluem:

    • Definição de software livre: qualquer funcionário que trabalha com software livre precisa entender o que é e o que não é software livre.Ao estabelecer uma definição clara, fica mais fácil explicar como usá-lo efetivamente.
    • Benefícios do software livre: nós destacamos os benefícios do software livre para incentivar os funcionários a contribuir.
    • Possíveis riscos: nosso treinamento fala sobre os riscos comuns associados ao software livre. Nós queremos que os funcionários consigam detectar os riscos, mas nosso processo de aprovação também estará em vigor para descobrir e reduzir os riscos possíveis com antecedência no ciclo de desenvolvimento.
    • Licenças de software livre: é essencial que todos entendam as permissões concedidas pelas licenças, as obrigações da licença e como manipular corretamente pacotes de software livre de acordo com a licença. Esse entendimento assegura que nossa propriedade intelectual esteja protegida, que os termos da licença sejam honrados, que todos ajudem a proteger nossa reputação como bons cidadãos da comunidade de software livre.
    • Maneiras de trabalhar com software livre: o treinamento inclui nossa política sobre como trabalhar com software livre individualmente, como consumir software livre internamente, como consumir software livre em produtos e serviços, como manipular software livre de um fornecedor ou cliente e como contribuir com o software livre.
    • Software livre e estratégia da empresa: entender qual papel o software livre desempenha em nossa estratégia da empresa fornece contexto para ajudar os desenvolvedores a entender como suas contribuições de software livre beneficiam toda a nossa empresa.
    • Processo de gerenciamento de software livre: nós explicamos as etapas, ferramentas e partes interessadas envolvidas em nosso processo.

    Nosso processo e nosso material de treinamento são revisados regularmente à medida que recebemos feedback sobre o que está funcionando bem e o que podemos melhorar.

  • Reconheça e recompense contribuidores

    Nós queremos que todos os nossos desenvolvedores estejam engajados com software livre. Todo ano, os funcionários da IBM que contribuem com software livre são reconhecidos com prêmios em dinheiro, além de cada premiado ser divulgado individualmente em toda a empresa.

    Nossas categorias de premiação incluem criadores de projetos, contribuidores importantes e líderes de projeto nas principais comunidades de software livre.

    Esse programa tem persuadido desenvolvedores que podem ser iniciantes em software livre a fazer sua primeira contribuição e a se tornar contribuidores assíduos. Além de nosso programa de incentivo, também temos mentores de software livre disponíveis para sentar e ajudar desenvolvedores a fazer sua primeira contribuição.

  • Escala com conjunto de ferramentas e automação

    Como o uso de software livre em nossos produtos e serviços aumenta 30% ano após ano, precisamos automatizar soluções para continuar. Nós desenvolvemos um conjunto de ferramentas interno que pode ser colocado em cadeias de ferramentas DevOps para automatizar o gerenciamento de software livre.

    Ao montar uma cadeia de ferramentas para gerenciar software livre, há diversas perspectivas a considerar. Foque seu conjunto de ferramentas e automação nas seguintes áreas essenciais:

    • Identificação de software livre: qual software livre está na compilação, incluindo todas as dependências?
    • Identificação de licença: quais licenças de software livre estão no build? Às vezes, há mais de uma licença em um pacote de software livre. Se há mais de uma licença, as licenças são compatíveis? A licença contém algum termo exclusivo?
    • Varredura de software livre: nós varremos o código-fonte de pacotes de software livre para identificar possíveis problemas de IP, como outras licenças de terceiros no código (incluindo software comercial), possíveis problemas de patentes e quaisquer proibições para uso comercial. Nós também varremos detalhadamente para identificar dependências que poderiam ter licenças que possam não ser compatíveis com o pacote pai.
    • Um armazenamento de dados centralizado: nós temos um repositório centralizado para análise interna de pacotes de software livre, para que as equipes possam compartilhar os resultados da varredura e não duplicar trabalho. Nós temos mais de 60.000 varreduras exclusivas disponíveis.
    • Análise automatizada de novas versões: se uma nova versão não for significativamente diferente de uma versão varrida anteriormente de um pacote de software livre, nós não precisamos de uma nova varredura de código.
    • Automação, métricas e controle de fluxo de trabalho: nosso conjunto de ferramentas suporta a customização de fluxos de trabalho de aprovação com base no risco e nos requisitos da unidade de negócios. Nós suportamos todos os tipos de casos de uso, alguns não precisam de aprovação, enquanto outros precisam de aprovação do jurídico e de executivos de negócios. Nós usamos o fluxo de trabalho para controlar qual tecnologia de software livre é usada em quais produtos e serviços em nosso portfólio inteiro.
    • Controle de contribuição: geralmente, nossos contribuidores terão um ID pessoal do GitHub e um ID do GitHub da IBM. Nós usamos o conjunto de ferramentas para controlar as contribuições sob ambos os IDs para assegurar que todos recebam crédito com relação ao nosso programa de reconhecimento. Nós respeitamos a necessidade de nossos desenvolvedores como indivíduos e eles se sentem representados e que estão ampliando sua experiência por meio de suas contribuições para a programação de software livre.
  • Crie uma organização de gerenciamento dedicada

    Nosso processo de gerenciamento de software livre reúne negócios, jurídico e partes técnicas interessadas. Organizacionalmente, uma equipe de software livre central gerencia o processo e consulta as equipes de desenvolvimento para responder dúvidas e certificar-se de que o processo seja executado sem interrupções. Nossa equipe dedicada possui décadas de conhecimento e experiência em software livre e oferece educação, consultoria e gerenciamento de políticas e processos para as equipes IBM.

    A equipe de software livre trabalha de perto com nossas equipes de DevOps responsáveis pelo conjunto de ferramentas e pela automação para expandir e aprimorar nosso gerenciamento de software livre e revisar o processo. Nosso conjunto de ferramentas customizado inclui ferramentas de identificação e varredura, fluxo de trabalho de revisão para solicitações de contribuição e uso do produto, além de bancos de dados e portais para compartilhar efetivamente informações e diretrizes entre todas as nossas unidades de negócios.

    Ter um cenário preciso de todo o software livre em nosso portfólio é a base para o gerenciamento de vulnerabilidades do software livre. Nossas ferramentas para o processo de software livre interno podem rastrear vulnerabilidades para que as equipes do produto possam resolvê-las rapidamente.

  • Defina um processo para consumo de software livre

    É importante definir processos claros quanto a como consumir a tecnologia de software livre, tanto o software livre que é criado internamente quanto outros projetos que você adota fora da sua empresa. A seguir estão nossas diretrizes gerais.

    Consumindo software livre dentro da IBM

    Para software livre que os IBMistas usam apenas para testes, ferramentas de desenvolvimento, ferramentas de produtividade e builds internos, a nossa regra é que, desde que o software livre tenha uma licença que esteja em nossa lista interna de licenças aprovadas e que o pacote não esteja em nossa lista dos poucos pacotes proibidos para uso interno, o software livre não precisa de aprovação formal.

    Observe que, se houver um Contrato de Licença de Usuário Final (EULA) ou outros termos necessários para fazer download do software, ele não é software livre e esses termos precisariam ser revisados posteriormente.

    Consumindo software livre fora da IBM

    Quando falamos sobre software livre usado fora da IBM, significa que um código é incluído em uma oferta de software ou de serviço, seja implementado em nossa nuvem ou em sistemas locais de um cliente. Exemplos comuns incluem produtos de software e hardware, Software como Serviço (SaaS) e soluções de nuvem. Quando usamos tecnologia de software livre em um produto ou serviço, seguimos um processo formal que assegura que honremos as obrigações de licença e controlemos qual software livre é usado em cada um de nossos produtos e serviços. Isso também é importante para assegurar que possamos identificar e resolver vulnerabilidades de segurança.

    Nosso processo é o mais transparente possível para os nossos desenvolvedores. As maioria das equipes usa um modelo de entrega contínua, às vezes entregando várias vezes por dia. Esse processo permite que as equipes enviem mudanças para suas Faturas de Materiais de software livre mensalmente, para que o processo de aprovação não seja um obstáculo para a entrega.

    A seguir estão as etapas:

    • Novo software livre incluído em um build é identificado pelo conjunto de ferramentas. Os recursos de relatório na ferramenta identificam o nome do pacote, a versão, as licenças associadas e se o código-fonte para esse pacote foi varrido anteriormente.
    • Para qualquer software livre que não tenha sido varrido anteriormente ou não esteja diretamente relacionado a uma versão varrida anteriormente, uma varredura de código é executada e salva para outras equipes para referência.
    • O gerente da liberação envia a solicitação, que pode incluir várias centenas ou, até mesmo, vários milhares de pacotes de software livre.
    • A ferramenta de fluxo de trabalho calcula automaticamente o número de aprovadores necessários e encaminha o formulário após cada assinatura. Mais de 90% das vezes, as solicitações são aprovadas por um gerente de primeira linha e pelo líder de gerenciamento de software livre para a unidade de negócios. Em alguns casos, por exemplo quando uma licença requer código licenciado separadamente, é necessária a aprovação do jurídico e do executivo de negócios.
    • Esse processo é repetido para nova a tecnologia de software livre incluída na oferta. Uma vez que o software livre tenha sido aprovado para uma determinada oferta, ele não precisa de aprovação adicional para liberações futuras.

    Ao longo do caminho, nossos líderes de gerenciamento de software livre estão disponíveis para responder dúvidas e aconselhar as equipes em nosso canal Slack interno.

  • Sejam contribuidores de software livre responsáveis

    Nós acreditamos que contribuir com projetos de software livre não é apenas bons modos, mas sim parte da nossa responsabilidade como um líder de software livre.

    Nós investimos no código da comunidade para tecnologias estratégicas e asseguramos que correções e novos recursos sejam desenvolvidos em vez de bifurcar o código da comunidade e criar nossa própria versão de um projeto. Por exemplo, o Cloud Foundry que integramos no IBM Cloud é o mesmo código que foi liberado pela Cloud Foundry Foundation e o mesmo que é usado pela HPE, pela Pivotal e pela SAP. Da mesma forma, o Docker incluído no IBM Container Service é o mesmo Docker que a comunidade libera.

    Quando desejamos adicionar extensibilidade que possa usar recursos específicos da IBM, nós trabalhamos dentro da comunidade para criar a API ou a SPI necessária. Nós também investimos para garantir que esses pontos de extensão não sejam excedidos para criar um potencial para dependências.

    Nós continuamos desenvolvendo nosso processo para incentivar nossos desenvolvedores a participar e a contribuir com as comunidades de software livre. Nossas áreas de foco para contribuição incluem:

    • Contribuir com uma comunidade de destaque. A IBM lidera muitos projetos de software livre que são estratégicos para nossos interesses de negócios e de desenvolvimento. Nós incentivamos todos os desenvolvedores a fazer correções de erros ou pequenos aprimoramentos: um comitê gestor interno para uma comunidade específica revisa todas as principais mudanças ou aprimoramentos.
    • Postagem de fragmentos e apps de amostra. Com a aprovação de um gerente, nós incentivamos a postagem de fragmentos de código em sites do desenvolvedor e a contribuição com aplicativos de amostra e exemplos de uso do produto.
    • Correções de erros e pequenos aprimoramentos nos projetos existentes. As correções e os aprimoramentos são encorajados em uma ampla variedade de comunidades de software livre e, na maioria dos casos, não requerem aprovação formal.

    Proposição de novos projetos. As revisões são realizadas para novos projetos que vão desde padrões de código no IBM Developer, no IBM @ GitHub, até o início de iniciativas abrangentes da comunidade, como o Hyperledger e o Apache OpenWhisk.

Localize um parceiro no software livre

Você provavelmente não tem tempo para vasculhar comunidades de software livre procurando respostas ou tentando entender dependências entre pilhas de tecnologia. Para obter o máximo de seus investimentos em software livre, é necessário contratar um parceiro de suporte para ajudá-lo a minimizar quaisquer riscos relacionados ao software livre em sua empresa. Com nossos serviços de suporte, você tem um único local para obter suporte para todo o seu ecossistema de software livre.

Contrate nossos serviços de suporte  
Cidade com redes interligadas

Aviso

O conteúdo aqui presente foi traduzido da página IBM Developer US. Caso haja qualquer divergência de texto e/ou versões, consulte o conteúdo original.