SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
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/

Contenu connexe

Tendances

Intro ipcberlin2012
Intro ipcberlin2012Intro ipcberlin2012
Intro ipcberlin2012
Pierre Joye
 
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
 
001 linux revision
001 linux revision001 linux revision
001 linux revision
Sherif Mousa
 

Tendances (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
 

En vedette

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
 
Linuxdd[1]
Linuxdd[1]Linuxdd[1]
Linuxdd[1]
mcganesh
 
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
definecareer
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
segv
 

En vedette (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
 

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

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
 

Similaire à 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
 

Dernier

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Dernier (20)

Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

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/