Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,678 views

Published on

The Women in Computer Science Undergraduate Committee invites you to attend this term's public lecture in which we will host Sarah Sharp, Linux kernel developer and USB 3.0 driver author. Sarah will provide a deep dive into how USB 3.0 support was added to the Linux kernel, as an example of the technical, social, and cultural challenges in getting involved in open source development. Sarah will also provide tips for getting involved with the Linux kernel community.

Published in: Software
  • Be the first to comment

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

  1. 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
  2. 2. https://cs.uwaterloo.ca/wics wics-ugrad@uwaterloo.ca
  3. 3. Sarah Sharp: Today Photo copyright LWN: http://lwn.net/Articles/568298/
  4. 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. 5. Sarah Sharp: 12 years ago
  6. 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
  7. 7. Portland State Aerospace Society
  8. 8. Rockets and Open Source
  9. 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. 10. Lesson 1: Rules can be bent
  11. 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. 12. Lesson 2: Find a mentor and do hands-on projects
  13. 13. USB filesystem (usbfs) USB device driver usbfs USB core USB host controller userspace kernel
  14. 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?
  15. 15. Lesson 3: Technical Debt
  16. 16. Sarah: Senior year ● Bart encouraged me to present at OSCON on usbfs2 ● Kristin Accardi was on OSCON paper selection committee
  17. 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. 18. Lesson 4: Grow your network
  19. 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. 20. Linux USB Stack USB device driver USB core USB host controller userspace kernel
  21. 21. USB device topology Configuration Interface Alternate Setting ● Endpoints: ● IN or OUT ● Buffer Size ● Interval
  22. 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. 23. Linux USB Stack USB device driver USB core USB host controller userspace kernel
  24. 24. Linux USB Maintainers USB 1.1 host and USB core USB 2.0 host USB device drivers and power management USB subsystem
  25. 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. 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. 27. Lesson 5: Open source is social and technical
  28. 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. 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. 30. Lesson 6: Promote yourself
  31. 31. Sarah Sharp: Today Photo copyright LWN: http://lwn.net/Articles/568298/
  32. 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. 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/

×