SlideShare a Scribd company logo
Linux Device Drivers 
Sarah Sharp 
Dec 6, 2014
Sarah Sharp 
● USB 3.0 host controller driver author 
● Linux kernel developer for 9 years 
● Worked in Intel's Open Source 
Technology Center (OTC) for 7 years 
● Driver maintainer for 5 years
How did I get into 
open source? 
● Didn't program until college 
● Portland State University 
● My boyfriend introduced me to 
– open source, Linux, rockets
Portland State Aerospace Society
Rockets and Open Source
How did I get into 
Linux kernel development? 
● Professor Bart Massey 
introduced me to 
– The local Linux kernel community 
– Greg Kroah-Hartman 
● Greg suggested usbfs2 project 
● Bart helped me get: 
– College credit for kernel project 
– Intel undergraduate research grant
How did I get a 
job in open source? 
● Bart encouraged me to present at 
OSCON on usbfs2 
● Kristin Accardi was on 
OSCON paper selection 
committee 
● Through network 
(Bart → Greg → Kristen) 
I got a job
Sarah Sharp: Linux kernel 
USB 3.0 driver developer 
● Hired by Intel in July 2007 
● USB 3.0 specification draft 
● FPGA prototypes 
● Driver merged in April 2009
What is it like to be a 
Linux kernel developer? 
● very tight-knit group, very slow turn over 
● 80% of kernel developers are paid 
● 20% are volunteers and students 
● all work done through mailing lists 
● a few IRC channels 
● rarely get together in person
Linux kernel subsystems 
● Many different parts of the kernel 
● Broken into subsystems 
● Each has a maintainer 
● Most have a mailing list 
● MAINTAINERS file 
● scripts/get_maintainer.pl
What Do 
Subsystem Maintainers Do? 
● Experts in their particular field 
● Usually 5-20 years of experience 
● Approve changes to their area 
● Often have 1-4 sub-maintainers 
● This is how Linux scales trust
Intel 
Linux Kernel Maintainers 
● ACPI - Rafael Wysocki, Zhang Rui 
● Bluetooth - Marcel Holtmann 
● NFC - Samuel Ortiz 
● USB 3.0 - Mathias Nyman 
● Intel graphics - Daniel Vetter 
● EFI - Matt Fleming 
● x86 - H. Peter Anvin, Peter Z 
● RAS, machine check - Tony Luck 
● Code ellision - Andi Kleen 
● NVMe - Matthew Wilcox 
● IOMMU - Dave Woodhouse 
● Temperature - Fenghua Yu 
● DMA offload - Vinod Koul 
● Wimax - Inaky Perez-Gonzalez 
● Intel wifi - Johannes Berg 
● Intel idle - Len Brown 
● Intel ethernet - Jeff Kirsher, Jesse 
Brandeburg, Carolyn Wyborny 
● Intel C600 SAS, IOAT - Dan 
Williams 
● Serial, GMA500/600/3600, misc - 
Alan Cox
What is Being a 
Linux Kernel Maintainer Like? 
● Hundreds of emails a day 
● 1:Many relationship with 
contributors 
● Rapid development cycle 
● Looking at long-term health 
of the project 
● Maintains code for 3 - 20 years 
● Reputation is on the line for 
each patch
“Meritocracy” 
● Maintainers are vested 
● Developers will come and go 
● Long-standing contributors gain trust 
● Easier for them to do complex things 
● Harder for newcomers
Community Trust and 
Social Engineering 
● Build a trust relationship with maintainers 
– Review patches 
– Ask intelligent questions 
– Submit small bug fixes 
● Learn community norms 
– Email format 
– Coding style 
– Testing
Tips for 
Asking Intelligent Questions 
● Always Cc the maintainer 
● Do your research 
● Document where you looked 
● Be concise and precise 
● Ask a question you know the 
answer to, then one you don't
Tips for 
Bug Reporting 
● Always Cc the maintainer 
● System information is crucial 
– What hardware? 
– What kernel, what distro 
– 32-bit vs 64-bit 
– lspci, lsusb, acpidump 
● Reproducibility thinking 
● Be responsive 
● Hold onto hardware
Linux Kernel 
Quality Assurance 
● Regressions are not tolerated 
● Buggy new code is fixed or reverted 
● Shifting towards static analysis tools 
– sparse, smatch, Coccinelle 
● 0-day testing infrastructure 
● kselftest
Getting into Linux kernel 
development 
● Read the code, review other people's patches 
● Participate and ask questions on the mailing list 
● First patch tutorial 
– http://kernelnewbies.org/FirstKernelPatch 
● Staging cleanup patches 
– http://kernelnewbies.org/CheckpatchTips 
● Linux kernel exercises 
– http://eudyptula-challenge.org/
Leveling Up in 
Linux Kernel Development 
● Larger patchsets 
● Use complex tools (sparse, Coccinelle) 
● Find an area you're passionate about 
● Look for todos, bugzilla entries 
● Before starting a large task: 
– Always ask the maintainer 
– build trust with the maintainer
Tips for Code Review 
● Keep a list of the feedback 
● Address ALL feedback in revisions 
● Track changes in your cover letter 
● If you disagree with a maintainer, 
back yourself up with facts 
● Maintainers don't care about your deadline 
● Code must be complete and clean 
● Duplicate code or drivers won't be accepted
More Linux Kernel Resources 
● Linux Device Drivers book: 
http://lwn.net/Kernel/LDD3 
● Linux Device Driver tutorial: 
https://github.com/gregkh/kernel-tutorial 
● FOSS Outreach Program for Women (OPW) 
(paid open source and Linux kernel internships) 
http://gnome.org/opw
Photo Attribution 
● Tux: 
http://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/400px- 
NewTux.svg.png 
● Jamey and Sarah Sharp: https://www.flickr.com/photos/igalko/7570033604 
● Sarah Sharp and PSAS photos CC BY-SA-NC Sarah Sharp 
● Bart Massey: https://www.flickr.com/photos/reidab/9326868060 
● OSCON sign: https://www.flickr.com/photos/kubina/912778997 
● USB 3.0 host PCI card: https://www.flickr.com/photos/hades2k/9069181710 
● Logitech webcam: https://www.flickr.com/photos/bshunrichs/162199777 
● Greg Kroah-Hartman: https://www.flickr.com/photos/tian2992/6208491794 
● David Brownell: 
https://www.flickr.com/photos/13825348@N03/sets/72157608741347102/detail/
Photo Attribution 
● Computer guts: https://www.flickr.com/photos/orijinal/4832982682 
● Kernel Summit: https://www.flickr.com/photos/linuxfoundation/2987611750 
● Mail: 
https://www.flickr.com/photos/donebythehandsofabrokenartist/1502717818 
9 
● Nerd merit badge: https://www.flickr.com/photos/momentum/4203541703 
● Trust: https://www.flickr.com/photos/dobs/10726756606 
● Question: https://www.flickr.com/photos/marcobellucci/3534516458 
● Bug: https://www.flickr.com/photos/103499652@N04/14232715868 
● Quality: https://www.flickr.com/photos/dieselbug2007/414348333 
● Editing: https://www.flickr.com/photos/nics_events/2349631515
Ad

