1*c991b7efSDaniel Pereira.. SPDX-License-Identifier: GPL-2.0 2*c991b7efSDaniel Pereira 3*c991b7efSDaniel Pereira===================================== 4*c991b7efSDaniel PereiraSubsistema de Rede do Linux (netdev) 5*c991b7efSDaniel Pereira===================================== 6*c991b7efSDaniel Pereira 7*c991b7efSDaniel Pereiratl;dr 8*c991b7efSDaniel Pereira----- 9*c991b7efSDaniel Pereira 10*c991b7efSDaniel Pereira- **Direcione seu patch para uma árvore** – use ``[PATCH net]``para correções 11*c991b7efSDaniel Pereira ou ``[PATCH net-next]`` para novas funcionalidades. 12*c991b7efSDaniel Pereira- **Tag Fixes** – para correções, a tag ``Fixes:`` é obrigatória, 13*c991b7efSDaniel Pereira independentemente da árvore de destino. 14*c991b7efSDaniel Pereira- **Tamanho da série** – não envie séries grandes (> 15 patches);divida-as em 15*c991b7efSDaniel Pereira partes menores. 16*c991b7efSDaniel Pereira- **Intervalo de envio** – não reenvie seus patches dentro de um período de 24 17*c991b7efSDaniel Pereira horas. 18*c991b7efSDaniel Pereira- **Reverse xmas tree** – organize as declarações de variáveis locais da mais 19*c991b7efSDaniel Pereira longa para a mais curta. 20*c991b7efSDaniel Pereira 21*c991b7efSDaniel Pereiranetdev 22*c991b7efSDaniel Pereira------ 23*c991b7efSDaniel PereiraA **netdev** é a lista de discussão para todos os assuntos do Linux relacionados 24*c991b7efSDaniel Pereiraa rede. Isso inclui qualquer item encontrado em ``net/`` (ex: código principal 25*c991b7efSDaniel Pereiracomo IPv6) e em ``drivers/net`` (ex: drivers específicos de hardware) na árvore 26*c991b7efSDaniel Pereirade diretórios do Linux. 27*c991b7efSDaniel Pereira 28*c991b7efSDaniel PereiraNote que alguns subsistemas (ex: drivers de rede sem fio/wireless), que possuem 29*c991b7efSDaniel Pereiraum alto volume de tráfego, possuem suas próprias listas de discussão e árvores 30*c991b7efSDaniel Pereiraespecíficas. 31*c991b7efSDaniel Pereira 32*c991b7efSDaniel PereiraComo muitas outras listas de discussão do Linux, a lista netdev é hospedada no 33*c991b7efSDaniel Pereira`kernel.org <https://www.kernel.org/>`_, com arquivos disponíveis em 34*c991b7efSDaniel Pereirahttps://lore.kernel.org/netdev/. 35*c991b7efSDaniel Pereira 36*c991b7efSDaniel PereiraÀ exceção dos subsistemas mencionados anteriormente, todo o desenvolvimento de 37*c991b7efSDaniel Pereirarede do Linux (ex: RFCs, revisões, comentários, etc.) ocorre na **netdev**. 38*c991b7efSDaniel Pereira 39*c991b7efSDaniel PereiraCiclo de Desenvolvimento 40*c991b7efSDaniel Pereira------------------------ 41*c991b7efSDaniel Pereira 42*c991b7efSDaniel PereiraAqui está um pouco de informação contextual sobre a cadência de desenvolvimento 43*c991b7efSDaniel Pereirado Linux. Cada nova versão (release) inicia-se com uma "janela de mesclagem" 44*c991b7efSDaniel Pereira(*merge window*) de duas semanas, onde os mantenedores principais enviam suas 45*c991b7efSDaniel Pereiranovas implementações para o Linus para incorporação na árvore principal 46*c991b7efSDaniel Pereira(*mainline tree*). 47*c991b7efSDaniel Pereira 48*c991b7efSDaniel PereiraApós as duas semanas, a janela de mesclagem é fechada e a versão é 49*c991b7efSDaniel Pereiranomeada/etiquetada como ``-rc1``. Nenhuma funcionalidade nova é incorporada à 50*c991b7efSDaniel Pereiraárvore principal após isso -- espera-se apenas correções (*fixes*) para o 51*c991b7efSDaniel Pereiraconteúdo da rc1. 52*c991b7efSDaniel Pereira 53*c991b7efSDaniel PereiraApós cerca de uma semana coletando correções para a rc1, a rc2 é lançada. Isso 54*c991b7efSDaniel Pereirase repete semanalmente até a rc7 (tipicamente; às vezes rc6 se o ritmo estiver 55*c991b7efSDaniel Pereiracalmo, ou rc8 se houver muita instabilidade); uma semana após a última vX.Y-rcN 56*c991b7efSDaniel Pereiraser concluída, a versão oficial vX.Y é lançada. 57*c991b7efSDaniel Pereira 58*c991b7efSDaniel PereiraPara descobrir em que ponto do ciclo estamos agora - carregue a página da 59*c991b7efSDaniel Pereiramainline (Linus) aqui: 60*c991b7efSDaniel Pereira 61*c991b7efSDaniel Pereira https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 62*c991b7efSDaniel Pereira 63*c991b7efSDaniel Pereirae observe o topo da seção de "tags". Se for rc1, estamos no início do ciclo 64*c991b7efSDaniel Pereirade desenvolvimento. Se a rc7 foi marcada há uma semana, então um lançamento 65*c991b7efSDaniel Pereiraé provavelmente iminente. Se a tag mais recente for uma tag de lançamento 66*c991b7efSDaniel Pereirafinal (sem o sufixo ``-rcN``) - muito provavelmente estamos em uma janela de 67*c991b7efSDaniel Pereiramesclagem (*merge window*) e o ``net-next`` está fechado. 68*c991b7efSDaniel Pereira 69*c991b7efSDaniel PereiraÁrvores git e fluxo de patches 70*c991b7efSDaniel Pereira------------------------------ 71*c991b7efSDaniel Pereira 72*c991b7efSDaniel PereiraExistem duas árvores de rede (repositórios git) em jogo. Ambas são coordenadas 73*c991b7efSDaniel Pereirapor David Miller, o mantenedor principal de rede. Há a árvore ``net``e a árvore 74*c991b7efSDaniel Pereira``net-next``. Como você provavelmente pode adivinhar pelos nomes, a árvore 75*c991b7efSDaniel Pereira``net`` é para correções de código existente já na árvore mainline de Linus, e a 76*c991b7efSDaniel Pereira``net-next`` é para onde o novo código vai para o lançamento futuro. 77*c991b7efSDaniel PereiraVocê pode encontrar as árvores aqui: 78*c991b7efSDaniel Pereira 79*c991b7efSDaniel Pereira- https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git 80*c991b7efSDaniel Pereira- https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git 81*c991b7efSDaniel Pereira 82*c991b7efSDaniel PereiraRelacionando isso ao desenvolvimento do kernel: no início da janela de mesclagem 83*c991b7efSDaniel Pereira(*merge window*) de 2 semanas, a árvore ``net-next`` será fechada, sem novas 84*c991b7efSDaniel Pereiramudanças ou funcionalidades. O conteúdo novo acumulado nas últimas 10 semanas 85*c991b7efSDaniel Pereiraserá passado para a mainline/Linus via um *pull request* para a vX.Y ao mesmo 86*c991b7efSDaniel Pereiratempo, a árvore ``net`` começará a acumular correções para este conteúdo enviado 87*c991b7efSDaniel Pereirarelacionado à vX.Y. 88*c991b7efSDaniel Pereira 89*c991b7efSDaniel PereiraUm anúncio indicando quando a ``net-next`` foi fechada é geralmente enviado para 90*c991b7efSDaniel Pereiraa netdev, mas sabendo o que foi dito acima, você pode prever isso com 91*c991b7efSDaniel Pereiraantecedência. 92*c991b7efSDaniel Pereira 93*c991b7efSDaniel Pereira.. warning:: 94*c991b7efSDaniel Pereira 95*c991b7efSDaniel Pereira Não envie novo conteúdo para a ``net-next`` para a netdev durante o período 96*c991b7efSDaniel Pereira em que a árvore ``net-next`` estiver fechada. 97*c991b7efSDaniel Pereira 98*c991b7efSDaniel PereiraPatches RFC enviados apenas para revisão são obviamente bem-vindos a qualquer 99*c991b7efSDaniel Pereiramomento (use ``--subject-prefix='RFC net-next'`` com ``git format-patch``). 100*c991b7efSDaniel Pereira 101*c991b7efSDaniel PereiraPouco depois das duas semanas terem passado (e a vX.Y-rc1 ser lançada), a árvore 102*c991b7efSDaniel Pereirapara a ``net-next`` reabre para coletar conteúdo para o próximo lançamento 103*c991b7efSDaniel Pereira(vX.Y+1). 104*c991b7efSDaniel Pereira 105*c991b7efSDaniel PereiraSe você não estiver inscrito na netdev e/ou simplesmente não tiver certeza se a 106*c991b7efSDaniel Pereira``net-next`` já reabriu, basta verificar o link do repositório git da 107*c991b7efSDaniel Pereira``net-next`` acima para quaisquer novos *commits* relacionados à rede. Você 108*c991b7efSDaniel Pereiratambém pode verificar o seguinte site para o status atual: 109*c991b7efSDaniel Pereira 110*c991b7efSDaniel Pereira https://netdev.bots.linux.dev/net-next.html 111*c991b7efSDaniel Pereira 112*c991b7efSDaniel PereiraA árvore ``net`` continua a coletar correções para o conteúdo da vX.Y e é 113*c991b7efSDaniel Pereiraenviada de volta para Linus em intervalos regulares (~semanais). Isso significa 114*c991b7efSDaniel Pereiraque o foco da ``net`` é a estabilização e correções de bugs. 115*c991b7efSDaniel Pereira 116*c991b7efSDaniel PereiraFinalmente, a vX.Y é lançada e todo o ciclo recomeça. 117*c991b7efSDaniel Pereira 118*c991b7efSDaniel PereiraRevisão de patches da netdev 119*c991b7efSDaniel Pereira---------------------------- 120*c991b7efSDaniel Pereira 121*c991b7efSDaniel PereiraStatus do patch 122*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~ 123*c991b7efSDaniel Pereira 124*c991b7efSDaniel PereiraO status de um patch pode ser verificado olhando a fila principal do patchwork 125*c991b7efSDaniel Pereirapara a netdev: 126*c991b7efSDaniel Pereira 127*c991b7efSDaniel Pereira https://patchwork.kernel.org/project/netdevbpf/list/ 128*c991b7efSDaniel Pereira 129*c991b7efSDaniel PereiraO campo "State" informará exatamente onde as coisas estão com o seu patch: 130*c991b7efSDaniel Pereira 131*c991b7efSDaniel Pereira================= ============================================================ 132*c991b7efSDaniel PereiraEstado do patch Descrição 133*c991b7efSDaniel Pereira================= ============================================================ 134*c991b7efSDaniel PereiraNew, Under review revisão pendente, o patch está na fila do mantenedor 135*c991b7efSDaniel Pereira para revisão; os dois estados são usados alternadamente 136*c991b7efSDaniel Pereira (dependendo do co-mantenedor exato que estiver lidando 137*c991b7efSDaniel Pereira com o patchwork no momento) 138*c991b7efSDaniel PereiraAccepted o patch foi aplicado à árvore de rede apropriada, 139*c991b7efSDaniel Pereira isso é geralmente definido de forma automática pelo pw-bot 140*c991b7efSDaniel PereiraNeeds ACK aguardando um "ack" de um especialista da área 141*c991b7efSDaniel Pereira ou testes 142*c991b7efSDaniel PereiraChanges requested o patch não passou na revisão, espera-se uma nova 143*c991b7efSDaniel Pereira revisão com mudanças apropriadas no código e na mensagem 144*c991b7efSDaniel Pereira de commit 145*c991b7efSDaniel PereiraRejected o patch foi rejeitado e não se espera uma nova 146*c991b7efSDaniel Pereira revisão 147*c991b7efSDaniel PereiraNot applicable espera-se que o patch seja aplicado fora do 148*c991b7efSDaniel Pereira subsistema de rede 149*c991b7efSDaniel PereiraAwaiting upstream o patch deve ser revisado e tratado pelo sub-mantenedor 150*c991b7efSDaniel Pereira apropriado, que o enviará para as árvores de rede; 151*c991b7efSDaniel Pereira patches definidos como ``Awaiting upstream`` no patchwork 152*c991b7efSDaniel Pereira da netdev geralmente permanecerão neste estado, 153*c991b7efSDaniel Pereira independentemente de o sub-mantenedor ter solicitado 154*c991b7efSDaniel Pereira mudanças, aceito ou rejeitado o patch 155*c991b7efSDaniel PereiraDeferred o patch precisa ser reenviado mais tarde, geralmente 156*c991b7efSDaniel Pereira devido a alguma dependência ou porque foi enviado para 157*c991b7efSDaniel Pereira uma árvore fechada 158*c991b7efSDaniel PereiraSuperseded uma nova versão do patch foi enviada, geralmente 159*c991b7efSDaniel Pereira definido pelo pw-bot 160*c991b7efSDaniel PereiraRFC não deve ser aplicado, geralmente não está na 161*c991b7efSDaniel Pereira fila de revisão do mantenedor; o pw-bot pode definir 162*c991b7efSDaniel Pereira patches para este estado automaticamente com base nas 163*c991b7efSDaniel Pereira tags do assunto 164*c991b7efSDaniel Pereira================= ============================================================ 165*c991b7efSDaniel Pereira 166*c991b7efSDaniel PereiraOs patches são indexados pelo cabeçalho ``Message-ID`` dos e-mails que os 167*c991b7efSDaniel Pereiratransportaram; portanto, se você tiver problemas para encontrar seu patch, 168*c991b7efSDaniel Pereiraanexe o valor do ``Message-ID`` à URL acima. 169*c991b7efSDaniel Pereira 170*c991b7efSDaniel PereiraAtualizando o status do patch 171*c991b7efSDaniel Pereira----------------------------- 172*c991b7efSDaniel Pereira 173*c991b7efSDaniel PereiraColaboradores e revisores não têm permissões para atualizar o estado do patch 174*c991b7efSDaniel Pereiradiretamente no patchwork. O Patchwork não expõe muitas informações sobre o 175*c991b7efSDaniel Pereirahistórico do estado dos patches; portanto, ter várias pessoas atualizando o 176*c991b7efSDaniel Pereiraestado leva a confusões. 177*c991b7efSDaniel Pereira 178*c991b7efSDaniel PereiraEm vez de delegar permissões do patchwork, a netdev usa um robô de e-mail 179*c991b7efSDaniel Pereirasimples (bot) que procura por comandos/linhas especiais dentro dos e-mails 180*c991b7efSDaniel Pereiraenviados para a lista de discussão. Por exemplo, para marcar uma série como 181*c991b7efSDaniel PereiraMudanças Solicitadas (*Changes Requested*), é necessário enviar a seguinte 182*c991b7efSDaniel Pereiralinha em qualquer lugar na thread do e-mail:: 183*c991b7efSDaniel Pereira 184*c991b7efSDaniel Pereira pw-bot: changes-requested 185*c991b7efSDaniel Pereira 186*c991b7efSDaniel PereiraComo resultado, o bot definirá toda a série como Mudanças Solicitadas. Isso 187*c991b7efSDaniel Pereirapode ser útil quando o autor descobre um bug em sua própria série e deseja 188*c991b7efSDaniel Pereiraevitar que ela seja aplicada. 189*c991b7efSDaniel Pereira 190*c991b7efSDaniel PereiraO uso do bot é totalmente opcional; em caso de dúvida, ignore completamente a 191*c991b7efSDaniel Pereiraexistência dele. Os mantenedores classificarão e atualizarão o estado dos 192*c991b7efSDaniel Pereirapatches por conta própria. Nenhum e-mail deve ser enviado à lista com o 193*c991b7efSDaniel Pereirapropósito principal de se comunicar com o bot; os comandos do bot devem ser 194*c991b7efSDaniel Pereiravistos como metadados. 195*c991b7efSDaniel Pereira 196*c991b7efSDaniel PereiraO uso do bot é restrito aos autores dos patches (o cabeçalho ``From:`` no envio 197*c991b7efSDaniel Pereirado patch e no comando deve coincidir!), mantenedores do código modificado de 198*c991b7efSDaniel Pereiraacordo com o arquivo MAINTAINERS (novamente, o ``From:`` deve coincidir 199*c991b7efSDaniel Pereiracom a entrada no MAINTAINERS) e alguns revisores seniores. 200*c991b7efSDaniel Pereira 201*c991b7efSDaniel PereiraO bot registra sua atividade aqui: 202*c991b7efSDaniel Pereira 203*c991b7efSDaniel Pereira https://netdev.bots.linux.dev/pw-bot.html 204*c991b7efSDaniel Pereira 205*c991b7efSDaniel PereiraPrazos de revisão 206*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~ 207*c991b7efSDaniel Pereira 208*c991b7efSDaniel PereiraDe modo geral, os patches são triados rapidamente (em menos de 48h). Mas 209*c991b7efSDaniel Pereiraseja paciente; se o seu patch estiver ativo no patchwork (ou seja, listado 210*c991b7efSDaniel Pereirana lista de patches do projeto), as chances de ele ter sido esquecido são 211*c991b7efSDaniel Pereirapróximas de zero. 212*c991b7efSDaniel Pereira 213*c991b7efSDaniel PereiraO alto volume de desenvolvimento na netdev faz com que os revisores encerrem 214*c991b7efSDaniel Pereiradiscussões de forma relativamente rápida. É muito improvável que novos 215*c991b7efSDaniel Pereiracomentários e respostas cheguem após uma semana de silêncio. Se um 216*c991b7efSDaniel Pereirapatch não estiver mais ativo no patchwork e a thread ficar inativa por mais de 217*c991b7efSDaniel Pereirauma semana - esclareça os próximos passos e/ou envie a próxima versão. 218*c991b7efSDaniel Pereira 219*c991b7efSDaniel PereiraEspecificamente para envios de RFC, se ninguém responder em uma semana ou os 220*c991b7efSDaniel Pereirarevisores perderam o envio ou não têm opiniões fortes a respeito. Se o código 221*c991b7efSDaniel Pereiraestiver pronto, reenvie como um PATCH. 222*c991b7efSDaniel Pereira 223*c991b7efSDaniel PereiraE-mails dizendo apenas "ping" ou "bump" são considerados rudes. Se você não 224*c991b7efSDaniel Pereiraconseguir identificar o status do patch pelo patchwork ou onde a discussão 225*c991b7efSDaniel Pereiraparou - descreva sua melhor suposição e pergunte se ela está correta. Por 226*c991b7efSDaniel Pereiraexemplo:: 227*c991b7efSDaniel Pereira 228*c991b7efSDaniel Pereira Não entendo quais são os próximos passos. A Pessoa X parece estar descontente 229*c991b7efSDaniel Pereira com A; devo fazer B e enviar novamente os patches? 230*c991b7efSDaniel Pereira 231*c991b7efSDaniel Pereira.. _Solicitações de mudanças: 232*c991b7efSDaniel Pereira 233*c991b7efSDaniel PereiraMudanças solicitadas 234*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~ 235*c991b7efSDaniel Pereira 236*c991b7efSDaniel PereiraPatches marcados como ``Changes Requested`` precisam ser revisados. A nova 237*c991b7efSDaniel Pereiraversão deve vir com um registro de alterações (changelog), 238*c991b7efSDaniel Pereirapreferencialmente incluindo links para as postagens anteriores, por exemplo:: 239*c991b7efSDaniel Pereira 240*c991b7efSDaniel Pereira [PATCH net-next v3] net: faz as vacas dizerem "muuu" 241*c991b7efSDaniel Pereira 242*c991b7efSDaniel Pereira Mesmo os usuários que não bebem leite apreciam ouvir as vacas dizendo 243*c991b7efSDaniel Pereira "muuu". 244*c991b7efSDaniel Pereira 245*c991b7efSDaniel Pereira A quantidade de mugidos dependerá da taxa de pacotes, portanto, deve 246*c991b7efSDaniel Pereira corresponder muito bem ao ciclo diurno. 247*c991b7efSDaniel Pereira 248*c991b7efSDaniel Pereira Signed-off-by: Joe Defarmer <joe@barn.org> 249*c991b7efSDaniel Pereira --- 250*c991b7efSDaniel Pereira v3: 251*c991b7efSDaniel Pereira - adicionada uma nota sobre a flutuação do mugido conforme a hora 252*c991b7efSDaniel Pereira do dia na 253*c991b7efSDaniel Pereira mensagem de commit 254*c991b7efSDaniel Pereira v2: https://lore.kernel.org/netdev/123themessageid@barn.org/ 255*c991b7efSDaniel Pereira - corrigido argumento ausente na kernel doc para netif_is_bovine() 256*c991b7efSDaniel Pereira - corrigido vazamento de memória (memory leak) em 257*c991b7efSDaniel Pereira netdev_register_cow() 258*c991b7efSDaniel Pereira v1: https://lore.kernel.org/netdev/456getstheclicks@barn.org/ 259*c991b7efSDaniel Pereira 260*c991b7efSDaniel PereiraA mensagem de commit deve ser revisada para responder a quaisquer perguntas que 261*c991b7efSDaniel Pereiraos revisores tenham feito em discussões anteriores. Ocasionalmente, a 262*c991b7efSDaniel Pereiraatualização da mensagem de commit será a única mudança na nova versão. 263*c991b7efSDaniel Pereira 264*c991b7efSDaniel PereiraReenvios parciais 265*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~ 266*c991b7efSDaniel Pereira 267*c991b7efSDaniel PereiraPor favor, sempre reenvie a série completa de patches e certifique-se de 268*c991b7efSDaniel Pereiranumerar seus patches de forma que fique claro que este é o conjunto mais 269*c991b7efSDaniel Pereirarecente e completo de patches que pode ser aplicado. Não tente reenviar apenas 270*c991b7efSDaniel Pereiraos patches que foram alterados. 271*c991b7efSDaniel Pereira 272*c991b7efSDaniel PereiraLidando com patches aplicados incorretamente 273*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 274*c991b7efSDaniel Pereira 275*c991b7efSDaniel PereiraOcasionalmente, uma série de patches é aplicada antes de receber feedback 276*c991b7efSDaniel Pereiracrítico, ou a versão errada de uma série é aplicada. 277*c991b7efSDaniel Pereira 278*c991b7efSDaniel PereiraNão é possível fazer o patch desaparecer uma vez que ele foi enviado (pushed); 279*c991b7efSDaniel Pereirao histórico de commits nas árvores netdev é imutável. Por favor, envie versões 280*c991b7efSDaniel Pereiraincrementais sobre o que foi mesclado para corrigir os patches da maneira que 281*c991b7efSDaniel Pereiraeles ficariam se a sua série de patches mais recente fosse mesclada. 282*c991b7efSDaniel Pereira 283*c991b7efSDaniel PereiraEm casos onde uma reversão completa (revert) é necessária, a reversão deve ser 284*c991b7efSDaniel Pereiraenviada como um patch para a lista com uma mensagem de commit explicando os 285*c991b7efSDaniel Pereiraproblemas técnicos com o commit revertido. Reversões devem ser usadas como 286*c991b7efSDaniel Pereiraúltimo recurso, quando a mudança original está completamente errada; correções 287*c991b7efSDaniel Pereiraincrementais são preferidas. 288*c991b7efSDaniel Pereira 289*c991b7efSDaniel PereiraÁrvore estável 290*c991b7efSDaniel Pereira~~~~~~~~~~~~~~ 291*c991b7efSDaniel Pereira 292*c991b7efSDaniel PereiraEmbora antigamente as submissões para a netdev não devessem carregar tags 293*c991b7efSDaniel Pereiraexplícitas ``CC: stable@vger.kernel.org``, esse não é mais o caso hoje em dia. 294*c991b7efSDaniel PereiraPor favor, siga as regras padrão de estabilidade em 295*c991b7efSDaniel Pereira``Documentation/process/stable-kernel-rules.rst``, e certifique-se de incluir as 296*c991b7efSDaniel Pereiratags Fixes apropriadas! 297*c991b7efSDaniel Pereira 298*c991b7efSDaniel PereiraCorreções de segurança 299*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~ 300*c991b7efSDaniel Pereira 301*c991b7efSDaniel PereiraNão envie e-mails diretamente para os mantenedores da netdev se você acha que 302*c991b7efSDaniel Pereiradescobriu um bug que possa ter possíveis implicações de segurança. O atual 303*c991b7efSDaniel Pereiramantenedor da netdev tem solicitado consistentemente que as pessoas usem as 304*c991b7efSDaniel Pereiralistas de discussão e não entrem em contato diretamente. Se você não estiver 305*c991b7efSDaniel Pereirade acordo com isso, considere enviar um e-mail para security@kernel.org ou 306*c991b7efSDaniel Pereiraler sobre http://oss-security.openwall.org/wiki/mailing-lists/distros como 307*c991b7efSDaniel Pereirapossíveis mecanismos alternativos. 308*c991b7efSDaniel Pereira 309*c991b7efSDaniel PereiraEnvio conjunto de mudanças em componentes de espaço do usuário 310*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 311*c991b7efSDaniel Pereira 312*c991b7efSDaniel PereiraO código de espaço do usuário (*user space*) que exercita funcionalidades do 313*c991b7efSDaniel Pereirakernel deve ser enviado juntamente com os patches do kernel. Isso dá aos 314*c991b7efSDaniel Pereirarevisores a chance de ver como qualquer nova interface é usada e quão 315*c991b7efSDaniel Pereirabem ela funciona. 316*c991b7efSDaniel Pereira 317*c991b7efSDaniel PereiraQuando as ferramentas de espaço do usuário residem no próprio repositório do 318*c991b7efSDaniel Pereirakernel, todas as alterações devem geralmente vir em uma única série. Se a série 319*c991b7efSDaniel Pereirase tornar muito grande ou se o projeto de espaço do usuário não for revisado na 320*c991b7efSDaniel Pereiranetdev, inclua um link para um repositório público onde os patches de espaço do 321*c991b7efSDaniel Pereirausuário possam ser vistos. 322*c991b7efSDaniel Pereira 323*c991b7efSDaniel PereiraNo caso de ferramentas de espaço do usuário residirem em um repositório 324*c991b7efSDaniel Pereiraseparado, mas serem revisadas na netdev (por exemplo, patches para ferramentas 325*c991b7efSDaniel Pereira``iproute2``), os patches do kernel e do espaço do usuário devem formar séries 326*c991b7efSDaniel Pereira(threads) separadas quando postados na lista de discussão, por exemplo:: 327*c991b7efSDaniel Pereira 328*c991b7efSDaniel Pereira [PATCH net-next 0/3] net: carta de apresentação de alguma funcionalidade 329*c991b7efSDaniel Pereira └─ [PATCH net-next 1/3] net: preparação para alguma funcionalidade 330*c991b7efSDaniel Pereira └─ [PATCH net-next 2/3] net: implementação de alguma funcionalidade 331*c991b7efSDaniel Pereira └─ [PATCH net-next 3/3] selftest: net: alguma funcionalidade 332*c991b7efSDaniel Pereira 333*c991b7efSDaniel Pereira [PATCH iproute2-next] ip: adiciona suporte para alguma funcionalidade 334*c991b7efSDaniel Pereira 335*c991b7efSDaniel PereiraA postagem em uma única thread é desencorajada porque confunde o patchwork 336*c991b7efSDaniel Pereira(a partir da versão 2.2.2 do patchwork). 337*c991b7efSDaniel Pereira 338*c991b7efSDaniel PereiraEnvio conjunto de selftests 339*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 340*c991b7efSDaniel Pereira 341*c991b7efSDaniel PereiraOs selftests devem fazer parte da mesma série que as mudanças de código. 342*c991b7efSDaniel PereiraEspecificamente para correções, tanto a mudança de código quanto o teste 343*c991b7efSDaniel Pereirarelacionado devem ir para a mesma árvore (os testes podem não ter uma tag 344*c991b7efSDaniel PereiraFixes, o que é esperado). Misturar mudanças de código e mudanças de teste em 345*c991b7efSDaniel Pereiraum único commit é desencorajado. 346*c991b7efSDaniel Pereira 347*c991b7efSDaniel PereiraPreparando as mudanças 348*c991b7efSDaniel Pereira---------------------- 349*c991b7efSDaniel Pereira 350*c991b7efSDaniel PereiraAtenção aos detalhes é importante. Releia seu próprio trabalho como se você 351*c991b7efSDaniel Pereirafosse o revisor. Você pode começar usando o ``checkpatch.pl``, talvez até com 352*c991b7efSDaniel Pereiraa flag ``--strict``. Mas não seja robótico e irracional ao fazer isso. Se sua 353*c991b7efSDaniel Pereiramudança for uma correção de bug, certifique-se de que seu log de commit indique 354*c991b7efSDaniel Pereirao sintoma visível para o usuário final, a razão subjacente de por que isso 355*c991b7efSDaniel Pereiraacontece e, se necessário, explique por que a correção proposta é a melhor 356*c991b7efSDaniel Pereiramaneira de resolver as coisas. Não corrompa espaços em branco e, como é comum, 357*c991b7efSDaniel Pereiranão use recuos incorretos em argumentos de função que abrangem várias linhas. 358*c991b7efSDaniel PereiraSe for o seu primeiro patch, envie-o para si mesmo por e-mail para que você 359*c991b7efSDaniel Pereirapossa testar a aplicação em uma árvore sem patches para confirmar que a 360*c991b7efSDaniel Pereirainfraestrutura não o danificou. 361*c991b7efSDaniel Pereira 362*c991b7efSDaniel PereiraFinalmente, volte e leia ``Documentation/process/submitting-patches.rst`` 363*c991b7efSDaniel Pereirapara ter certeza de que não está repetindo algum erro comum documentado lá. 364*c991b7efSDaniel Pereira 365*c991b7efSDaniel PereiraIndicando a árvore de destino 366*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 367*c991b7efSDaniel Pereira 368*c991b7efSDaniel PereiraPara ajudar os mantenedores e os bots de CI, você deve marcar explicitamente 369*c991b7efSDaniel Pereiraqual árvore seu patch tem como alvo. Supondo que você use git, utilize a flag 370*c991b7efSDaniel Pereirade prefixo:: 371*c991b7efSDaniel Pereira 372*c991b7efSDaniel Pereira git format-patch --subject-prefix='PATCH net-next' inicio..fim 373*c991b7efSDaniel Pereira 374*c991b7efSDaniel PereiraUse ``net`` em vez de ``net-next`` (sempre em letras minúsculas) no comando 375*c991b7efSDaniel Pereiraacima para conteúdos de correção de bugs da árvore ``net``. 376*c991b7efSDaniel Pereira 377*c991b7efSDaniel PereiraDividindo o trabalho em patches 378*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 379*c991b7efSDaniel Pereira 380*c991b7efSDaniel PereiraColoque-se no lugar do revisor. Cada patch é lido separadamente e, portanto, 381*c991b7efSDaniel Pereiradeve constituir um passo compreensível em direção ao seu objetivo declarado. 382*c991b7efSDaniel Pereira 383*c991b7efSDaniel PereiraEvite enviar séries com mais de 15 patches. Séries maiores levam mais tempo 384*c991b7efSDaniel Pereirapara serem revisadas, pois os revisores adiarão a análise até encontrarem um 385*c991b7efSDaniel Pereiragrande bloco de tempo disponível. Uma série pequena pode ser revisada em pouco 386*c991b7efSDaniel Pereiratempo, então os mantenedores simplesmente a revisam de imediato. Como resultado, 387*c991b7efSDaniel Pereirauma sequência de séries menores é mesclada mais rapidamente e com melhor 388*c991b7efSDaniel Pereiracobertura de revisão. Reenviar séries grandes também aumenta o tráfego na lista 389*c991b7efSDaniel Pereirade discussão. 390*c991b7efSDaniel Pereira 391*c991b7efSDaniel PereiraLimitar patches pendentes na lista de discussão 392*c991b7efSDaniel Pereira----------------------------------------------- 393*c991b7efSDaniel Pereira 394*c991b7efSDaniel PereiraEvite ter mais de 15 patches, em todas as séries, pendentes de revisão na lista 395*c991b7efSDaniel Pereirade discussão para uma única árvore. Em outras palavras, um máximo de 15 patches 396*c991b7efSDaniel Pereirasob revisão na ``net`` e um máximo de 15 patches sob revisão na ``net-next``. 397*c991b7efSDaniel Pereira 398*c991b7efSDaniel PereiraEste limite tem o objetivo de focar o esforço do desenvolvedor nos testes dos 399*c991b7efSDaniel Pereirapatches antes da revisão upstream, auxiliando a qualidade das submissões 400*c991b7efSDaniel Pereiraupstream e aliviando a carga sobre os revisores. 401*c991b7efSDaniel Pereira 402*c991b7efSDaniel PereiraOrdenação de variáveis locais ("árvore invertida", "RCS") 403*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 404*c991b7efSDaniel Pereira 405*c991b7efSDaniel PereiraA netdev tem uma convenção para ordenar variáveis locais em funções. Ordene as 406*c991b7efSDaniel Pereiralinhas de declaração de variáveis da mais longa para a mais curta, por exemplo:: 407*c991b7efSDaniel Pereira 408*c991b7efSDaniel Pereira struct scatterlist *sg; 409*c991b7efSDaniel Pereira struct sk_buff *skb; 410*c991b7efSDaniel Pereira int err, i; 411*c991b7efSDaniel Pereira 412*c991b7efSDaniel PereiraSe houver dependências entre as variáveis que impeçam a ordenação, mova a 413*c991b7efSDaniel Pereirainicialização para fora da linha de declaração. 414*c991b7efSDaniel Pereira 415*c991b7efSDaniel PereiraPrecedência de formatação 416*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~ 417*c991b7efSDaniel Pereira 418*c991b7efSDaniel PereiraAo trabalhar em código existente que utiliza formatação não padrão, faça com 419*c991b7efSDaniel Pereiraque seu código siga as diretrizes mais recentes, para que, eventualmente, 420*c991b7efSDaniel Pereiratodo o código no domínio da netdev esteja no formato preferido. 421*c991b7efSDaniel Pereira 422*c991b7efSDaniel PereiraUso de construções gerenciadas por dispositivo e cleanup.h 423*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 424*c991b7efSDaniel Pereira 425*c991b7efSDaniel PereiraHistoricamente, a netdev permanece cética em relação às promessas de todas as 426*c991b7efSDaniel PereiraAPIs de "auto-limpeza" (auto-cleanup), incluindo até mesmo os auxiliares 427*c991b7efSDaniel Pereira``devm_``. Eles não são o estilo preferido de implementação, apenas um estilo 428*c991b7efSDaniel Pereiraaceitável. 429*c991b7efSDaniel Pereira 430*c991b7efSDaniel PereiraO uso de ``guard()`` é desencorajado em qualquer função com mais de 20 linhas; 431*c991b7efSDaniel Pereira``scoped_guard()`` é considerado mais legível. O uso de lock/unlock normal 432*c991b7efSDaniel Pereiraainda é (levemente) preferido. 433*c991b7efSDaniel Pereira 434*c991b7efSDaniel PereiraConstruções de limpeza de baixo nível (como ``__free()``) podem ser usadas ao 435*c991b7efSDaniel Pereiraconstruir APIs e auxiliares, especialmente iteradores com escopo. No entanto, o 436*c991b7efSDaniel Pereirauso direto de ``__free()`` dentro do núcleo de rede (networking core) e drivers 437*c991b7efSDaniel Pereiraé desencorajado. Orientações semelhantes se aplicam à declaração de variáveis 438*c991b7efSDaniel Pereirano meio da função. 439*c991b7efSDaniel Pereira 440*c991b7efSDaniel PereiraPatches de limpeza (Clean-up patches) 441*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 442*c991b7efSDaniel Pereira 443*c991b7efSDaniel PereiraA netdev desencoraja patches que realizam limpezas simples que não estejam no 444*c991b7efSDaniel Pereiracontexto de outro trabalho. Por exemplo: 445*c991b7efSDaniel Pereira 446*c991b7efSDaniel Pereira* Tratar avisos do ``checkpatch.pl`` e outros avisos triviais de estilo de 447*c991b7efSDaniel Pereira codificação 448*c991b7efSDaniel Pereira* Tratar problemas de Ordenação de variáveis locais 449*c991b7efSDaniel Pereira* Conversões para APIs gerenciadas por dispositivo (auxiliares ``devm_``) 450*c991b7efSDaniel Pereira 451*c991b7efSDaniel PereiraIsso ocorre porque se considera que a agitação (*churn*) que tais mudanças 452*c991b7efSDaniel Pereiraproduzem tem um custo maior do que o valor de tais limpezas. 453*c991b7efSDaniel Pereira 454*c991b7efSDaniel PereiraPor outro lado, correções de ortografia e gramática não são desencorajadas. 455*c991b7efSDaniel Pereira 456*c991b7efSDaniel PereiraReenviando após a revisão 457*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~ 458*c991b7efSDaniel Pereira 459*c991b7efSDaniel PereiraAguarde pelo menos 24 horas entre as postagens. Isso garantirá que revisores de 460*c991b7efSDaniel Pereiratodas as localizações geográficas tenham a chance de se manifestar. Não espere 461*c991b7efSDaniel Pereiramuito tempo (semanas) entre as postagens, pois isso tornará mais difícil para 462*c991b7efSDaniel Pereiraos revisores lembrarem de todo o contexto. 463*c991b7efSDaniel Pereira 464*c991b7efSDaniel PereiraCertifique-se de tratar todo o feedback em sua nova postagem. Não envie uma 465*c991b7efSDaniel Pereiranova versão do código se a discussão sobre a versão anterior ainda estiver em 466*c991b7efSDaniel Pereiraandamento, a menos que seja instruído diretamente por um revisor. 467*c991b7efSDaniel Pereira 468*c991b7efSDaniel PereiraA nova versão dos patches deve ser postada como uma thread separada, não como 469*c991b7efSDaniel Pereirauma resposta à postagem anterior. O registro de alterações (changelog) deve 470*c991b7efSDaniel Pereiraincluir um link para a postagem anterior (veja :ref:`Solicitações 471*c991b7efSDaniel Pereirade mudanças`). 472*c991b7efSDaniel Pereira 473*c991b7efSDaniel PereiraTestes 474*c991b7efSDaniel Pereira------ 475*c991b7efSDaniel Pereira 476*c991b7efSDaniel PereiraNível de teste esperado 477*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~ 478*c991b7efSDaniel Pereira 479*c991b7efSDaniel PereiraNo mínimo, suas alterações devem passar por uma compilação ``allyesconfig`` e 480*c991b7efSDaniel Pereirauma ``allmodconfig`` com ``W=1`` definido, sem novos avisos ou falhas. 481*c991b7efSDaniel Pereira 482*c991b7efSDaniel PereiraO ideal é que você tenha feito testes em tempo de execução específicos para sua 483*c991b7efSDaniel Pereiraalteração, e que a série de patches contenha um conjunto de selftests do kernel 484*c991b7efSDaniel Pereirapara ``tools/testing/selftests/net`` ou usando o framework KUnit. 485*c991b7efSDaniel Pereira 486*c991b7efSDaniel PereiraEspera-se que você teste suas alterações no topo da árvore de rede relevante 487*c991b7efSDaniel Pereira(``net`` ou ``net-next``) e não, por exemplo, em uma árvore estável ou na 488*c991b7efSDaniel Pereira``linux-next``. 489*c991b7efSDaniel Pereira 490*c991b7efSDaniel PereiraVerificações do patchwork 491*c991b7efSDaniel Pereira~~~~~~~~~~~~~~~~~~~~~~~~~ 492*c991b7efSDaniel Pereira 493*c991b7efSDaniel PereiraAs verificações (*checks*) no patchwork são, em sua maioria, wrappers simples 494*c991b7efSDaniel Pereiraem torno de scripts existentes do kernel; as fontes estão disponíveis em: 495*c991b7efSDaniel Pereira 496*c991b7efSDaniel Pereirahttps://github.com/linux-netdev/nipa/tree/master/tests 497*c991b7efSDaniel Pereira 498*c991b7efSDaniel Pereira**Não** envie seus patches apenas para executá-los nas verificações. Você deve 499*c991b7efSDaniel Pereiragarantir que seus patches estejam prontos, testando-os localmente antes de 500*c991b7efSDaniel Pereirapostar na lista de discussão. A instância do bot de build do patchwork fica 501*c991b7efSDaniel Pereirasobrecarregada com muita facilidade e a netdev@vger realmente não precisa de 502*c991b7efSDaniel Pereiramais tráfego se pudermos evitar. 503*c991b7efSDaniel Pereira 504*c991b7efSDaniel Pereiranetdevsim 505*c991b7efSDaniel Pereira~~~~~~~~~ 506*c991b7efSDaniel Pereira 507*c991b7efSDaniel PereiraO ``netdevsim`` é um driver de teste que pode ser usado para exercitar APIs de 508*c991b7efSDaniel Pereiraconfiguração de driver sem a necessidade de hardware compatível. Mock-ups e 509*c991b7efSDaniel Pereiratestes baseados no ``netdevsim`` são fortemente encorajados ao adicionar novas 510*c991b7efSDaniel PereiraAPIs, mas o ``netdevsim`` em si **não** é considerado um caso de uso/usuário. 511*c991b7efSDaniel PereiraVocê também deve implementar as novas APIs em um driver real. 512*c991b7efSDaniel Pereira 513*c991b7efSDaniel PereiraNão damos garantias de que o ``netdevsim`` mudará no futuro de uma forma que 514*c991b7efSDaniel Pereiraquebraria o que normalmente seria considerado uAPI. O ``netdevsim`` é reservado 515*c991b7efSDaniel Pereiraapenas para uso por testes upstream, portanto, quaisquer novos recursos do 516*c991b7efSDaniel Pereira``netdevsim`` devem ser acompanhados de selftests em ``tools/testing/selftests/``. 517*c991b7efSDaniel Pereira 518*c991b7efSDaniel PereiraStatus de suporte para drivers 519*c991b7efSDaniel Pereira------------------------------ 520*c991b7efSDaniel Pereira 521*c991b7efSDaniel Pereira.. note: 522*c991b7efSDaniel Pereira 523*c991b7efSDaniel PereiraOs requisitos a seguir aplicam-se apenas a drivers de NIC Ethernet. 524*c991b7efSDaniel Pereira 525*c991b7efSDaniel PereiraA netdev define requisitos adicionais para drivers que desejam adquirir o status 526*c991b7efSDaniel Pereira``Supported`` (Suportado) no arquivo MAINTAINERS. Drivers ``Supported`` devem 527*c991b7efSDaniel Pereiraexecutar todos os testes de driver upstream e relatar os resultados duas vezes 528*c991b7efSDaniel Pereirapor dia. Drivers que não cumprirem este requisito devem usar o status 529*c991b7efSDaniel Pereira``Maintained`` (Mantido). Atualmente, não há diferença na forma como os drivers 530*c991b7efSDaniel Pereira``Supported`` e ``Maintained`` são tratados no upstream. 531*c991b7efSDaniel Pereira 532*c991b7efSDaniel PereiraAs regras exatas que um driver deve seguir para adquirir o status ``Supported``: 533*c991b7efSDaniel Pereira 534*c991b7efSDaniel Pereira1. Deve executar todos os testes sob os alvos ``drivers/net`` e 535*c991b7efSDaniel Pereira ``drivers/net/hw`` dos selftests do Linux. A execução e o relato 536*c991b7efSDaniel Pereira de testes privados / internos também são bem-vindos, mas os testes 537*c991b7efSDaniel Pereira upstream são obrigatórios. 538*c991b7efSDaniel Pereira 539*c991b7efSDaniel Pereira2. A frequência mínima de execução é uma vez a cada 12 horas. Deve 540*c991b7efSDaniel Pereira testar o branch designado a partir do feed de branches selecionado. 541*c991b7efSDaniel Pereira Observe que os branches são construídos automaticamente e estão 542*c991b7efSDaniel Pereira expostos à postagem intencional de patches maliciosos; portanto, 543*c991b7efSDaniel Pereira os sistemas de teste devem ser isolados. 544*c991b7efSDaniel Pereira 545*c991b7efSDaniel Pereira3. Drivers que suportam múltiplas gerações de dispositivos devem 546*c991b7efSDaniel Pereira testar pelo menos um dispositivo de cada geração. Um manifesto do 547*c991b7efSDaniel Pereira ambiente de teste (*testbed manifest* - formato exato a definir) 548*c991b7efSDaniel Pereira deve descrever os modelos de dispositivos testados. 549*c991b7efSDaniel Pereira 550*c991b7efSDaniel Pereira4. Os testes devem ser executados de forma confiável; se múltiplos 551*c991b7efSDaniel Pereira branches forem ignorados ou se os testes falharem devido a problemas 552*c991b7efSDaniel Pereira no ambiente de execução, o status ``Supported`` será retirado. 553*c991b7efSDaniel Pereira 554*c991b7efSDaniel Pereira5. Falhas nos testes devido a bugs no driver ou no próprio teste, 555*c991b7efSDaniel Pereira ou falta de suporte para a funcionalidade que o teste visa, *não* 556*c991b7efSDaniel Pereira são motivo para a perda do status ``Supported``. 557*c991b7efSDaniel Pereira 558*c991b7efSDaniel PereiraO CI da netdev manterá uma página oficial de dispositivos suportados, listando 559*c991b7efSDaniel Pereiraseus resultados de testes recentes. 560*c991b7efSDaniel Pereira 561*c991b7efSDaniel PereiraO mantenedor do driver pode providenciar para que outra pessoa execute o teste; 562*c991b7efSDaniel Pereiranão há exigência de que a pessoa listada como mantenedora (ou seu empregador) 563*c991b7efSDaniel Pereiraseja responsável pela execução dos testes. Colaborações entre 564*c991b7efSDaniel Pereirafornecedores, hospedagem de CI no GitHub (GH CI), outros repositórios sob o 565*c991b7efSDaniel Pereiralinux-netdev, etc., são muito bem-vindas. 566*c991b7efSDaniel Pereira 567*c991b7efSDaniel PereiraVeja https://github.com/linux-netdev/nipa/wiki para mais informações sobre o CI 568*c991b7efSDaniel Pereirada netdev. Sinta-se à vontade para entrar em contato com os mantenedores ou com 569*c991b7efSDaniel Pereiraa lista para quaisquer dúvidas. 570*c991b7efSDaniel Pereira 571*c991b7efSDaniel PereiraOrientações para revisores 572*c991b7efSDaniel Pereira-------------------------- 573*c991b7efSDaniel Pereira 574*c991b7efSDaniel PereiraRevisar patches de outras pessoas na lista é altamente incentivado, 575*c991b7efSDaniel Pereiraindependentemente do nível de experiência. Para orientações gerais e dicas 576*c991b7efSDaniel Pereiraúteis, consulte `revisão de tópicos avançados de desenvolvimento`. 577*c991b7efSDaniel Pereira 578*c991b7efSDaniel PereiraÉ seguro assumir que os mantenedores da netdev conhecem a comunidade e o nível 579*c991b7efSDaniel Pereirade experiência dos revisores. Os revisores não devem se preocupar com o fato de 580*c991b7efSDaniel Pereiraseus comentários impedirem ou desviarem o fluxo de patches. Revisores menos 581*c991b7efSDaniel Pereiraexperientes são fortemente incentivados a fazer uma revisão mais aprofundada das 582*c991b7efSDaniel Pereirasubmissões e não focar exclusivamente em questões triviais ou subjetivas, como 583*c991b7efSDaniel Pereiraformatação de código, tags, etc. 584*c991b7efSDaniel Pereira 585*c991b7efSDaniel PereiraDepoimentos / feedback 586*c991b7efSDaniel Pereira---------------------- 587*c991b7efSDaniel Pereira 588*c991b7efSDaniel PereiraAlgumas empresas utilizam o feedback de colegas em revisões de desempenho de 589*c991b7efSDaniel Pereirafuncionários. Sinta-se à vontade para solicitar feedback dos mantenedores da 590*c991b7efSDaniel Pereiranetdev, especialmente se você dedica uma quantidade significativa de tempo 591*c991b7efSDaniel Pereirarevisando código e se esforça além do esperado para melhorar a infraestrutura 592*c991b7efSDaniel Pereiracompartilhada. 593*c991b7efSDaniel Pereira 594*c991b7efSDaniel PereiraO feedback deve ser solicitado por você, o colaborador, e será sempre 595*c991b7efSDaniel Pereiracompartilhado com você (mesmo que você solicite que ele seja enviado ao seu 596*c991b7efSDaniel Pereiragerente).