SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Breaking into Open Source and Linux: 
A USB 3.0 Success Story 
Sarah Sharp 
http://sarah.thesharps.us 
University of Waterloo 
Nov 20,2014
https://cs.uwaterloo.ca/wics 
wics-ugrad@uwaterloo.ca
Sarah Sharp: Today 
Photo copyright LWN: http://lwn.net/Articles/568298/
"We struggle with insecurity because 
we compare our behind-the-scenes 
with everyone else's highlight reel." 
http://alistapart.com/column/seeing-past-the-highlight-reel
Sarah Sharp: 12 years ago
Sarah Sharp: College 
● Portland State University 
● Met ECE Professor Doug Hall 
● Learned how to program 
● My boyfriend introduced me to 
– open source, Linux, rockets
Portland State Aerospace Society
Rockets and Open Source
Sarah Sharp: College 
● Met CS Professor Bart Massey 
● ECE senior capstone: 
USB-based sensor nodes for PSAS rocket 
● Class credit: 
microprocessor pin-out combinatorial search
Lesson 1: 
Rules can be bent
Sarah Sharp: College 
● Bart introduced me to 
– The local Linux kernel community 
– Greg Kroah-Hartman 
● Greg suggested usbfs2 project 
● Bart helped me get: 
– ECE elective credit 
– Intel undergraduate research grant
Lesson 2: 
Find a mentor and 
do hands-on projects
USB filesystem (usbfs) 
USB device driver 
usbfs 
USB core 
USB host controller 
userspace 
kernel
usbfs2 
● Goal: replace IOCTLS with read/write syscalls 
● Didn't want to make userspace block 
● Needed asynchronous completion 
● Why not use ASYNC I/O?
Lesson 3: 
Technical Debt
Sarah: Senior year 
● Bart encouraged me to present at 
OSCON on usbfs2 
● Kristin Accardi was on OSCON 
paper selection committee
Characteristics of a 
good open source developer 
● Meticulous 
– Double checks work, addresses feedback 
● Excellent communication skills 
– Clear, concise, persuasive, responsive 
● Self learner, curious, asks questions 
● Prefers to work in an open manner
Lesson 4: 
Grow your network
Sarah: Linux USB 3.0 developer 
● Hired by Intel in July 2007 
● USB 3.0 specification draft 
● Hardware was still in FPGA form
Linux USB Stack 
USB device driver 
USB core 
USB host controller 
userspace 
kernel
USB device topology 
Configuration 
Interface 
Alternate Setting 
● Endpoints: 
● IN or OUT 
● Buffer Size 
● Interval
USB 3.0 host changes 
● USB 1.1/2.0 hosts 
– scheduling done in software 
– unaware of device endpoints 
● USB 3.0 host 
– supports virtualization 
– scheduling done in hardware 
– must be aware of device endpoints
Linux USB Stack 
USB device driver 
USB core 
USB host controller 
userspace 
kernel
Linux USB Maintainers 
USB 1.1 host and 
USB core 
USB 2.0 host USB device drivers and 
power management 
USB subsystem
What is being a 
Linux kernel maintainer like? 
● Ten to hundreds of emails a day 
● Very rapid development cycle 
● Looking at long-term health of the project 
● Maintains code for 5 - 20 years 
● Reputation is on the line for each patch
Linux kernel code submission 
● Many revisions (often up to v8) 
● Must meet coding style standards 
● Must be complete and maintainable 
● Often old code needs to be refactored 
● Can't break other users, subsystems
Lesson 5: 
Open source is 
social and technical
Sarah Sharp: Kernel maintainer 
● xHCI driver was accepted in 2009 
– two years after I was hired 
● USB 3.0 kernel maintainer 
● Learned about: 
– reviewing other people's code 
– working with bug reporters 
– sending pull requests 
– stable backports
Sarah Sharp: Conference Speaker 
● Uploaded USB 3.0 demo video to reddit 
● Articles published about Linux getting USB 3.0 support 
before Windows 
● Spoke or demoed at numerous conferences 
– SuperSpeed Developer Conference Japan 2010 
– Linux Conference Australia 2010, 2011, 2013 
– Libre Software Meeting (France) 2011 
– LinuxCon (North America & Europe) 
– OSCON, Open Source Bridge (Portland)
Lesson 6: 
Promote yourself
Sarah Sharp: Today 
Photo copyright LWN: http://lwn.net/Articles/568298/
Linux Kernel Resources 
● Linux Device Drivers book: 
http://lwn.net/Kernel/LDD3 
● Linux Device Driver tutorial: 
https://github.com/gregkh/kernel-tutorial 
● First kernel patch tutorial: 
http://kernelnewbies.org/FirstKernelPatch 
● FOSS Outreach Program for Women (OPW) 
(paid open source and Linux kernel internships) 
http://gnome.org/opw
Photo Attribution 
● Kernel Panel: http://lwn.net/Articles/568298/ 
● Rainier: https://www.flickr.com/photos/misternaxal/513732031 
● Dusty computer: https://www.flickr.com/photos/garhol/4417674619 
● PSAS photos CC BY-SA-NC Sarah Sharp 
● Bart Massey: https://www.flickr.com/photos/igalko/7570219768 
● OSCON sign: https://www.flickr.com/photos/kubina/912778997 
● 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/d 
etail/