More Related Content

What's hot (20)

Embedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoEmbedded Linux from Scratch to Yocto
Embedded Linux from Scratch to Yocto
Sherif Mousa
 
Linux Internals - Part I
Linux Internals - Part ILinux Internals - Part I
Linux Internals - Part I
Emertxe Information Technologies Pvt Ltd
 
linux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixlinux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrix
Sherif Mousa
 
Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)Embedded Android : System Development - Part II (Linux device drivers)
Embedded Android : System Development - Part II (Linux device drivers)
Emertxe Information Technologies Pvt Ltd
 
Towards a Census of Free and Open Source Licenses
Towards a Census of Free and Open Source LicensesTowards a Census of Free and Open Source Licenses
Towards a Census of Free and Open Source Licenses
dmgerman
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
Yen-Chin Lee
 
What is Linux, Ubuntu and Open Source?
What is Linux, Ubuntu and Open Source?What is Linux, Ubuntu and Open Source?
What is Linux, Ubuntu and Open Source?
Jose Kont
 
Embedded Android : System Development - Part I
Embedded Android : System Development - Part IEmbedded Android : System Development - Part I
Embedded Android : System Development - Part I
Emertxe Information Technologies Pvt Ltd
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel Development
Priyank Kapadia
 
Linux Systems: Getting started with setting up an Embedded platform
Linux Systems: Getting started with setting up an Embedded platformLinux Systems: Getting started with setting up an Embedded platform
Linux Systems: Getting started with setting up an Embedded platform
Emertxe Information Technologies Pvt Ltd
 
