O Ciclo de Desenvolvimento
do Kernel do Linux
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
O que é o Linux?
● Linux é o Linux Kernel
● Sistema Operacional UNIX
● Criado em 1991 por Linus Torvalds ● Suporta ~30 aquiteturas
● Licenciado em GPLv2
● ~200 commits/dia ou 1 commit a cada 7 minutos
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
● Média de 8 contribuições por desenvolvedor ● Recorde de 1679 desenvolvedores na v4.6 ● * v4.7 ainda não foi lançada
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
● ~200 organizações por versão 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%)
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
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
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
Ciclo de Desenvolvimento – v2.6..hoje
● Ciclos curtos de menos de 3 meses ● Release early, release often
● Mais testes, mais estável
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
Ciclo de Desenvolvimento – v2.6..hoje 4.6 merge window rc1 rc2 rc3 rc4 rc5 rc6 rc7 v4.6 4.7 merge window rc1 rc2 v4.5 novas
features featuresnovas
Hierarquia de Mantenedores
● Mantenedores para cada subsistema
● Cada subsistema tem submantenedores
● Árvore pra cada subsistema
● Enviam contribuições para cima
Hierarquia de Mantenedores mainline
net dri
bluetooth netfilter i915 nouveau
Novas features
● Incorporado a cada merge window
● branch -next (próxima versão) ● Acontece durante todo o ciclo
Ciclo de Desenvolvimento - -next 4.6 merge window rc1 rc2 rc3 rc4 rc5 rc6 rc7 v4.6 4.7 merge window rc1 rc2 v4.5 pull request v4.6 net-next bluetooth-next
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
Ciclo de Desenvolvimento - stable
4.6 merge
window rc1 rc2 rc3 rc4 rc5 rc6 rc7 v4.6 4.7 mergewindow rc1 rc2
v4.5 v4.6
net-next
bluetooth-next
Revisão de Código - tags
● Signed-off-by: autores e mantenedores ● Reviewed-by:
● Acked-by: ● Tested-by:
● Reported-by: ● Suggested-by:
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>
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
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
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)
Submetendo Patches
● RTFM! Documentation/SubmittingPatches
● Descubra quem são os mantenedores
– scripts/get_maintainer.pl
Obrigado!
Gustavo Padovan
gustavo@padovan.org