O Ciclo de Desenvolvimento do Kernel do Linux Gustavo Padovan Open First
Agenda O que é o Linux? Estatísticas de Desenvolvimento História Ciclos de Desenvolvimento Hierarquia de Mantenedores Árvore estáveis e de desenvolvimento Linux-next Revisão de Código Como contribuir para o Kernel? 2
O que é o Linux? Linux é o Linux Kernel Sistema Operacional UNIX Criado em 1991 por Linus Torvalds Suporta ~30 aquiteturas Licenciado em GPLv2 Maior Projeto de Software Livre do Mundo 3
Usos 4
Estatísticas versão do kernel número de commits v4.7* 12.073 v4.6 13.258 v4.5 12.080 v4.4 13.071 v4.3 12.274 v4.2 13.694 v4.1 11.916 v4.0 10.346 ~200 commits/dia ou 1 commit a cada 7 minutos Recorde de 13722 commits na v3.15 * v4.7 ainda não foi lançada 5
Estatísticas versão do kernel desenvolvedores v4.7* 1556 v4.6 1679 v4.5 1538 v4.4 1576 v4.3 1625 v4.2 1591 v4.1 1539 v4.0 1458 Média de 8 contribuições por desenvolvedor Recorde de 1679 desenvolvedores na v4.6 * v4.7 ainda não foi lançada 6
Estatísticas # organização commits v4.6 1 Intel 2009 (15.0%) 2 (unknown) 1358 (10.2%) 3 Red Hat 1043 (7.8%) 4 (None) 647 (4.8%) 5 Linaro 588 (4.4%) 6 Outreachy 413 (3.1%) 7 Samsung 390 (2.9%) 8 SUSE 364 (2.7%) ~200 organizações por versão 7
Ciclo de Desenvolvimento pré v2.6 Versão 1.0 em 1994 Versão 2.0 em 1996 Versão 2.2 em 1999 Versão 2.4 em 2001 Versão 2.6 em 2003 8
Ciclo de Desenvolvimento pré v2.6 Até o lançamento v2.6 ciclo de ~2 anos Branch estável Somente bug fix Sem hardware e funcionalidades novas Branch de desenvolvimento v2.1.x, v2.3.x, v2.5.x 9
Ciclo de Desenvolvimento pré v2.6 Problemas: Ciclo muito longo Gerenciamento complicado e confuso Backport de funcionalidades para o v2.4 Introdução de bugs 10
Ciclo de Desenvolvimento v2.6..hoje Ciclos curtos de menos de 3 meses Release early, release often Mais testes, mais estável Novas features chegam mais rápido 11
Ciclo de Desenvolvimento v2.6..hoje 2 semanas de merge window Inclusão de novas funcionalidades 6-8 semanas de estabilização Lançamento de uma versão marca o início da próxima merge window 3.0 e 4.0 não são versões especias 12
Ciclo de Desenvolvimento v2.6..hoje v4.5 4.6 merge window 4.7 merge rc1 rc2 rc3 rc4 rc5 rc6 rc7 v4.6 window rc1 rc2 novas features novas features 13
Hierarquia de Mantenedores Mantenedores para cada subsistema Cada subsistema tem submantenedores Árvore pra cada subsistema Enviam contribuições para cima Linus Torvalds no topo da hierarquia 14
Hierarquia de Mantenedores mainline net dri... bluetooth netfilter i915 nouveau 15
Novas features Incorporado a cada merge window branch -next (próxima versão) Acontece durante todo o ciclo 16
Ciclo de Desenvolvimento - -next v4.5 4.6 merge window 4.7 merge rc1 rc2 rc3 rc4 rc5 rc6 rc7 v4.6 window rc1 rc2 net-next bluetooth-next pull request 17
Versão Estável Cada versão tem um branch estável Somente patches que estão no mainline Mantido por Greg KH Uma versão longterm (LTS) por ano LTS são mantidas por 2 anos Usadas pra desenvolvimento de produtos 18
Ciclo de Desenvolvimento - stable v4.5.0 v4.5.1 v4.5.2 v4.5.3 v4.5.4 v4.5.5 v4.5.6 v4.5.7 4.6 merge 4.7 merge v4.5 rc1 rc2 rc3 rc4 rc5 rc6 rc7 v4.6 window window rc1 rc2 net-next bluetooth-next 19
Revisão de Código - tags Signed-off-by: autores e mantenedores Reviewed-by: Acked-by: Tested-by: Reported-by: Suggested-by: 20
tags commit 2d75c88fefb228aedfb135228acb6620db8f0e40 Author: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Date: Tue Apr 26 12:32:28 2016-0300 staging/android: refactor SYNC IOCTLs Change SYNC_IOC_FILE_INFO (former SYNC_IOC_FENCE_INFO) behaviour to avoid future API breaks and optimize buffer allocation. Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Acked-by: Greg Hackmann <ghackmann@google.com> Acked-by: Rob Clark <robdclark@gmail.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> 21
git Nenhum VCS era bom o suficiente Bitkeeper era ineficiente e proprietário Em 2005 o Linus Torvalds criou o git Distribuído, Eficiente e a Prova de falhas Revolucionou a colaboração de software 22
linux-next Faz merge diário das árvores -next Criada em 2008 por Stephen Rothwell Indentifica problemas antes do mainline merge conflict compiler error/warning Base de teste e desenvolvimento Código mais estável na merge window 23
Como contribuir para o Kernel? Não sei por onde começar!? Leia o código/documentação Procure bugs que afetam a sua máquina Assine as listas de e-mail (LKML e outras) #kernelnewbies on irc.oftc.net 24
Submetendo Patches RTFM! Documentation/SubmittingPatches Descubra quem são os mantenedores scripts/get_maintainer.pl git format-patch & git send-email 25
Obrigado! Gustavo Padovan gustavo@padovan.org www.collabora.com