Embedded Linux - Building toolchain
Embedded Linux - Building toolchainEmbedded Linux - Building toolchain
Embedded Linux - Building toolchain
Emertxe Information Technologies Pvt Ltd
 
GNU Linux Introduction
GNU Linux IntroductionGNU Linux Introduction
GNU Linux Introduction
Xavier de Pedro
 
Linux device drivers
Linux device drivers Linux device drivers
Linux device drivers
Emertxe Information Technologies Pvt Ltd
 
Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile Everything
Donnie Berkholz
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
Emertxe Information Technologies Pvt Ltd
 
Making Gentoo Tick
Making Gentoo TickMaking Gentoo Tick
Making Gentoo Tick
Anant Narayanan
 
Android Things : Building Embedded Devices
Android Things : Building Embedded DevicesAndroid Things : Building Embedded Devices
Android Things : Building Embedded Devices
Emertxe Information Technologies Pvt Ltd
 
Linux Simple Introduction
Linux Simple IntroductionLinux Simple Introduction
Linux Simple Introduction
JohnMihaya
 
Linux Kernel - An Engineering marvel
Linux Kernel - An Engineering marvelLinux Kernel - An Engineering marvel
Linux Kernel - An Engineering marvel
Emertxe Information Technologies Pvt Ltd
 
Eclipse - Installation and quick start guide
Eclipse - Installation and quick start guideEclipse - Installation and quick start guide
Eclipse - Installation and quick start guide
Emertxe Information Technologies Pvt Ltd
 
Embedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoEmbedded Linux from Scratch to Yocto
Embedded Linux from Scratch to Yocto
Sherif Mousa
 
linux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrixlinux minimal os tutorial - by shatrix
linux minimal os tutorial - by shatrix
Sherif Mousa
 
Towards a Census of Free and Open Source Licenses
Towards a Census of Free and Open Source LicensesTowards a Census of Free and Open Source Licenses
Towards a Census of Free and Open Source Licenses
dmgerman
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
Yen-Chin Lee
 
What is Linux, Ubuntu and Open Source?
What is Linux, Ubuntu and Open Source?What is Linux, Ubuntu and Open Source?
What is Linux, Ubuntu and Open Source?
Jose Kont
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel Development
Priyank Kapadia
 
Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile Everything
Donnie Berkholz
 
Linux Simple Introduction
Linux Simple IntroductionLinux Simple Introduction
Linux Simple Introduction
JohnMihaya
 

Viewers also liked (20)

Introduction To Linux Kernel Modules
Introduction To Linux Kernel ModulesIntroduction To Linux Kernel Modules
Introduction To Linux Kernel Modules
dibyajyotig
 
Linux kernel architecture
Linux kernel architectureLinux kernel architecture
Linux kernel architecture
Teja Bheemanapally
 
Architecture Of The Linux Kernel
Architecture Of The Linux KernelArchitecture Of The Linux Kernel
Architecture Of The Linux Kernel
Dom Cimafranca
 
