De 0 a 1: O Caminho Apache do Apache APISIX
API7.ai
December 16, 2019
O Apache APISIX é um projeto muito jovem, de código aberto desde junho deste ano, ingressou no Panorama da CNCF em julho e entrou no Apache Incubator em outubro. Por isso, vou compartilhar com vocês como o APISIX foi de 0 a 1 e entrou no Apache Incubator.
Atualmente, o Apache APISIX tem 17 committers, de 16 empresas diferentes, e é um projeto muito baseado na comunidade. Cada committer tem um voto e decide sobre questões importantes, como lançamentos, eleição de novos committers e PPMC.
O Caminho Apache
O Caminho Apache é um conceito que todos conhecemos: comunidade acima do código. Código ruim pode ser alterado, e os mentores do Apache não ensinam como escrever código de nível superior, eles se preocupam mais se a comunidade é saudável e está crescendo. Desde que haja uma boa comunidade, o código ruim será refatorado para um código melhor por pessoas de nível superior. Portanto, enquanto a comunidade existir, o projeto sobreviverá, e isso é o mais importante no Apache.
A prioridade da lista de e-mails é outro ponto importante: aqueles que não aparecem na lista de e-mails são tratados como inexistentes. Isso é um grande desafio na China, onde as pessoas culturalmente e habitualmente não gostam muito de usar e-mails: primeiro, o tempo não é suficientemente ágil, talvez leve 1-2 dias para receber uma resposta após enviar um e-mail; segundo, muitas coisas na lista de e-mails são públicas, e algumas pessoas preferem conversar em privado; terceiro, apenas o inglês pode aparecer na lista de e-mails, mas, na verdade, o inglês dos chineses não é ruim, somos muito melhores do que a maioria dos outros países. Afinal, estudamos inglês por muitos anos, e há vários softwares de tradução, mesmo que haja erros gramaticais, não é um grande problema.
O terceiro ponto é a governança por elite, onde todos na comunidade Apache contribuem para ganhar mais voz, e títulos mais altos significam mais compromisso e responsabilidade.
O quarto ponto é a democracia: todos podem participar da votação do Apache, mesmo que você não esteja na comunidade Apache, mas nem todos os votos são válidos. Por exemplo, quando o APISIX entrou no Apache Incubator, eu poderia votar no projeto, mas tinha que escrever "no binding" depois para indicar que apoiava e acompanhava o projeto, mas era um observador, e esse voto não era decisivo para o projeto entrar no Apache. Apenas aqueles que contribuíram para o incubador e são reconhecidos pela comunidade, ou seja, o PMC do Apache Incubator, seus votos são válidos, o que é a democracia da comunidade Apache.
Modelo de governança para comunidades de código aberto
Sabemos que muitos projetos de código aberto estão sob fundações e outros não. Projetos sob fundações, como a Linux Foundation e a Apache Foundation, têm um modelo de governança chamado "consenso da comunidade", que requer uma discussão dentro da comunidade e uma votação após alcançar um consenso, em vez de uma votação direta. Se não houver discussão e consenso, a votação é sem sentido. Essa eficiência pode ser muito lenta, mas apenas quando toda a comunidade alcança um consenso, não haverá dissidência posterior.
O segundo modelo é o consenso da empresa comercial: desde que as pessoas da empresa comercial alcancem um consenso, o PR ou recurso pode ser mesclado, e a voz da comunidade é inútil, porque é um projeto controlado pela empresa comercial. Se você contribuir com código para a empresa comercial, a decisão de mesclagem está nas mãos da empresa comercial. Isso pode não importar para desenvolvedores individuais, mas importa para as empresas envolvidas no projeto. Geralmente, as empresas têm versões privadas e querem contribuir com seus recursos de volta para a comunidade, mas as empresas comerciais podem rejeitá-los porque conflitam com suas próprias versões comerciais.
O terceiro modelo é o ditador benevolente, mais tipicamente o Python, onde o indivíduo decide o desenvolvimento dos projetos de código aberto.
Os três modelos acima são os modelos de comunidades de código aberto. Se for uma empresa escolhendo um projeto, geralmente recomendamos projetos da Apache ou da Linux Foundation, pois, em primeiro lugar, não há riscos legais ocultos e, em segundo lugar, é um consenso da comunidade. Podemos contribuir para a comunidade dessa forma para obter mais voz, formando um ciclo virtuoso.
Como entrar no Apache Incubator
O Apache tem agora cerca de 50 projetos no incubador, dos quais 10 são da China. O APISIX é atualmente o único projeto de uma startup doméstica a entrar no Apache, enquanto muitos outros são de grandes empresas como Huawei, Ali e Baidu.
Os seguintes termos e etapas precisam ser entendidos para que um projeto entre no Apache Incubator:
- Champion: Ele é o apresentador do seu projeto, o papel mais importante que você precisa contatar primeiro, e ele precisa estar familiarizado com você e o projeto.
- Mentor: O mentor do projeto, após o projeto entrar no Apache Incubator, o Champion se transforma no papel de mentor. O Mentor guiará o projeto de um projeto no incubador para um projeto de nível superior do Apache, incluindo lançamento de versões Apache, gerenciamento de marca, crescimento da comunidade, etc. Se se tornar um projeto de nível superior, o projeto será autônomo da comunidade.
- Proposal: Após encontrar o Champion e o Mentor, o próximo passo é escrever uma Proposta, ou seja, uma proposta que apresenta quem eu sou, quais problemas resolvo, por que quero ingressar no Apache, se os arquivos de código do projeto atualmente conflitam com a licença Apache, quem são os committers iniciais, de quais empresas eles vêm, se há riscos potenciais, como desenvolver posteriormente, etc.
- Discuss: Em seguida, um e-mail de discussão será iniciado para ver quantas pessoas estão interessadas nisso, e alguns PMCs interessados podem ser encontrados para ingressar no programa de mentoria do Mentor nesta fase.
- Vote: Finalmente, há uma votação, e se a votação for aprovada, o projeto pode entrar no Apache Incubator.
O Caminho Apache e o choque com a cultura de código aberto doméstica
O projeto Apache na China enfrentará muitos desafios diferentes, relacionados ao ambiente e cultura de código aberto no país e no exterior.
Por exemplo, engenheiros domésticos sentirão que estão muito ocupados, frequentemente trabalhando em regime de 996, então não têm tempo e energia para fazer código aberto. Mas, na verdade, muitos engenheiros no trabalho também usam projetos de código aberto, escrevem recursos para projetos de código aberto, mas não enviam PRs ativamente e não iniciam discussões na comunidade antes de escrever código, o que é uma grande diferença cultural.
Em termos de comunicação, o Apache defende a discussão aberta na lista de e-mails, mas muitos desenvolvedores na China preferem maneiras não públicas de se comunicar, como WeChat, QQ e telefone. Especialmente se o PPMC de um projeto for majoritariamente da mesma empresa, um recurso pode ser finalizado durante a reunião matinal, mas não aparece na lista de e-mails, o que não está de acordo com a cultura do Apache.
Sobre votação, muitos desenvolvedores podem sentir que seu inglês não é bom ou que são fracos, e relutam em expressar suas opiniões na lista de e-mails e não participam da votação. Então, eles serão ignorados no final. Portanto, você precisa acumular algumas "contribuições" para ajudar os outros e aumentar lentamente sua influência. O Apache é uma fundação composta por indivíduos. O comportamento de cada um representa apenas a si mesmo, não a empresa. O voto de cada PMC é igual.
Sobre Título, no Apache, a posição mais alta é chamada de Apache Foundation Chair, e o gerente de cada projeto é VP, depois PMC (Project Management Council), Committer, Contributor, que tem um caminho semelhante à promoção de títulos em nossas empresas. Mas no Apache, mesmo que sua posição se torne alta, isso não significa que você tenha mais poder de voto, é mais uma obrigação. Por exemplo, para a votação do Apache APISIX para eleger um novo committer, o voto do presidente do incubador e o meu voto são iguais. O Título é mais uma honra no Apache. A Apache Foundation é uma organização sem fins lucrativos que enfatiza a contribuição, e é aí que o choque cultural ocorre.
Questões de direitos autorais
Os direitos autorais são uma questão muito importante, e as prisões do autor do Nginx que aconteceram há algum tempo foram devido a questões de direitos autorais. Antes que um projeto possa ingressar oficialmente no Apache Incubator, todos os committers e empresas devem assinar um CLA declarando que doarão todos os direitos autorais do projeto para a Apache Foundation. Após ingressar no Apache Incubator, o marco mais importante é o lançamento da primeira versão Apache, que é para limpar os riscos na licença, para que os usuários possam usá-la com confiança. Portanto, as empresas comerciais têm garantia de usar os projetos do Apache sem o problema de direitos autorais obscuros.
Finalmente, o Apache APISIX é um projeto de código aberto que está evoluindo rapidamente, espero que vocês participem e contribuam mais. Obrigado.