Mais conteúdo relacionado

Mais procurados

Introduction to Rust Programming Language
Introduction to Rust Programming LanguageIntroduction to Rust Programming Language
Introduction to Rust Programming LanguageRobert 'Bob' Reyes
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101Linaro
 
Rust Programming Language
Rust Programming LanguageRust Programming Language
Rust Programming LanguageJaeju Kim
 
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016Codemotion
 
Intro ipcberlin2012
Intro ipcberlin2012Intro ipcberlin2012
Intro ipcberlin2012Pierre Joye
 
Building Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionBuilding Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionSherif Mousa
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101Linaro
 
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 EverythingDonnie Berkholz
 
MozillaPH Rust Hack & Learn Session 1
MozillaPH Rust Hack & Learn Session 1MozillaPH Rust Hack & Learn Session 1
MozillaPH Rust Hack & Learn Session 1Robert 'Bob' Reyes
 
How Linux uses Git
How Linux uses GitHow Linux uses Git
How Linux uses Gitdmgerman
 
Introduction to Git and GitHub #git_nyan
Introduction to Git and GitHub #git_nyanIntroduction to Git and GitHub #git_nyan
Introduction to Git and GitHub #git_nyanHiro Yoshioka
 
ProjectTox: Free as in freedom Skype replacement
ProjectTox: Free as in freedom Skype replacementProjectTox: Free as in freedom Skype replacement
ProjectTox: Free as in freedom Skype replacementWei-Ning Huang
 
MozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off MeetingMozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off MeetingRobert 'Bob' Reyes
 
Connected Devices, MozVR & Firefox Developer Tools
Connected Devices, MozVR & Firefox Developer ToolsConnected Devices, MozVR & Firefox Developer Tools
Connected Devices, MozVR & Firefox Developer ToolsRobert 'Bob' Reyes
 
Embedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoEmbedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoSherif Mousa
 
001 linux revision
001 linux revision001 linux revision
001 linux revisionSherif Mousa
 

Mais procurados (20)

Introduction to Rust Programming Language
Introduction to Rust Programming LanguageIntroduction to Rust Programming Language
Introduction to Rust Programming Language
 
LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101LCE12: Intro Training: Upstreaming 101
LCE12: Intro Training: Upstreaming 101
 
Rust Programming Language
Rust Programming LanguageRust Programming Language
Rust Programming Language
 
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
Why Rust? - Matthias Endler - Codemotion Amsterdam 2016
 
Intro ipcberlin2012
Intro ipcberlin2012Intro ipcberlin2012
Intro ipcberlin2012
 
Building Embedded Linux Systems Introduction
Building Embedded Linux Systems IntroductionBuilding Embedded Linux Systems Introduction
Building Embedded Linux Systems Introduction
 
LCA13: Upstreaming 101
LCA13: Upstreaming 101LCA13: Upstreaming 101
LCA13: Upstreaming 101
 
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
 