LCA13: Why I Don't Want Your Code
LCA13: Why I Don't Want Your CodeLCA13: Why I Don't Want Your Code
LCA13: Why I Don't Want Your Code
Linaro
 
Linux Kernel Tour
Linux Kernel TourLinux Kernel Tour
Linux Kernel Tour
samrat das
 
Linux device drivers
Linux device driversLinux device drivers
Linux device drivers
Abhishek Sagar
 
OpenStack for Beginners
OpenStack for BeginnersOpenStack for Beginners
OpenStack for Beginners
Jesse Proudman
 
Linux Kernel Input: mouse, teclado, joystick
Linux Kernel Input: mouse, teclado, joystickLinux Kernel Input: mouse, teclado, joystick
Linux Kernel Input: mouse, teclado, joystick
Marcos de Souza
 
Linux Kernel Security Overview - KCA 2009
Linux Kernel Security Overview - KCA 2009Linux Kernel Security Overview - KCA 2009
Linux Kernel Security Overview - KCA 2009
James Morris
 
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Anne Nicolas
 
Kernel Recipes 2013 - ARM support in the Linux kernel
Kernel Recipes 2013 - ARM support in the Linux kernelKernel Recipes 2013 - ARM support in the Linux kernel
Kernel Recipes 2013 - ARM support in the Linux kernel
Anne Nicolas
 
Linux Device Driver parallelism using SMP and Kernel Pre-emption
Linux Device Driver parallelism using SMP and Kernel Pre-emptionLinux Device Driver parallelism using SMP and Kernel Pre-emption
Linux Device Driver parallelism using SMP and Kernel Pre-emption
Hemanth Venkatesh
 
Gnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-semGnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-sem
Sagun Baijal
 
Linux kernel code
Linux kernel codeLinux kernel code
Linux kernel code
Ganesh Naik
 
Linuxdd[1]
Linuxdd[1]Linuxdd[1]
Linuxdd[1]
mcganesh
 
Device drivers Introduction
Device drivers IntroductionDevice drivers Introduction
Device drivers Introduction
vijay selva
 
Device Drivers in Linux
Device Drivers in LinuxDevice Drivers in Linux
Device Drivers in Linux
Shreyas MM
 
brief intro to Linux device drivers
brief intro to Linux device driversbrief intro to Linux device drivers
brief intro to Linux device drivers
Alexandre Moreno
 
Kernel Configuration and Compilation
Kernel Configuration and CompilationKernel Configuration and Compilation
Kernel Configuration and Compilation
Bud Siddhisena
 
Raspberry Pi - Lecture 6 Working on Raspberry Pi
Raspberry Pi - Lecture 6 Working on Raspberry PiRaspberry Pi - Lecture 6 Working on Raspberry Pi
Raspberry Pi - Lecture 6 Working on Raspberry Pi
Mohamed Abdallah
 
Introduction To Linux Kernel Modules
Introduction To Linux Kernel ModulesIntroduction To Linux Kernel Modules
Introduction To Linux Kernel Modules
dibyajyotig
 
Architecture Of The Linux Kernel
Architecture Of The Linux KernelArchitecture Of The Linux Kernel
Architecture Of The Linux Kernel
Dom Cimafranca
 
LCA13: Why I Don't Want Your Code
LCA13: Why I Don't Want Your CodeLCA13: Why I Don't Want Your Code
LCA13: Why I Don't Want Your Code
Linaro
 
Linux Kernel Tour
Linux Kernel TourLinux Kernel Tour
Linux Kernel Tour
samrat das
 
OpenStack for Beginners
OpenStack for BeginnersOpenStack for Beginners
OpenStack for Beginners
Jesse Proudman
 
Linux Kernel Input: mouse, teclado, joystick
Linux Kernel Input: mouse, teclado, joystickLinux Kernel Input: mouse, teclado, joystick
Linux Kernel Input: mouse, teclado, joystick
Marcos de Souza
 
