OSS Development Team in a Company 2015/06/04 Ken’ichi Ohmichi Ghanshyam Mann NEC
Agenda Who are we? Purposes to join OSS development Company viewpoint Developer viewpoint Growing steps of OSS developer Step1: Fix trivial bugs Step2: Review patches Step3: Propose big features Join OSS development community Keep relation with e-mails, IRCs and meetups Educate new developers
Who are we? Ken’ichi Ohmichi Ghanshyam Mann Software developer from NEC Some proprietary software developments’ experience OSS development experience related to Linux crashdump OpenStack community member since 2012 Core developer of two OpenStack projects: Nova and Tempest Ghanshyam Mann Core developer of OpenStack project: Tempest
Purposes to join OSS dev - Company viewpoint -
Share Development Cost Between Companies Some OSS codes are huge Difficult to implement a competing software by a single company v4.0.4 14ML Kilo 3ML
Avoid maintenance cost of private changes Make Feature De-fact Avoid maintenance cost of private changes High speed OSS changes(feature, bug-fix, cleanup) Difficult to catch all changes
Keep High Quality Detect/Fix bugs at upstream to help users including company’s consumers 3 core developers in our team do that at upstream
Follow Upstream-First Trend Some projects’ requirements become to contain Upstream-First
Purposes to join OSS dev - developer viewpoint -
Skip Up Read/Write code without documents Unnecessary to read/write many docs Concentrate on code Get feedback from skillful developers in the world Sometimes negative feedback hurts us But that is a good chance to lean technical knowledge
Get Friends In The World Conferences/meetups hold in the world Meet skillful developers directly and enjoy discussions August 17-19 @Seattle October 5-7 @Dublin, Ireland March 29-30 Lake Tahoe, CA
Get Opportunities OSS works are public and everyone can know OSS developers skills Expose your experiences/specials on
Growing Steps of OSS developer
Growing Steps of OSS Developer Lead OSS project Leader ③Propose big features Developer ②Review patches ①Fix trivial bugs Use OSS User Time
Step1: Fix Trivial Bugs(1/2) Trivial bug-fix patches are easy to be merged Fix typos Add error handlings
Step1: Fix Trivial Bugs(2/2) Know community manners via patch mergers Know coding style Linux: Don’t use braces(“{ .. }”) for a single statement OpenStack: Write imported modules order correctly Know commit message format Linux: Signed-off-by: OpenStack: Closes-Bug: #xxx Response feedback calmly Sometimes get negative feedback But that will be hint of improvement Apply feedback to the patch quickly Quick patch updates help reviewers because reviewers can avoid brain context switching
Step2: Review Patches(1/3) Patch reviews help community development Reviews are important to decide whether the patches should be merged to upstream But difficult to get enough reviews, because most developers prefer writing patches than reviewing patches by nature Your reviews will help the other developments Linus’s Rule: Given enough eyeballs, all bus are shallow
Step2: Review Patches(2/3) Developers can grow via patch reviews Know upstream development trends Lean what points are important from the other developer viewpoints
Step2: Review Patches(3/3) Review coworkers’ patches Easy to understand the purpose because of F2F communication Avoid company private reviews, make them public instead Review the other patches in particular area Have good experience by writing patches also Report the test result on some environments Make review area wider Know main trend of the OSS project Propose reasonable features based on the trend Growing
Step3: Propose Big Features(1/2) Make features common OSS seems like greatest common divisor Common features are acceptable Implement them by small steps A single big patch is difficult to be reviewed Make development proceed by small patches Share big workload between developers
Step3: Propose Big Features(2/2) Don’t stick on single implementation way When getting feedback, developers tend to stick on their own implementation ways. But not important in most cases Better to adopt good implementation way and apply feedback soon for going forward
Join OSS development community
Join OSS Development Community Keep touch with e-mails, IRCs and conferences/meetups Way Time Zone Issue Language Fun E-mails None Small Middle IRCs High Conferences /Meetups None, but Jet Lag High, but we can feel some inspiration by F2F Super High!!
Educate New Developers Step 1: Share knowledge in a company internal team Step 2: Join the upstream training Step 3: Share knowledge in a community OpenStack Upstream Training
Summary
Make a company internal team close to OSS upstream Summary Growing steps of OSS developer Step1: Fix trivial bugs Step2: Review patches Step3: Propose big features Join OSS development community Keep relation with e-mails, IRCs and meetups Educate new developers Make a company internal team close to OSS upstream ・Make process close to community manner ・Help the other community members ・Develop big features together
Managing the international OpenStack Development Team for Success Related session Managing the international OpenStack Development Team for Success Friday, June 5 14:00 – 14:50 @ Orchid 3 Topics: Culture, Language, Character and etc.