MozillaPH Rust Hack & Learn Session 1
MozillaPH Rust Hack & Learn Session 1MozillaPH Rust Hack & Learn Session 1
MozillaPH Rust Hack & Learn Session 1
 
How Linux uses Git
How Linux uses GitHow Linux uses Git
How Linux uses Git
 
Introduction to Git and GitHub #git_nyan
Introduction to Git and GitHub #git_nyanIntroduction to Git and GitHub #git_nyan
Introduction to Git and GitHub #git_nyan
 
ProjectTox: Free as in freedom Skype replacement
ProjectTox: Free as in freedom Skype replacementProjectTox: Free as in freedom Skype replacement
ProjectTox: Free as in freedom Skype replacement
 
MozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off MeetingMozillaPH Rust Users Group Kick Off Meeting
MozillaPH Rust Users Group Kick Off Meeting
 
Embedded Linux On A R M
Embedded  Linux On  A R MEmbedded  Linux On  A R M
Embedded Linux On A R M
 
FreeBSD Portscamp, Kuala Lumpur 2016
FreeBSD Portscamp, Kuala Lumpur 2016FreeBSD Portscamp, Kuala Lumpur 2016
FreeBSD Portscamp, Kuala Lumpur 2016
 
Connected Devices, MozVR & Firefox Developer Tools
Connected Devices, MozVR & Firefox Developer ToolsConnected Devices, MozVR & Firefox Developer Tools
Connected Devices, MozVR & Firefox Developer Tools
 
Embedded Linux - Building toolchain
Embedded Linux - Building toolchainEmbedded Linux - Building toolchain
Embedded Linux - Building toolchain
 
Embedded Linux from Scratch to Yocto
Embedded Linux from Scratch to YoctoEmbedded Linux from Scratch to Yocto
Embedded Linux from Scratch to Yocto
 
001 linux revision
001 linux revision001 linux revision
001 linux revision
 
OpenGen webinar 011110
OpenGen webinar 011110OpenGen webinar 011110
OpenGen webinar 011110
 

Destaque

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 YouSage Sharp
 
Gnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-semGnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-semSagun Baijal
 
Linuxdd[1]
Linuxdd[1]Linuxdd[1]
Linuxdd[1]mcganesh
 
Device drivers Introduction
Device drivers IntroductionDevice drivers Introduction
Device drivers Introductionvijay selva
 
Linux kernel code
Linux kernel codeLinux kernel code
Linux kernel codeGanesh Naik
 
Device Drivers in Linux
Device Drivers in LinuxDevice Drivers in Linux
Device Drivers in LinuxShreyas MM
 
brief intro to Linux device drivers
brief intro to Linux device driversbrief intro to Linux device drivers
brief intro to Linux device driversAlexandre Moreno
 
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-emptionHemanth Venkatesh
 
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 PiMohamed Abdallah
 
Performance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesPerformance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesSoheila Dehghanzadeh
 
Introduction to Raspberry Pi and GPIO
Introduction to Raspberry Pi and GPIOIntroduction to Raspberry Pi and GPIO
Introduction to Raspberry Pi and GPIOKris Findlay
 
Device tree support on arm linux
Device tree support on arm linuxDevice tree support on arm linux
Device tree support on arm linuxChih-Min Chao
 
Containers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to KubernetesContainers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to KubernetesShreyas MM
 
Introduction to embedded linux device driver and firmware
Introduction to embedded linux device driver and firmwareIntroduction to embedded linux device driver and firmware
Introduction to embedded linux device driver and firmwaredefinecareer
 
Userspace drivers-2016
Userspace drivers-2016Userspace drivers-2016
Userspace drivers-2016Chris Simmonds
 
Advanced Git
Advanced GitAdvanced Git
Advanced Gitsegv
 
linux device driver
linux device driverlinux device driver
linux device driverRahul Batra
 

Destaque (20)

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
 
Gnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-semGnubs-pres-foss-cdac-sem
Gnubs-pres-foss-cdac-sem
 
Linuxdd[1]
Linuxdd[1]Linuxdd[1]
Linuxdd[1]
 