Linux Kernel Security Overview - KCA 2009
Linux Kernel Security Overview - KCA 2009Linux Kernel Security Overview - KCA 2009
Linux Kernel Security Overview - KCA 2009
James Morris
 
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Kernel Recipes 2014 - The Linux Kernel, how fast it is developed and how we s...
Anne Nicolas
 
Kernel Recipes 2013 - ARM support in the Linux kernel
Kernel Recipes 2013 - ARM support in the Linux kernelKernel Recipes 2013 - ARM support in the Linux kernel
Kernel Recipes 2013 - ARM support in the Linux kernel
Anne Nicolas
 
Linux Device Driver parallelism using SMP and Kernel Pre-emption
Linux Device Driver parallelism using SMP and Kernel Pre-emptionLinux Device Driver parallelism using SMP and Kernel Pre-emption
Linux Device Driver parallelism using SMP and Kernel Pre-emption
Hemanth Venkatesh
 
Gnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-semGnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-sem
Sagun Baijal
 
Linux kernel code
Linux kernel codeLinux kernel code
Linux kernel code
Ganesh Naik
 
Linuxdd[1]
Linuxdd[1]Linuxdd[1]
Linuxdd[1]
mcganesh
 
Device drivers Introduction
Device drivers IntroductionDevice drivers Introduction
Device drivers Introduction
vijay selva
 
Device Drivers in Linux
Device Drivers in LinuxDevice Drivers in Linux
Device Drivers in Linux
Shreyas MM
 
brief intro to Linux device drivers
brief intro to Linux device driversbrief intro to Linux device drivers
brief intro to Linux device drivers
Alexandre Moreno
 
Kernel Configuration and Compilation
Kernel Configuration and CompilationKernel Configuration and Compilation
Kernel Configuration and Compilation
Bud Siddhisena
 
Raspberry Pi - Lecture 6 Working on Raspberry Pi
Raspberry Pi - Lecture 6 Working on Raspberry PiRaspberry Pi - Lecture 6 Working on Raspberry Pi
Raspberry Pi - Lecture 6 Working on Raspberry Pi
Mohamed Abdallah
 
Ad

Similar to Linux Kernel Introduction (20)

LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
Linaro
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
Linaro
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
Linaro
 
BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101
Linaro
 
Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02
Linaro
 
The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...
dmgerman
 
Embedded Linux on ARM
Embedded Linux on ARMEmbedded Linux on ARM
Embedded Linux on ARM
Emertxe Information Technologies Pvt Ltd
 
SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101
Linaro
 
Building Better FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FBBuilding Better FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FB
Davide Cavalca
 
Teaching Open Source In The University
Teaching Open Source In The UniversityTeaching Open Source In The University
Teaching Open Source In The University
Dom Cimafranca
 
Building Better FLOSS Community Relationships @ FB
Building Better  FLOSS Community Relationships @ FBBuilding Better  FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FB
Davide Cavalca
 
Debian general presentation
Debian general presentationDebian general presentation
Debian general presentation
Ding Zhou
 
Ceph Day SF 2015 - Keynote
Ceph Day SF 2015 - Keynote Ceph Day SF 2015 - Keynote
Ceph Day SF 2015 - Keynote
Ceph Community
 
Embedded Linux primer
Embedded Linux primerEmbedded Linux primer
Embedded Linux primer
Drew Fustini
 
HKG15-901: Upstreaming 101
HKG15-901: Upstreaming 101HKG15-901: Upstreaming 101
HKG15-901: Upstreaming 101
Linaro
 
Software maintenance PyConPL 2016
Software maintenance PyConPL 2016Software maintenance PyConPL 2016
Software maintenance PyConPL 2016
Cesar Cardenas Desales
 
Introduction to linux
Introduction to linuxIntroduction to linux
Introduction to linux
plarsen67
 
Free and Open Source Sofware in the Herbarium
Free and Open Source Sofware  in the HerbariumFree and Open Source Sofware  in the Herbarium
Free and Open Source Sofware in the Herbarium
Vidyaratha Kissoon
 
