O que é desenvolvimento de "fonte interna" e você deve usá-lo?

LuckyStep / Shutterstock. com
Inner Source, muitas vezes estilizado como InnerSource, refere-se à adoção de processos de código aberto e metodologias de desenvolvimento dentro de uma organização. Considerando que o “ código aberto ” implica na criação de ferramentas disponíveis publicamente, fonte interna significa que você está trabalhando em projetos internos usando abordagens derivadas abertas.
Fluxos de trabalho de código aberto facilitam a colaboração fácil e a iteração rápida. Problemas publicamente acessíveis e solicitações de mesclagem em plataformas como o GitHub permitem que qualquer pessoa contribua com um projeto. Bugs são descobertos e corrigidos de forma rápida, segura e transparente em um ambiente que promove discussões regulares entre mantenedores e usuários.
Este modelo pode contrastar fortemente com o modo como o software é desenvolvido em grandes organizações. Nesses ambientes, as ferramentas são desenvolvidas de forma ad-hoc por equipes individuais. As pessoas trabalham em silos, contribuindo para suas áreas individuais, alheias ao trabalho sobreposto que está acontecendo em outros lugares.
Apresentando a fonte interna
O movimento do código-fonte interno aplica as lições aprendidas com o desenvolvimento do código-fonte aberto aos projetos internos de uma organização. Ele defende tornar todo o código visível para todos, criando uma cultura mais aberta onde as equipes podem encontrar projetos existentes que também podem ser úteis para seu trabalho e, em seguida, contribuir com suas próprias melhorias.
Em muitas organizações, novos repositórios de código-fonte serão bloqueados apenas para os indivíduos que precisam trabalhar neles. Adotar um modelo de origem interno significa tornar tudo visível por padrão. Isso incentiva os membros da equipe a explorar todo o corpus de código da organização e fornecer informações para as discussões, mesmo se o projeto não estiver estritamente dentro de sua área de assunto.
Publicidade
O código-fonte interno também não é apenas sobre código. Ele pode ser estendido para incluir ativos mais amplos e documentação relevante para o negócio, suas operações e seu software. O objetivo é capacitar os indivíduos a se auto-selecionarem tarefas e contribuir com sua experiência onde acharem que isso beneficiaria a organização, mesmo se eles fossem contratados para uma área de foco específica.
Benefícios da fonte interna
Os defensores da “ fonte interna ” arquiteturas observam vários benefícios significativos da abordagem, incluindo redução do desperdício, tempos de inicialização acelerados, menos tensão entre as equipes e qualidade de código aprimorada. Eles se combinam para melhorar a produtividade da organização e a cultura do local de trabalho.
- Redução do desperdício, reutilização aprimorada – Grandes organizações podem acabar duplicando códigos semelhantes em vários projetos pertencentes a equipes diferentes. Se as equipes não estiverem conversando entre si, o fato de você agora ter três bibliotecas de cache semelhantes pode passar despercebido. Publicar todo o código internamente alertará os outros sobre a presença de ferramentas usuais e, em seguida, incentivará a iteração compartilhada em uma única base de código. A roda para de ser reinventada, mantendo todos no trabalho e acelerando o prazo de lançamento.
- Qualidade de código aprimorada – O código escrito em aberto é mais exposto, portanto, é provável que os bugs apareçam no início do processo de desenvolvimento. Se uma biblioteca compartilhada for adotada por uma nova equipe, podem surgir problemas que antes não eram percebidos. A implementação de correções beneficiará todos os projetos que usam a biblioteca.
- Menos tensão entre as equipes – Embora a mudança para um modelo aberto possa parecer desconfortável no início, o desenvolvimento de fonte interna visa quebrar barreiras e aprimorar a colaboração. O desenvolvimento fechado pode criar situações difíceis quando você encontra uma equipe vizinha que construiu uma versão melhor de uma biblioteca que você está usando. Em um modelo aberto, isso é resolvido iterando juntos em uma base de código compartilhada que inclui os recursos necessários para todo o grupo.
A fonte interna simplifica a estrutura organizacional, dando a todos os desenvolvedores a mesma visão do trabalho em andamento. Aceitar contribuições de fora da equipe que “ possui ” um projeto fornece acesso a novos olhos e um conjunto expandido de soluções.
Implementando um fluxo de trabalho de fonte interna
Em sua forma mais simples, o código-fonte interno é implementado acessando sua plataforma de controle de versão e alterando a visibilidade dos projetos de Privado para Interno. Na prática, você precisará de um plano mais ponderado do que este se for introduzir com êxito o modelo de origem interno em um ambiente de equipe existente.
Existem dois aspectos fundamentais em qualquer transição: comunicação e ferramentas. O primeiro se refere a educar os membros da equipe sobre o que está acontecendo e como eles poderão contribuir para os projetos abertos. “ Definir e esquecer ” os níveis de acesso serão ineficazes, pois as pessoas não terão conhecimento de suas novas habilidades e quando poderão ser usadas.
O segundo aspecto, ferramentas, envolve a seleção de utilitários de software apropriados para gerenciar o fluxo de trabalho aberto. Uma equipe de software em funcionamento provavelmente já estará usando uma forma de controle de versão, como GitOps, para gerenciar seu código. No entanto, os padrões de uso precisos podem variar consideravelmente em toda a organização.
Publicidade
A fonte interna exige um modelo de desenvolvimento unificado que &’ funcionará de forma consistente em todos os projetos. Isso significa usar os recursos do Git e da plataforma de hospedagem, como GitHub ou GitLab, para obter o máximo efeito.
Os contribuidores devem ser capazes de enviar alterações em uma solicitação pull que os mantenedores revisam e mesclam. As solicitações pull devem ser complementadas por um conjunto de testes de aprovação executado em um pipeline de CI. Isso dá à equipe de manutenção a confiança de que a mudança é eficaz e garante que todos os códigos atendam aos mesmos padrões. Fazer a autoverificação da base de código por meio de testes e verificações automatizados ajuda a remover o atrito da experiência.
Você também deve considerar como recursos de suporte, como documentação e listas de problemas, são armazenados e expostos. Crie um wiki de equipe aberto para documentos de API e referências de arquitetura; garantir que todos os bugs e solicitações de recursos sejam rastreados em um local central. Isso permitirá que pessoas de toda a organização encontrem as informações de que precisam. Ele também capacita os indivíduos a fornecer melhorias para projetos arbitrários em períodos mais silenciosos – qualquer pessoa pode encontrar relatórios de bugs e começar a resolvê-los, levando a melhorias em todos os repositórios downstream.
Desvantagens a considerar
A fonte interna já é uma realidade em muitas organizações. Os benefícios potenciais são atraentes em situações em que se deseja aumentar a eficiência e o rendimento. Como acontece com qualquer abordagem de trabalho, não é necessariamente adequado para todos os ambientes.
Uma das preocupações mais frequentes sobre a fonte interna é seu impacto na segurança e na divulgação de informações. As semelhanças entre o código interno e o ecossistema de código aberto mais amplo só se estendem até agora: o código em uma biblioteca ou estrutura aberta não contém nada de confidencial, enquanto você pode lidar com sistemas proprietários bem guardados em sua função no trabalho.
É natural que alguns projetos sempre precisem ser bloqueados, acessíveis apenas às partes interessadas e à equipe de implementação diretamente responsável. No entanto, possuir alguns projetos de alto risco com fonte confidencial, onde não é seguro torná-los visíveis em toda a organização, não deve significar o fim de uma iniciativa de fonte interna.
Publicidade
Ainda vale a pena abrir projetos que podem ser expostos com segurança. Você também pode abstrair as partes não confidenciais de projetos privados em novas bibliotecas compartilhadas que são acessíveis publicamente. Isso traz os benefícios da fonte interna para mais perto de seus ativos confidenciais, sem realmente revelá-los.
Outro desafio interno da fonte é comunicar as expectativas aos desenvolvedores. Os desenvolvedores podem ser cautelosos ao explorar projetos abertos, especialmente se a fonte interna for apresentada a uma organização historicamente fechada. Isso pode ser resolvido de várias maneiras, como alocar tempo para que os desenvolvedores inspecionem o código escrito por outras equipes.
Também pode ser útil começar pequeno, expondo apenas as bibliotecas principais que serão úteis para muitas equipes diferentes na organização. Uma boa escolha pode ser um componente bem conhecido, mas privado, que tem a reputação de não ser confiável ou desatualizado – pense “ relatou bug com o ApiClient novamente. ” A abertura desse componente permite que os desenvolvedores contribuam com suas próprias correções conforme necessário, melhorando a produtividade e promovendo o crescimento orgânico da mentalidade de origem interna.
Se você tentar esta técnica, tenha o cuidado de avisar os autores do projeto original primeiro – mesmo que leve a uma maior eficiência geral, alguns indivíduos podem tratar outros contribuindo para o código que antes era “ deles ” como uma afronta. Comunique por que a fonte interna está sendo apresentada à organização, bem como os motivos específicos para a abertura de projetos individuais.
Conclusão
Código interno refere-se a pegar métodos de desenvolvimento da comunidade de código aberto e aplicá-los a projetos e processos internos. Facilita o acesso desimpedido a código e documentação úteis, ao mesmo tempo que promove a colaboração e a comunicação.
Implementado corretamente, o código-fonte interno pode ser um ponto de diferenciação para uma organização que reduz a redundância, aumenta o rendimento e promove uma cultura de desenvolvimento mais justa. Optar por deixar os projetos abertos por padrão permite que os autores originais explorem o talento humano de toda a organização. Da mesma forma que bibliotecas e frameworks de código aberto líderes colhem as habilidades coletivas da comunidade, o código interno também pode criar ferramentas internas que vão além do que qualquer equipe poderia alcançar.
Publicidade
A fonte interna pode ser difícil de acertar. Isso pode causar resistência dos proprietários do código e cautela por parte dos desenvolvedores. Ao introduzir qualquer forma de desenvolvimento de fonte interna, mantenha as pessoas na mesma página, documentando claramente as expectativas e os procedimentos de trabalho. Todos precisam se sentir confortáveis em contribuir para que todos os benefícios da fonte interior se tornem aparentes.
Nenhum comentário