Device drivers Introduction
Device drivers IntroductionDevice drivers Introduction
Device drivers Introduction
 
Linux kernel code
Linux kernel codeLinux kernel code
Linux kernel code
 
Device Drivers in Linux
Device Drivers in LinuxDevice Drivers in Linux
Device Drivers in Linux
 
brief intro to Linux device drivers
brief intro to Linux device driversbrief intro to Linux device drivers
brief intro to Linux device drivers
 
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
 
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
 
Linux Device Driver’s
Linux Device Driver’sLinux Device Driver’s
Linux Device Driver’s
 
Containers in the Cloud
Containers in the CloudContainers in the Cloud
Containers in the Cloud
 
Performance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual MachinesPerformance comparison between Linux Containers and Virtual Machines
Performance comparison between Linux Containers and Virtual Machines
 
Introduction to Raspberry Pi and GPIO
Introduction to Raspberry Pi and GPIOIntroduction to Raspberry Pi and GPIO
Introduction to Raspberry Pi and GPIO
 
Device tree support on arm linux
Device tree support on arm linuxDevice tree support on arm linux
Device tree support on arm linux
 
Containers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to KubernetesContainers and Cloud: From LXC to Docker to Kubernetes
Containers and Cloud: From LXC to Docker to Kubernetes
 
Introduction to embedded linux device driver and firmware
Introduction to embedded linux device driver and firmwareIntroduction to embedded linux device driver and firmware
Introduction to embedded linux device driver and firmware
 
Userspace drivers-2016
Userspace drivers-2016Userspace drivers-2016
Userspace drivers-2016
 
LINUX Device Drivers
LINUX Device DriversLINUX Device Drivers
LINUX Device Drivers
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
 
linux device driver
linux device driverlinux device driver
linux device driver
 

Semelhante a Breaking into Open Source and Linux: A USB 3.0 Success Story

Network research
Network researchNetwork research
Network researchJisc
 
Introduction to linux at Introductory Bioinformatics Workshop
Introduction to linux at Introductory Bioinformatics WorkshopIntroduction to linux at Introductory Bioinformatics Workshop
Introduction to linux at Introductory Bioinformatics WorkshopSetor Amuzu
 
Embedded Linux primer
Embedded Linux primerEmbedded Linux primer
Embedded Linux primerDrew Fustini
 
Open Source Communities in Hong Kong (2013 COSCUP version)
Open Source Communities in Hong Kong (2013 COSCUP version)Open Source Communities in Hong Kong (2013 COSCUP version)
Open Source Communities in Hong Kong (2013 COSCUP version)Sammy Fung
 
Basics of GNU & Linux
Basics of GNU & LinuxBasics of GNU & Linux
Basics of GNU & LinuxBIT DURG
 
Connecting Arduino and Android
Connecting Arduino and AndroidConnecting Arduino and Android
Connecting Arduino and AndroidMichał Tuszyński
 
Archival Technologies 2014
Archival Technologies 2014Archival Technologies 2014
Archival Technologies 2014Cliff Landis
 
Software Freedom and Community
Software Freedom and CommunitySoftware Freedom and Community
Software Freedom and CommunitySammy Fung
 
Open Source Tools for Libraries
Open Source Tools for LibrariesOpen Source Tools for Libraries
Open Source Tools for LibrariesNicole C. Engard
 
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformaticsStephen Turner
 
Linux Presentation_SSD.pdf
Linux Presentation_SSD.pdfLinux Presentation_SSD.pdf
Linux Presentation_SSD.pdfssuser37b0e0
 
The RULE project: efficient computing for all GNU/Linux users
The RULE project: efficient computing for all GNU/Linux usersThe RULE project: efficient computing for all GNU/Linux users
The RULE project: efficient computing for all GNU/Linux usersMarco Fioretti
 
Open Source Hardware, Linux and RISC-V
Open Source Hardware, Linux and RISC-VOpen Source Hardware, Linux and RISC-V
Open Source Hardware, Linux and RISC-VDrew Fustini
 