RootStack - Devfactory
RootStack - DevfactoryRootStack - Devfactory
RootStack - Devfactory
Kangaroot
 
Up and Running with Freebsd
Up and Running with FreebsdUp and Running with Freebsd
Up and Running with Freebsd
GLC Networks
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
Linaro
 
Upstreaming 1013
Upstreaming 1013Upstreaming 1013
Upstreaming 1013
Linaro
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
Linaro
 
BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101 BUD17-TR02: Upstreaming 101
BUD17-TR02: Upstreaming 101
Linaro
 
Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02Upstreaming 101 - SFO17-TR02
Upstreaming 101 - SFO17-TR02
Linaro
 
The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...The adoption of FOSS workfows in commercial software development: the case of...
The adoption of FOSS workfows in commercial software development: the case of...
dmgerman
 
SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101SFO15-TR2: Upstreaming 101
SFO15-TR2: Upstreaming 101
Linaro
 
Building Better FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FBBuilding Better FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FB
Davide Cavalca
 
Teaching Open Source In The University
Teaching Open Source In The UniversityTeaching Open Source In The University
Teaching Open Source In The University
Dom Cimafranca
 
Building Better FLOSS Community Relationships @ FB
Building Better  FLOSS Community Relationships @ FBBuilding Better  FLOSS Community Relationships @ FB
Building Better FLOSS Community Relationships @ FB
Davide Cavalca
 
Debian general presentation
Debian general presentationDebian general presentation
Debian general presentation
Ding Zhou
 
Ceph Day SF 2015 - Keynote
Ceph Day SF 2015 - Keynote Ceph Day SF 2015 - Keynote
Ceph Day SF 2015 - Keynote
Ceph Community
 
Embedded Linux primer
Embedded Linux primerEmbedded Linux primer
Embedded Linux primer
Drew Fustini
 
HKG15-901: Upstreaming 101
HKG15-901: Upstreaming 101HKG15-901: Upstreaming 101
HKG15-901: Upstreaming 101
Linaro
 
Introduction to linux
Introduction to linuxIntroduction to linux
Introduction to linux
plarsen67
 
Free and Open Source Sofware in the Herbarium
Free and Open Source Sofware  in the HerbariumFree and Open Source Sofware  in the Herbarium
Free and Open Source Sofware in the Herbarium
Vidyaratha Kissoon
 
RootStack - Devfactory
RootStack - DevfactoryRootStack - Devfactory
RootStack - Devfactory
Kangaroot
 
Up and Running with Freebsd
Up and Running with FreebsdUp and Running with Freebsd
Up and Running with Freebsd
GLC Networks
 
Ad

More from Sage Sharp (6)

Countering impostor syndrome culture
Countering impostor syndrome cultureCountering impostor syndrome culture
Countering impostor syndrome culture
Sage Sharp
 
Countering impostor syndrome culture
Countering impostor syndrome cultureCountering impostor syndrome culture
Countering impostor syndrome culture
Sage Sharp
 
Herding cats with django
Herding cats with djangoHerding cats with django
Herding cats with django
Sage Sharp
 
Open source 101 for students
Open source 101 for studentsOpen source 101 for students
Open source 101 for students
Sage Sharp
 
Vampire Mice: How USB PM Impacts You
Vampire Mice: How USB PM Impacts YouVampire Mice: How USB PM Impacts You
Vampire Mice: How USB PM Impacts You
Sage Sharp
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 
Countering impostor syndrome culture
Countering impostor syndrome cultureCountering impostor syndrome culture
Countering impostor syndrome culture
Sage Sharp
 
Countering impostor syndrome culture
Countering impostor syndrome cultureCountering impostor syndrome culture
Countering impostor syndrome culture
Sage Sharp
 
Herding cats with django
Herding cats with djangoHerding cats with django
Herding cats with django
Sage Sharp
 
Open source 101 for students
Open source 101 for studentsOpen source 101 for students
Open source 101 for students
Sage Sharp
 
