breaking into open source and linux: a usb 3.0 success story

Post on 15-Jul-2015

1.422 Views

Category:

Software

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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/wicswics-ugrad@uwaterloo.ca

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/

top related