01 zero lecture lovely professional university CSE111.pptx
01 zero lecture lovely professional university CSE111.pptx01 zero lecture lovely professional university CSE111.pptx
01 zero lecture lovely professional university CSE111.pptxmexebi1971
 
Freifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale JitsiFreifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale JitsiAnnika Wickert
 

Semelhante a Breaking into Open Source and Linux: A USB 3.0 Success Story (20)

Network research
Network researchNetwork research
Network research
 
Introduction to linux at Introductory Bioinformatics Workshop
Introduction to linux at Introductory Bioinformatics WorkshopIntroduction to linux at Introductory Bioinformatics Workshop
Introduction to linux at Introductory Bioinformatics Workshop
 
Embedded Linux primer
Embedded Linux primerEmbedded Linux primer
Embedded Linux primer
 
Open Source Communities in Hong Kong (2013 COSCUP version)
Open Source Communities in Hong Kong (2013 COSCUP version)Open Source Communities in Hong Kong (2013 COSCUP version)
Open Source Communities in Hong Kong (2013 COSCUP version)
 
Basics of GNU & Linux
Basics of GNU & LinuxBasics of GNU & Linux
Basics of GNU & Linux
 
Connecting Arduino and Android
Connecting Arduino and AndroidConnecting Arduino and Android
Connecting Arduino and Android
 
Archival Technologies 2014
Archival Technologies 2014Archival Technologies 2014
Archival Technologies 2014
 
linux.ppt
linux.pptlinux.ppt
linux.ppt
 
Ghc14
Ghc14Ghc14
Ghc14
 
Software Freedom and Community
Software Freedom and CommunitySoftware Freedom and Community
Software Freedom and Community
 
Open Source Tools for Libraries
Open Source Tools for LibrariesOpen Source Tools for Libraries
Open Source Tools for Libraries
 
up-down-stream-flows-20190411rzr
up-down-stream-flows-20190411rzrup-down-stream-flows-20190411rzr
up-down-stream-flows-20190411rzr
 
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
2018 ABRF Tools for improving rigor and reproducibility in bioinformatics
 
Linux Presentation_SSD.pdf
Linux Presentation_SSD.pdfLinux Presentation_SSD.pdf
Linux Presentation_SSD.pdf
 
A Gnu Way of Learning
A Gnu Way of LearningA Gnu Way of Learning
A Gnu Way of Learning
 
The RULE project: efficient computing for all GNU/Linux users
The RULE project: efficient computing for all GNU/Linux usersThe RULE project: efficient computing for all GNU/Linux users
The RULE project: efficient computing for all GNU/Linux users
 
Open Source Hardware, Linux and RISC-V
Open Source Hardware, Linux and RISC-VOpen Source Hardware, Linux and RISC-V
Open Source Hardware, Linux and RISC-V
 
01 zero lecture lovely professional university CSE111.pptx
01 zero lecture lovely professional university CSE111.pptx01 zero lecture lovely professional university CSE111.pptx
01 zero lecture lovely professional university CSE111.pptx
 
Android slides
Android slidesAndroid slides
Android slides
 
Freifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale JitsiFreifunk Munich - How to scale Jitsi
Freifunk Munich - How to scale Jitsi
 

Último

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 

Último (20)

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 

