Date post: | 15-Jul-2015 |
Category: |
Software |
Upload: | saharabeara |
View: | 1,422 times |
Download: | 3 times |
Breaking into Open Source and Linux:A USB 3.0 Success Story
Sarah Sharphttp://sarah.thesharps.us
University of WaterlooNov 20,2014
https://cs.uwaterloo.ca/[email protected]
Sarah Sharp: Today
Photo copyright LWN: http://lwn.net/Articles/568298/
"We struggle with insecurity becausewe compare our behind-the-sceneswith 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 agood 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 andUSB core
USB 2.0 host USB device drivers and power management
USB subsystem
What is being aLinux 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/detail/