Contribuição de código aberto 101
História por trás ⏮
Como mentor da ADPList , sempre me perguntam sobre minhas contribuições de código aberto como committer do Apache e como começar a usar o Github.
Ser apontado como Apache Committer ( apache/mxnet#19512 ) foi uma das minhas maiores conquistas no mundo da codificação e tecnologia. Desejo compartilhar os aprendizados de passar o tempo com a comunidade de código aberto. Isso me levou a orientar profissionais de software em início de carreira e estudantes universitários de ciência da computação/engg. Este artigo é uma tentativa de responder à pergunta -
O que eu faria hoje em novembro de 2022 se começasse minha jornada no código aberto?
♀ O que significa código aberto?
O Github é o garoto-propaganda do universo de código aberto, tendo popularizado a noção de repositórios, pull requests e controle de versão. Open-source é essencialmente sobre dezocratizar o acesso ao código-fonte. Trata-se de derrubar as paredes coladas com acordos de não divulgação [NDAs] e direitos autorais e marcas registradas restritivas ™️. Isso não significa que o código-fonte aberto não tenha licenças ou direitos autorais. Trata-se de fornecer liberdade para compartilhar conhecimentos e informações publicamente com a segurança de citações e referências adequadas. O código aberto é um grande nivelador, nesse sentido. Pessoas de todo o mundo podem ler, comentar, escrever e se expressar livrementesobre o software que está sendo desenvolvido no mundo de código aberto. É essa liberdade de expressão, o direito humano fundamental, quando aplicado ao mundo do software e da tecnologia, manifesta-se na forma de “código aberto”.
♂️O que implica a contribuição de código aberto?
Tudo bem, agora que estamos na mesma página no que diz respeito ao termo “código aberto”. Quais atividades estão associadas às contribuições do sistema operacional?
Na minha opinião, os seguintes conjuntos de ações se enquadram nas contribuições do sistema operacional
- Crie problemas, bugs e faça perguntas
- Levantar solicitações de recursos [através de problemas, jira ou software de rastreamento de projetos]
- Idealize e faça propostas
- Comente e participe das discussões
- Responder a perguntas
- Corrigir erros
- Revise o código desenvolvido por outros membros da comunidade
- Adicione testes, melhore a infraestrutura de teste/CI/CD
- Escrever novo código de recurso
- Participar de eventos virtuais/pessoais
- Evangelizar a biblioteca/produto/serviço
- Comunique-se ativamente nos canais de discussão/chat/listas de desenvolvedores
- Vote e participe do processo de lançamento [da biblioteca/produto/framework/serviço]
Como devo começar?
Eu seguiria 1 das 2 rotas a seguir
- Projeto famoso de renomadas organizações de código aberto
- Projetos em que tenho mais contexto
Procure projetos familiares apoiados por organizações de código aberto famosas

- Apache Software Foundations — hadoop, hive, hbase, mxnet, cassandra
- The Document Foundation — pacote LibreOffice [Open office]
- GNOME Foundation — famoso ambiente de desktop GNOME
- Linux Foundation — famoso pelo sistema operacional baseado em UNIX
- Fundação Mozilla — famosa pelo navegador
Uma maneira fácil de causar um impacto significativo na comunidade de desenvolvedores é quando você já possui algum modelo mental integrado do produto/estrutura/serviço subjacente. Eu canalizaria minha energia fazendo essas contribuições de código aberto mencionadas acima, aproveitando o conhecimento e o contexto que construí até agora como desenvolvedor.
Isso pode significar projetos diferentes para desenvolvedores diferentes, obviamente com base na pilha de software com a qual estão mais acostumados.
Vou listar projetos comuns de código aberto baseados em idiomas:

Os 10 principais projetos Javascript de Technical Geek
- Reagir pelo Facebook/Meta
- Tensorflow.js por TF [originalmente pelo Google]
- Node.js
- Angular.js
- jQuery
- Gerenciador de pacotes de nós [npm]
- Vue.js
- Ember.js
- Meteor.js
- Polímero
- Tensorflow — aprendizado profundo
- matplotlib — visualização de dados
- Frasco — web dev
- Django por Django Software Foundation
- PyTorch — originalmente do Facebook/Meta
- MXNet por Apache Software Foundation
- Ansible — ferramenta de implantação, operações e orquestração
- Requests — biblioteca HTTP da Python Software Foundation
- Scikit-learn — ML em python
- Pandas — ciência de dados/análise de dados
- OpenJDK
- RXJavaGenericName
- Apache Pinot — armazenamento de dados OLAP
- Hazelcast — plataforma de armazenamento e computação distribuída
- Formato Java do Google — Estilo Java do Google
- jOOQ — SQL para Java
- bota de mola
- Glide — cache e geração de imagens para Android
- Guava — principais bibliotecas Java do Google
- mockito — simulação, estrutura de teste
- pesquise no Google com as palavras-chave “top 10 open source projects” e “language”
- Pesquise no Github —https://github.com/search?q=java+language%3AJava&type=repositories&l=Java