Breaking into Open Source and Linux: A USB 3.0 Success Story

  • 1. Breaking into Open Source and Linux: A USB 3.0 Success Story Sarah Sharp http://sarah.thesharps.us University of Waterloo Nov 20,2014
  • 3. Sarah Sharp: Today Photo copyright LWN: http://lwn.net/Articles/568298/
  • 4. "We struggle with insecurity because we compare our behind-the-scenes with everyone else's highlight reel." http://alistapart.com/column/seeing-past-the-highlight-reel
  • 5. Sarah Sharp: 12 years ago
  • 6. Sarah Sharp: College ● Portland State University ● Met ECE Professor Doug Hall ● Learned how to program ● My boyfriend introduced me to – open source, Linux, rockets
  • 9. Sarah Sharp: College ● Met CS Professor Bart Massey ● ECE senior capstone: USB-based sensor nodes for PSAS rocket ● Class credit: microprocessor pin-out combinatorial search
  • 10. Lesson 1: Rules can be bent
  • 11. Sarah Sharp: College ● Bart introduced me to – The local Linux kernel community – Greg Kroah-Hartman ● Greg suggested usbfs2 project ● Bart helped me get: – ECE elective credit – Intel undergraduate research grant
  • 12. Lesson 2: Find a mentor and do hands-on projects
  • 13. USB filesystem (usbfs) USB device driver usbfs USB core USB host controller userspace kernel
  • 14. usbfs2 ● Goal: replace IOCTLS with read/write syscalls ● Didn't want to make userspace block ● Needed asynchronous completion ● Why not use ASYNC I/O?
  • 16. Sarah: Senior year ● Bart encouraged me to present at OSCON on usbfs2 ● Kristin Accardi was on OSCON paper selection committee
  • 17. Characteristics of a good open source developer ● Meticulous – Double checks work, addresses feedback ● Excellent communication skills – Clear, concise, persuasive, responsive ● Self learner, curious, asks questions ● Prefers to work in an open manner
  • 18. Lesson 4: Grow your network
  • 19. Sarah: Linux USB 3.0 developer ● Hired by Intel in July 2007 ● USB 3.0 specification draft ● Hardware was still in FPGA form
  • 20. Linux USB Stack USB device driver USB core USB host controller userspace kernel
  • 21. USB device topology Configuration Interface Alternate Setting ● Endpoints: ● IN or OUT ● Buffer Size ● Interval
  • 22. USB 3.0 host changes ● USB 1.1/2.0 hosts – scheduling done in software – unaware of device endpoints ● USB 3.0 host – supports virtualization – scheduling done in hardware – must be aware of device endpoints
  • 23. Linux USB Stack USB device driver USB core USB host controller userspace kernel
  • 24. Linux USB Maintainers USB 1.1 host and USB core USB 2.0 host USB device drivers and power management USB subsystem
  • 25. What is being a Linux kernel maintainer like? ● Ten to hundreds of emails a day ● Very rapid development cycle ● Looking at long-term health of the project ● Maintains code for 5 - 20 years ● Reputation is on the line for each patch
  • 26. Linux kernel code submission ● Many revisions (often up to v8) ● Must meet coding style standards ● Must be complete and maintainable ● Often old code needs to be refactored ● Can't break other users, subsystems
  • 27. Lesson 5: Open source is social and technical
  • 28. Sarah Sharp: Kernel maintainer ● xHCI driver was accepted in 2009 – two years after I was hired ● USB 3.0 kernel maintainer ● Learned about: – reviewing other people's code – working with bug reporters – sending pull requests – stable backports
  • 29. Sarah Sharp: Conference Speaker ● Uploaded USB 3.0 demo video to reddit ● Articles published about Linux getting USB 3.0 support before Windows ● Spoke or demoed at numerous conferences – SuperSpeed Developer Conference Japan 2010 – Linux Conference Australia 2010, 2011, 2013 – Libre Software Meeting (France) 2011 – LinuxCon (North America & Europe) – OSCON, Open Source Bridge (Portland)
  • 30. Lesson 6: Promote yourself
  • 31. Sarah Sharp: Today Photo copyright LWN: http://lwn.net/Articles/568298/
  • 32. Linux Kernel Resources ● Linux Device Drivers book: http://lwn.net/Kernel/LDD3 ● Linux Device Driver tutorial: https://github.com/gregkh/kernel-tutorial ● First kernel patch tutorial: http://kernelnewbies.org/FirstKernelPatch ● FOSS Outreach Program for Women (OPW) (paid open source and Linux kernel internships) http://gnome.org/opw
  • 33. Photo Attribution ● Kernel Panel: http://lwn.net/Articles/568298/ ● Rainier: https://www.flickr.com/photos/misternaxal/513732031 ● Dusty computer: https://www.flickr.com/photos/garhol/4417674619 ● PSAS photos CC BY-SA-NC Sarah Sharp ● Bart Massey: https://www.flickr.com/photos/igalko/7570219768 ● OSCON sign: https://www.flickr.com/photos/kubina/912778997 ● 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/d etail/