Vampire Mice: How USB PM Impacts You
Vampire Mice: How USB PM Impacts YouVampire Mice: How USB PM Impacts You
Vampire Mice: How USB PM Impacts You
Sage Sharp
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 

Recently uploaded (20)

Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
The Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdfThe Significance of Hardware in Information Systems.pdf
The Significance of Hardware in Information Systems.pdf
drewplanas10
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Adobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest VersionAdobe Illustrator Crack FREE Download 2025 Latest Version
Adobe Illustrator Crack FREE Download 2025 Latest Version
kashifyounis067
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage DashboardsAdobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
Adobe Marketo Engage Champion Deep Dive - SFDC CRM Synch V2 & Usage Dashboards
BradBedford3
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
What Do Contribution Guidelines Say About Software Testing? (MSR 2025)
Andre Hora
 
Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]Get & Download Wondershare Filmora Crack Latest [2025]
Get & Download Wondershare Filmora Crack Latest [2025]
saniaaftab72555
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 

Linux Kernel Introduction

  • 1. Linux Device Drivers Sarah Sharp Dec 6, 2014
  • 2. Sarah Sharp ● USB 3.0 host controller driver author ● Linux kernel developer for 9 years ● Worked in Intel's Open Source Technology Center (OTC) for 7 years ● Driver maintainer for 5 years
  • 3. How did I get into open source? ● Didn't program until college ● Portland State University ● My boyfriend introduced me to – open source, Linux, rockets
  • 6. How did I get into Linux kernel development? ● Professor Bart Massey introduced me to – The local Linux kernel community – Greg Kroah-Hartman ● Greg suggested usbfs2 project ● Bart helped me get: – College credit for kernel project – Intel undergraduate research grant
  • 7. How did I get a job in open source? ● Bart encouraged me to present at OSCON on usbfs2 ● Kristin Accardi was on OSCON paper selection committee ● Through network (Bart → Greg → Kristen) I got a job
  • 8. Sarah Sharp: Linux kernel USB 3.0 driver developer ● Hired by Intel in July 2007 ● USB 3.0 specification draft ● FPGA prototypes ● Driver merged in April 2009
  • 9. What is it like to be a Linux kernel developer? ● very tight-knit group, very slow turn over ● 80% of kernel developers are paid ● 20% are volunteers and students ● all work done through mailing lists ● a few IRC channels ● rarely get together in person
  • 10. Linux kernel subsystems ● Many different parts of the kernel ● Broken into subsystems ● Each has a maintainer ● Most have a mailing list ● MAINTAINERS file ● scripts/get_maintainer.pl
  • 11. What Do Subsystem Maintainers Do? ● Experts in their particular field ● Usually 5-20 years of experience ● Approve changes to their area ● Often have 1-4 sub-maintainers ● This is how Linux scales trust
  • 12. Intel Linux Kernel Maintainers ● ACPI - Rafael Wysocki, Zhang Rui ● Bluetooth - Marcel Holtmann ● NFC - Samuel Ortiz ● USB 3.0 - Mathias Nyman ● Intel graphics - Daniel Vetter ● EFI - Matt Fleming ● x86 - H. Peter Anvin, Peter Z ● RAS, machine check - Tony Luck ● Code ellision - Andi Kleen ● NVMe - Matthew Wilcox ● IOMMU - Dave Woodhouse ● Temperature - Fenghua Yu ● DMA offload - Vinod Koul ● Wimax - Inaky Perez-Gonzalez ● Intel wifi - Johannes Berg ● Intel idle - Len Brown ● Intel ethernet - Jeff Kirsher, Jesse Brandeburg, Carolyn Wyborny ● Intel C600 SAS, IOAT - Dan Williams ● Serial, GMA500/600/3600, misc - Alan Cox
  • 13. What is Being a Linux Kernel Maintainer Like? ● Hundreds of emails a day ● 1:Many relationship with contributors ● Rapid development cycle ● Looking at long-term health of the project ● Maintains code for 3 - 20 years ● Reputation is on the line for each patch
  • 14. “Meritocracy” ● Maintainers are vested ● Developers will come and go ● Long-standing contributors gain trust ● Easier for them to do complex things ● Harder for newcomers
  • 15. Community Trust and Social Engineering ● Build a trust relationship with maintainers – Review patches – Ask intelligent questions – Submit small bug fixes ● Learn community norms – Email format – Coding style – Testing
  • 16. Tips for Asking Intelligent Questions ● Always Cc the maintainer ● Do your research ● Document where you looked ● Be concise and precise ● Ask a question you know the answer to, then one you don't
  • 17. Tips for Bug Reporting ● Always Cc the maintainer ● System information is crucial – What hardware? – What kernel, what distro – 32-bit vs 64-bit – lspci, lsusb, acpidump ● Reproducibility thinking ● Be responsive ● Hold onto hardware
  • 18. Linux Kernel Quality Assurance ● Regressions are not tolerated ● Buggy new code is fixed or reverted ● Shifting towards static analysis tools – sparse, smatch, Coccinelle ● 0-day testing infrastructure ● kselftest
  • 19. Getting into Linux kernel development ● Read the code, review other people's patches ● Participate and ask questions on the mailing list ● First patch tutorial – http://kernelnewbies.org/FirstKernelPatch ● Staging cleanup patches – http://kernelnewbies.org/CheckpatchTips ● Linux kernel exercises – http://eudyptula-challenge.org/
  • 20. Leveling Up in Linux Kernel Development ● Larger patchsets ● Use complex tools (sparse, Coccinelle) ● Find an area you're passionate about ● Look for todos, bugzilla entries ● Before starting a large task: – Always ask the maintainer – build trust with the maintainer
  • 21. Tips for Code Review ● Keep a list of the feedback ● Address ALL feedback in revisions ● Track changes in your cover letter ● If you disagree with a maintainer, back yourself up with facts ● Maintainers don't care about your deadline ● Code must be complete and clean ● Duplicate code or drivers won't be accepted
  • 22. More Linux Kernel Resources ● Linux Device Drivers book: http://lwn.net/Kernel/LDD3 ● Linux Device Driver tutorial: https://github.com/gregkh/kernel-tutorial ● FOSS Outreach Program for Women (OPW) (paid open source and Linux kernel internships) http://gnome.org/opw
  • 23. Photo Attribution ● Tux: http://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/400px- NewTux.svg.png ● Jamey and Sarah Sharp: https://www.flickr.com/photos/igalko/7570033604 ● Sarah Sharp and PSAS photos CC BY-SA-NC Sarah Sharp ● Bart Massey: https://www.flickr.com/photos/reidab/9326868060 ● OSCON sign: https://www.flickr.com/photos/kubina/912778997 ● USB 3.0 host PCI card: https://www.flickr.com/photos/hades2k/9069181710 ● Logitech webcam: https://www.flickr.com/photos/bshunrichs/162199777 ● Greg Kroah-Hartman: https://www.flickr.com/photos/tian2992/6208491794 ● David Brownell: https://www.flickr.com/photos/13825348@N03/sets/72157608741347102/detail/
  • 24. Photo Attribution ● Computer guts: https://www.flickr.com/photos/orijinal/4832982682 ● Kernel Summit: https://www.flickr.com/photos/linuxfoundation/2987611750 ● Mail: https://www.flickr.com/photos/donebythehandsofabrokenartist/1502717818 9 ● Nerd merit badge: https://www.flickr.com/photos/momentum/4203541703 ● Trust: https://www.flickr.com/photos/dobs/10726756606 ● Question: https://www.flickr.com/photos/marcobellucci/3534516458 ● Bug: https://www.flickr.com/photos/103499652@N04/14232715868 ● Quality: https://www.flickr.com/photos/dieselbug2007/414348333 ● Editing: https://www.flickr.com/photos/nics_events/2349631515