Existe uma série de coisas que é preciso ter em mente quando estamos enviando alterações ao kernel. A principal coisa a se lembrar é que não importa o quanto ocupado você esteja, Andrew Morton e Linus Torvalds recebem modificações vindas de todo mundo, todo tempo, o que significa que eles estão bem mais ocupados que você.
As estratégias aqui descritas para suas alterações entrarem no kernel tendem a tornar as coisas muito mais fáceis pra os matenedores, o que significa que o seu código poderá entrar no kernel mais facilmente.
É tentador trabalhar em um projeto ou alteração por meses até que "esteja perfeita", e então você envia um patch enorme para a lista de discussão de desenvolvimento do kernel. No entanto, essa não é uma boa idéia por várias razões:
Digamos que você esteja trabalhando no driver "bar", para adicionar suporte ao dispositivo "foo". No entando, a maneira simples de se adicionar a funcionalidade tornaria o código uma verdadeira bagunça. A solução requer uma reorganização do código, após isso a sua funcionalidade irá ser integrada facilmente. A sua sequência de patches poderia se parecer com o seguinte:
Subject: [PATCH 0/3] adiciona suporte ao dispositivo foo no driver bar
Subject: [PATCH 1/3] suporte foo: adiciona abstração do tipo do dispositivo em bar_struct
Subject: [PATCH 2/3] suporte foo: limpa o código do driver bar
Subject: [PATCH 3/3] suporte foo: adiciona suporte a foo
Tradicionalmente o primeiro email não contém modificações, mas simplesmente explica o que os seus patches fazem e porque são necessários. Os outros emails são enviados como respostas ao primeiro email, dessa maneira as pessoas que não estejam interessadas em seus patches podem apenas fechar a thread em seus leitores de email.
Neste exemplo, os dois primeiros patches não conteriam a funcionalidade que você quer adicionar ao kernel. Tudo que eles fazem é modificar a base do código de maneira que torne mais fácil a integração da alteração. Os revisores e mantenedores gostam quando as pessoas deixam o código mais fácil para manutenção. Empilhar modificações em cima de modificações poderia em algum tempo tornar a base do código impossível de se manter, então a "maneira fácil" de adicionar funcionalidade nem sempre é "tão agradável assim".
Agora que você já tem o hábito de enviar seu código em pequenos patches, revisores poderão te dar um rápido retorno sobre os seus patches. Algumas vezes em uma hora. Agora que você tem a atenção deles, seria legal se você pudesse fazer algo a respeito dos comentários antes que eles movam para o outro código.
Você pode até não conseguir implementar tudo que foi comentado ou testar as modificações no código na mesma velocidade que os retornos irão chegar, não tem problema. No entanto, você provavelmente deveria deixar os revisores cientes de que você leu os comentários e que está fazendo algumas das modificações sugeridas. Melhor ainda se você puder comunicá-los antes que eles concentrem a atenção em outros pontos.
Muitas vezes os revisores de patches apontam bugs óbvios e melhorias. O tipo de modificação que você deveria ter feito, caso tivesse descoberto a falha. Com certeza você irá agir para corrigir o que foi mencionado no comentário.
No entanto, algumas vezes não estará claro se é melhor você continuar com o seu código original ou implementar a alternativa sugerida pelo revisor. Neste caso é melhor mudar o código para o que o revisor sugeriu.
Isto pode parecer contra-intuitivo. Mudar o código é um trabalho extra e tais mudanças podem introduzir novos bugs.
No entanto, implementar a idéia mencionada pelo revisor indica que você consegue trabalhar com a comunidade. Ainda mais importante, o revisor provavelmente dará suporte a suas idéias e então você terá mais uma pessoa para dar suporte a inclusão do seu patch. Por estar recebendo e acatando as sugestões da comunidade seu código será aceito mais facilmente.
Algumas vezes o revisor pode estar errado. Nestes casos a mehor coisa a ser feita é manter o sua alteração e explicar porque o funcionamento deve ser do jeito que você esta fazendo.
Projetos de software podem levar um longo tempo e ter várias fases, incluindo o levantamento de requisitos, design, prototipação e testes. É fascinante trabalhar em um projeto "in-house" e então somente mostra-lo para a comunidade quando estiver pronto.
No entanto, a comunidade do kernel linux é muito maior que a sua organização, e é bem provável que tenha requisitos diferentes. Depois de um longo ano de projeto, você não irá querer voltar para a prancheta só porque você não conhecia os requisitos de uma pessoa.
A melhor estratégia é ir para a comunidade do kernel linux com o protótipo e design inicial.
Isso não somente te permite em receber um retorno e requisitos adicionais em um primeiro estágio, isto muitas vezes o coloca em contato com outras pessoas interessadas em resolver o mesmo problema. Você poderia inclusive terminar trabalhando junto com desenvolvedores de outras empresas, e trabalhar em uma implementação que seja muito melhor que qualquer coisa feita por você mesmo (sozinho).
É o tipo de solução que resolve um monte de problemas ao mesmo tempo.
É o tipo de solução que agrada Linus Torvalds e Andrew Mortom.
É o tipo de solução que na verdade será integrada no kernel, resolvendo seus problemas.
Alguns dos mais importantes revisores de patches na lista de discussão do kernel tem ganho a reputação de ser difícil de se trabalhar. Provavelmente porque eles usam seu tempo revisando código e não em sendo diplomáticos. Algumas vezes o retorno recebido por alguns patches é completamente rude. No entanto, isso não torna o retorno menos válido!
A razão pela qual as pessoas revisam seus patches e te dão um retorno é porque eles acreditam que você é capaz de agir e melhorar o seu código. Se você esta realmente interessado em melhorar o código, ouça ao retorno que você recebe na lista de discussão.
Mesmo que o retorno seja duro ou hostil ainda assim pode conter informações úteis. Se você se preocupa com o seu código, preste atenção e separe o trigo da soja.
Se você não entender alguma parte do retorno dado peça que seja melhor detalhado. O objetivo final é melhorar o seu código. Aprender alguma coisa nova durante o processo é um bônus para você.
Um bom comportamente seria sempre agradecer as pessoas que te derem um retorno amigável. Não se esqueça de sempre informá-los a respeito dos seus planos de atuação no que se refere aos retornos.
Verifique o check-list de envio de patches e outras documentações do kernel para ter certeza que você está enviando os seus patches da maneira correta. Se ater a esses pequenos detalhes não é somente fácil como também algo necessário.
Atenção: Esta é uma tradução livre do artigo escrito no wiki da comunidade kernelnewbies internacional MergingStrategy. Originalmente escrito por Rik van Riel.
Comentários
:))
I would be happy if you could help us. I hope my site will be Google accepted and put it ahead so that I can grow and hope that it will come to me.
http://dumbways-todie.com } dumb ways to die
http://fireboy-andwatergirl.com } fireboy and watergirl 4
Perfect Writers Uk
When you are prepared to consolidate, it converges into some sort of "discharge" branch. write me an assignment . The thought is to keep every source isolate from the others, aside from when it should be converted in. Base your progressions off of this branch, combining / replacing as essential. uk writers help - perfectwriters.co.uk
Best and Low Rate Services
W-wow, that’s a lot of advice! I may have to read a comment each day for the next few weeks! Very thoroughly mc hjälmar
Estratégias para suas
fake yeezy boost 750 It is very interesting and worth reading
Strategies for your changes to get into the Linux kernel
The absolute most essential fix commentators on the portion mailing list have earned the notoriety of being difficult to work with. Likely in light of the fact that they utilize their time looking into code as opposed to being political.
Superb Blog
This is such a fabulous way to describe this topic. Keep it up dude.
UK Academic Writers
Good to Know
Good to know about the things. I believe this will help us to look into Linux kernal to get some more details about its functionalities. The Academic Papers
Estratégias para suas
www.musclegaintruths.com According to reports, the South Korean prosecutors will be based on the results of the survey, focusing on the evidence can be proved Pu Gui Hui bribe the details of the evidence. The prosecution plan will be conducted one or two times after 10 days and will be handed over to court before the weekend or early next week.
you can't have a working framework that really works
Without a kernel, you can't have a working framework that really works. Windows, Mac OS X, and Linux all have kernels, and they're all extraordinary.
I' do work in social media marketing agency & but i know something about kernel.
happy day
I enjoyed over read your blog post. Your blog have nice information, I got good ideas from this amazing blog.
gmail sign up
Estratégias para suas
This effort in like manner has the benefit of abstaining from some multifaceted nature - nobody needs to see highlights they needn't trouble with. As opposed to http://www.pro-academic.co.uk worrying over slaughtering certain impelled highlights all alone blog, we can leave those as components exclusively for enormous business customers.
Estratégias para suas
This journey I learnt attractive lesson and established a lot of love from the old women. http://www.assignmentkingdom.co.uk/ So I seem advance in conference old peoples and serving them. After this trip I believe actual children are the ones who love and care for their parents awaiting their very last breath.
roblox robux generator
Now you can change avtar of the roblox robux without paying single penny and it is easy to get and you can trade with other player also.
Great one
When you are prepared to consolidate, converge into some sort of "discharge" branch. write me an assignment. The thought is to keep every source isolate from the others, aside from when it should be converted in. Base your progressions off of this branch, combining/replacing as essential.