Global Software Development in Global Software Development in Global Software Development in the FreeBSD Project the FreeBSD Project the FreeBSD Project Diomidis Spinellis Diomidis Spinellis Athens University of Economics and Business Athens University of Economics and Business
Outline � FreeBSD � Methodology � Findings – Global development – Productivity and quality – Human interactions
FreeBSD � Complete operating system � Derived from BSD Unix � Focus on stability and reliability – Yahoo’s s servers – Part of Apple’s Max OS X
Development � ~350 developers Kernel ~2.8MLoC – Documentation Documentation Operating system utilities ~9.8MLoC Third party application ports ~12000
Development Facilities � CVS (10 years of historical data; >938k) � Problem reports (>95k) � Mailing lists (>100) � Tinderbox � Web site – Developer’s handbook – Release engineering – Browsable CVS – Mailing lists – PRs
Development Process � Unpaid volunteers � Teams – Core – Release engineering – Security – Ports – Donations � Committer etiquette � Mentoring
Global Development
Around the Globe
Division of Work 3000 2500 2000 KLoC 1500 1000 500 0 Africa Asia Australia Europe North South America America
Hold and Advance Work type per area 100% 80% 60% Main KLoC Branch 40% 20% 0% Africa Asia Australia Europe North South America America
… and Fix Closed GNATS entries per area Africa Asia 1% Australia 13% 7% North America 36% Europe 41% South America 2%
Roads and Buildings Work type per area 100% 80% ports 60% doc www 40% src 20% 0% Africa Asia Europe South North Australia America America
Round the Clock 300 250 Average LOC per day 200 150 100 50 0 0 4 8 12 16 20 Time (UTC)
Passing Work Around 100% 90% 80% >8h by different 70% committers 60% >8h by the same committer Days 50% 40% Next day commits 30% 20% 10% 0% Files Modules All Granule
Productivity and Quality + Round the clock development + Software and hardware diversity - Lack of face-to-face communication - Asynchronous communication ? A more rigorous process is required ? Cultural diversity
Productivity � More developers produce more software (base case) 1000 � r=0.67 (95% CI) 800 600 KLoC 400 200 0 0 10 20 30 40 50 Number of developers
Productivity � … but developer distance doesn’t affect productivity. 1000 � r=-0.14 (95% CI) 800 600 KLoC 400 200 0 0 2000 4000 6000 8000 10000 12000 14000 16000 18000 Developer distance
Code Style 100 80 % of non-adhering lines 60 40 20 � r=0.05 (95% CI) 0 0 10 20 30 40 50 60 70 80 90 Number of developers in the annotated file
Defect Density 1 � r=0.07 (95% CI) 0.8 PRs per commit 0.6 0.4 0.2 0 0 20 40 60 80 100 120 140 160 180 200 Number of developers
Human Interactions � Look for neighbors – Cooperating developers – Mentors and mentees Jan Van Haasteren: Neighbours
Cooperating developers � Mean distance between – any two FreeBSD developers: 6,701km � 4010 instances of commits – Same file – Same day – Different developers – Mean distance: 6,489km
Mentors and mentees Min ¼ Media Mean ¾ Max Any 0 2.2 7.8 6.7 9.3 19 M/M 0 0.7 3.8 5.0 8.8 18
GSD Works � Round the clock development � No ill effects on – Productivity – Code quality – Bug density � Distance – Doesn’t show up in ad hoc cooperation – Appears to matter in mentoring
Recommend
More recommend