Slide 1

Slide 1 text

Desarrollo del Linux Kernel Ezequiel García (Greg Kroah-Hartman) github.com/ezeqeuielgarcia/kernel-development

Slide 2

Slide 2 text

Reglas de la charla * Si hablo muy bajo ... * Si hablo muy rápido ... * Si no entienden algo … * Si algo/alguien los muerde ... ¡GRITEN!

Slide 3

Slide 3 text

¿Qué diablos es el kernel? $ strace cp .bashrc a_copy open(".bashrc", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=192, ...}) = 0 open("a_copy", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 read(3, "\nexport LD_LIBRARY_PATH=$LD_LIBR"..., 32768) = 192 write(4, "\nexport LD_LIBRARY_PATH=$LD_LIBR"..., 192) = 192 read(3, "", 32768) = 0 close(4) = 0 close(3) = 0

Slide 4

Slide 4 text

GIT ● Creado en Abril/2005 por Linus Torvalds a partir de la necesidad de un SCM para el kernel ● Es distribuido ● Es la herramienta más común de los programadores Linux: Se usa para generar, aplicar y enviar por mail los parches, y hasta buscar (git grep!).

Slide 5

Slide 5 text

cambios == patches ● Cada cambio que se hace al kernel tiene forma de un parche ● Cada parche se envía por mail para su revisión y para ser incluído en el repositorio correspondiente ● Cada parche debe: hacer una sola cosa, no romper la compilación, y muchas reglas más ...

Slide 6

Slide 6 text

38.566 archivos 15.384.000 lineas 2.6.20 to 2.6.24-rc Kernel release 3.4.0

Slide 7

Slide 7 text

2.833 contribuidores 373 empresas Kernel releases 3.0.0 – 3.4.0 May 2011 – May 2012

Slide 8

Slide 8 text

10,500 lineas agregadas 8,400 lineas removidas 2,300 lineas modificadas 2.6.20 to 2.6.24-rc Kernel releases 3.0.0 – 3.4.0 May 2011 – May 2012 ¡TODOS LOS DÍAS!

Slide 9

Slide 9 text

5,79 cambios por hora 2.6.20 to 2.6.24-rc Kernel releases 3.0.0 – 3.4.0 May 2011 – May 2012

Slide 10

Slide 10 text

¿Cómo no nos volvemos locos? 2.6.20 to 2.6.24-rc * Cambios incrementales * Releases regulares

Slide 11

Slide 11 text

¿Cómo no nos volvemos locos? 2.6.20 to 2.6.24-rc * Cambios incrementales * Releases regulares

Slide 12

Slide 12 text

cambios == patches ● Cada cambio que se hace al kernel tiene forma de un parche ● Cada parche se envía por mail para su revisión y para ser incluído en el repositorio correspondiente ● Cada parche debe: hacer una sola cosa, no romper la compilación, y muchas reglas más ...

Slide 13

Slide 13 text

commit e0f6e4d6ff8d82ca6813f47d12f85224d7491d9e Author: Ezequiel Garcia Date: Wed Sep 26 06:25:12 2012 -0300 [media] em28xx: Replace memcpy with struct assignment This kind of memcpy() is error-prone and its replacement with a struct assignment is prefered. Signed-off-by: Ezequiel Garcia Signed-off-by: Mauro Carvalho Chehab diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c index ab98d08..bd5e180 100644 --- a/drivers/media/usb/em28xx/em28xx-cards.c +++ b/drivers/media/usb/em28xx/em28xx-cards.c @@ -2203,7 +2203,7 @@ EXPORT_SYMBOL_GPL(em28xx_tuner_callback); static inline void em28xx_set_model(struct em28xx *dev) { - memcpy(&dev->board, &em28xx_boards[dev->model], sizeof(dev- >board)); + dev->board = em28xx_boards[dev->model]; /* Those are the default values for the majority of boards Use those values if not specified otherwise at boards entry

Slide 14

Slide 14 text

Developer's Certificate of Origin (http://elinux.org/Developer_Certificate_Of_Origin) (a) Soy el autor del cambio; o (b) Me basé en un trabajo anterior con una licencia compatible; o (c) Alguien me hizo este cambio, cumpliendo (a), (b), o (c) y no lo modifiqué. (d) Esta contribución es pública

Slide 15

Slide 15 text

¿Cómo no nos volvemos locos? 2.6.20 to 2.6.24-rc * Cambios incrementales * Releases regulares

Slide 16

Slide 16 text

Nuevo release cada 2 meses y chirolas Kernel releases 2.6.20 – 3.4.0

Slide 17

Slide 17 text

v3.3: 18 marzo v3.4: 20 mayo v3.5: 21 julio v3.6: 30 setiembre v3.7: 11 diciembre wtf!

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

¿Quién saca la billetera? 1. “Amateurs” 14.2% 2. Red Hat 10.1% 3. Intel 8.6% 4. Unknown Individuals 5.2% 5. Novell 4.0% 6. IBM 3.7% 7. Texas Instruments 3.6% 8. Broadcom 3.0% 9. Consultants 2.3% 10. Wolfson Micro 2.1% Kernel releases 3.0.0 – 3.4.0

Slide 26

Slide 26 text

¿Quién saca la billetera? 11. Samsung 1.9% 12. Google 1.8% 13. Oracle 1.7% 14. Freescale 1.5% 15. MiTAC 1.4% 16. Qualcomm 1.4% 17. Microsoft 1.3% 18. Linaro 1.2% 19. Nokia 1.2% 20. AMD 1.1% Kernel releases 3.0.0 – 3.4.0

Slide 27

Slide 27 text

Evolución vs. Diseño inteligente Decimos que el desarrollo en el kernel Linux es “evolución, no diseño inteligente”, pues las soluciones se piensan para los problemas a medida que estos aparecen Greg Kroah-Hartman

Slide 28

Slide 28 text

¿Cómo participar? 2.6.20 to 2.6.24-rc

Slide 29

Slide 29 text

2.6.20 to 2.6.24-rc ¿Cómo participar?

Slide 30

Slide 30 text

2.6.20 to 2.6.24-rc Documentation/HOWTO Documentation/development-proces ¿Cómo participar?

Slide 31

Slide 31 text

2.6.20 to 2.6.24-rc ¿Cómo participar?

Slide 32

Slide 32 text

World domination proceeds as planned