u-boot community analysis
TRANSCRIPT
Introduction Methodology Results Conclusions Thanks!
U-Boot community analysis
Xulio Coira Sanchez
Master Software Libre, 2009-2010. A Coruna Edition
January 22, 2010
(cc) 2010 Xulio CoiraSome rights reserved. This work licensed under Creative Commons Attribution-ShareAlike License.
To view a copy of full license, see http://creativecommons.org/licenses/by-sa/3.0/ or write to Creative Commons,559 Nathan Abbott Way, Stanford, California 94305, USA.
Introduction Methodology Results Conclusions Thanks!
Content
1 IntroductionHistory
2 MethodologyToolsData sourcesAnalysis
3 ResultsRepository analysisMailing list analysisMixed analysis
4 Conclusions
Introduction Methodology Results Conclusions Thanks!
What is U-Boot?
”Das U-Boot” (Universal Bootloader) is a bootloader for a numberof different computer architectures, including PPC, ARM, AVR32,MIPS, x86, 68k, Nios, and MicroBlaze. Its name comes from theabbreviated form of Das Unterseeboot, German for ”thesubmarine.”It is free software released under the terms of the GNU GeneralPublic License. It can be built on an x86 PC for any supportedarchitecture using a cross development GNU toolchain.
Introduction Methodology Results Conclusions Thanks!
U-Boot design principles
The design principles of U-Boot are:
Easy to port to new architectures, new processors, and newboards
Easy to debug: serial console output as soon as possible
Features and commands configurable
As small as possible
As reliable as possible
Introduction Methodology Results Conclusions Thanks!
History
Outline
1 IntroductionHistory
2 MethodologyToolsData sourcesAnalysis
3 ResultsRepository analysisMailing list analysisMixed analysis
4 Conclusions
Introduction Methodology Results Conclusions Thanks!
History
History
Originated in work done by Magnus Damm on a 8xx PowerPCbootloader called 8xxROM.
When Wolfgang Denk moved the project to SourceForge.net,the project was renamed PPCBoot, because SF.net did notallow project names starting with digits.
In November 2002 the project was renamed again, whensupport had been extended beyond booting on PowerPCs.
Introduction Methodology Results Conclusions Thanks!
History
Prehistoric milestones
1999 8xxrom (Magnus Damm - Raphael Bossek)Jul 2000 PPCBoot (Wolfgang Denk)
Siemens PSE, Vienna: First commercial sponsorAug 2000 Only PPC (4 boards)Oct 2000 Added network support
Support for IBM PPC (Stefan Roese)End 2000 27 boardsEnd 2001 63 boardsNov 2002 106 boards PPCBoot-2.0.0 (last release)
Introduction Methodology Results Conclusions Thanks!
History
Modern milestones
Nov 2002 Start U-Boot projectNov 2002 x86 supportMar 2003 MIPS32Apr 2003 MIPS64Oct 2003 Altera NIOS-32Dec 2003 ColdfireApr 2004 Microblaze
> 216 boards
Introduction Methodology Results Conclusions Thanks!
Tools
Outline
1 IntroductionHistory
2 MethodologyToolsData sourcesAnalysis
3 ResultsRepository analysisMailing list analysisMixed analysis
4 Conclusions
Introduction Methodology Results Conclusions Thanks!
Tools
LibreSoft tools
cvsanaly http://tools.libresoft.es/A tool that extracts information out of source coderepository logs and stores it into a database.
mlstats http://tools.libresoft.es/A command line based tool used to analyze mboxes.It downloads the mboxes in a directory wheredatabase will be created. It stores all the informationwhich is contained in a e-mail.
guilty http://git.libresoft.es/guilty/A tool to extract blame command information fromSCM repositories.
Introduction Methodology Results Conclusions Thanks!
Tools
Other tools
sloccount http://www.dwheeler.com/sloccount/A set of tools for counting physical Source Lines ofCode (SLOC) in a large number of languages.
R http://www.r-project.org/R is a free software environment for statisticalcomputing and graphics.
Introduction Methodology Results Conclusions Thanks!
Tools
Custom tools
Several scripts were written in order to automatize data gatheringand graphics generation. The main goal was to obtain the mostgeneric as possible tool, capable of analyse several communityaspects providing only the original information sources, andreproducible in the future. The tool flow is:
1 Download code repository.
2 Download mailing list mailboxes.
3 Run cvsanaly and sanitize database based on duplicatedemails and names provided in config file.
4 Run guilty and sanitize based on duplicated names provided inconfig file.
5 Run mlstats.
6 Run several R scripts for table and graphics generation.
7 Generate PDF report from LATEX sources.
Introduction Methodology Results Conclusions Thanks!
Tools
Configuration file example
PROJECT_NAME="uboot"
REPOSITORY="git://git.denx.de/u-boot.git"
MAILING_LIST="http://lists.denx.de/pipermail/u-boot/"
DB_HOST="localhost"
DB_USER="root"
DB_PASS="root"
CVSANALY_DUPLICATED=(("[email protected]","wdenk"),
("stefan@debian.(none)","stroese"))
GUILTY_DUPLICATED=(("Wolfgang Denk","wdenk"),
("Stefan Roese","stroese"),
("TsiChung Liew", "TsiChungLiew"))
MLSTATS_START_DATE="2003-01-01"
MAX_SLOC_LANG=3
CREATE_PDF=False
Introduction Methodology Results Conclusions Thanks!
Data sources
Outline
1 IntroductionHistory
2 MethodologyToolsData sourcesAnalysis
3 ResultsRepository analysisMailing list analysisMixed analysis
4 Conclusions
Introduction Methodology Results Conclusions Thanks!
Data sources
Data Sources
The data sources used for analyzing the developer community werethree: the code repository, the mailing list and the project webpage.
U-Boot code repository
git://git.denx.de/u-boot.git
U-boot mailing list
http://lists.denx.de/mailman/listinfo/u-boot
U-Boot wiki
http://www.denx.de/wiki/U-Boot/WebHome
Introduction Methodology Results Conclusions Thanks!
Analysis
Outline
1 IntroductionHistory
2 MethodologyToolsData sourcesAnalysis
3 ResultsRepository analysisMailing list analysisMixed analysis
4 Conclusions
Introduction Methodology Results Conclusions Thanks!
Analysis
Analysis performed
Lines of code per language
Most active developers
Activity evolution
Maintainer evolution
Work distribution
Global ranking based on previous results
Relation between developers and companies
Introduction Methodology Results Conclusions Thanks!
Repository analysis
Outline
1 IntroductionHistory
2 MethodologyToolsData sourcesAnalysis
3 ResultsRepository analysisMailing list analysisMixed analysis
4 Conclusions
Introduction Methodology Results Conclusions Thanks!
Repository analysis
SLOCCOUNT results
Language Lines of Codeansic 828008(94.78%)
asm 42417(4.86%)
sh 1618(0.19%)
php 1299(0.15%)
python 236(0.03%)
awk 40(0.00%)
sed 11(0.00%)
TOTAL 873629
ansic (94.78%)
asm (4.86%)
sh (0.19%)
95% C5% assembler
Introduction Methodology Results Conclusions Thanks!
Repository analysis
TOP 20 coders
Name Lines1 Wolfgang Denk 9160642 Stefan Roese 1434433 Mike Frysinger 799124 Jean-Christophe PLAGNIOL-VILLARD 697615 TsiChung Liew 343236 Kumar Gala 205967 Kyungmin Park 180998 William Juul 171079 Marian Balakowicz 17024
10 Jon Loeliger 1642711 Heiko Schocher 1627912 Daniel Hellstrom 1437113 Dave Liu 1345714 Jason Jin 1244115 Matthias Fuchs 1164516 Nobuhiro Iwamatsu 1157717 Tom Rix 919618 Dirk Behme 846119 Guennadi Liakhovetski 833820 Peter Tyser 8286
2000-2009
Name Lines1 Wolfgang Denk 365512 Stefan Roese 320953 Jean-Christophe PLAGNIOL-VILLARD 94474 Tom Rix 91965 Prafulla Wadaskar 71646 Ilya Yanok 55697 Mike Frysinger 47618 Kumar Gala 45109 Peter Tyser 4505
10 Roy Zang 348511 Dirk Behme 341612 Minkyu Kang 324613 Graeme Russ 294814 Kazuaki Ichinohe 260215 Heiko Schocher 256716 Giuseppe CONDORELLI 247517 Luigi ’Comio’ Mantellini 245818 Matthias Fuchs 241919 Ilko Iliev 208620 TsiChung Liew 2081
2009
Introduction Methodology Results Conclusions Thanks!
Repository analysis
TOP 20 comitters
Commiter Commits1 Wolfgang Denk 45282 Stefan Roese 12613 Jean-Christophe PLAGNIOL-VILLARD 4114 Jon Loeliger 3495 Kim Phillips 3166 Kumar Gala 3137 Andy Fleming 2888 Mike Frysinger 2599 Ben Warren 239
10 Scott Wood 15211 Nobuhiro Iwamatsu 12612 John Rigby 12513 Haavard Skinnemoen 11314 Marian Balakowicz 11215 Michal Simek 10116 Gerald Van Baren 9317 Tom Rix 8718 Markus Klotzbuecher 8019 Peter Pearse 7120 Shinya Kuribayashi 65
2000-2009
Commiter Commits1 Wolfgang Denk 10682 Jean-Christophe PLAGNIOL-VILLARD 2213 Kumar Gala 2064 Mike Frysinger 2025 Stefan Roese 1646 Ben Warren 1097 Tom Rix 878 Scott Wood 799 Andy Fleming 64
10 Kim Phillips 6411 Remy Bohmer 5312 Anatolij Gustschin 2913 Nobuhiro Iwamatsu 2914 Heiko Schocher 2815 John Rigby 2016 Michal Simek 1617 Haavard Skinnemoen 1318 TsiChung Liew 1119 Shinya Kuribayashi 720 Gerald Van Baren 6
2009
Introduction Methodology Results Conclusions Thanks!
Repository analysis
TOP 20 authors
Author Commits1 Wolfgang Denk 27522 Stefan Roese 9553 Mike Frysinger 3744 Kumar Gala 3675 Jean-Christophe PLAGNIOL-VILLARD 3586 Jon Loeliger 2937 Peter Tyser 1958 TsiChung Liew 1659 Matthias Fuchs 145
10 Heiko Schocher 14311 Marian Balakowicz 13212 Haavard Skinnemoen 12613 Kim Phillips 11514 Michal Simek 11515 Nobuhiro Iwamatsu 10916 Dave Liu 9117 Andy Fleming 8418 Shinya Kuribayashi 7819 Anton Vorontsov 7720 Ben Warren 74
2000-2009
Author Commits1 Wolfgang Denk 3752 Mike Frysinger 2853 Peter Tyser 1644 Jean-Christophe PLAGNIOL-VILLARD 1475 Stefan Roese 1336 Kumar Gala 1067 Heiko Schocher 548 Sandeep Paulraj 499 Matthias Fuchs 45
10 Tom Rix 4511 Graeme Russ 4012 Prafulla Wadaskar 3713 Dirk Behme 3414 Anton Vorontsov 3215 Kim Phillips 2816 Paul Gortmaker 2417 Detlev Zundel 2318 David Brownell 2319 Alessandro Rubini 2220 Haiying Wang 22
2009
Introduction Methodology Results Conclusions Thanks!
Repository analysis
Commits evolution0
100
200
300
400
data
−30
−10
1030
seas
onal
050
100
200
tren
d
−10
00
5015
0
2002 2004 2006 2008 2010
rem
aind
er
time
Total commits
020
4060
80
data
−10
−5
05
10
seas
onal
010
2030
40
tren
d
−20
020
4060
2002 2004 2006 2008 2010
rem
aind
er
time
Maintainer commits
Introduction Methodology Results Conclusions Thanks!
Repository analysis
Commits by author
●
●
●●
● ● ●● ●
●● ●
● ●●●●●
●●●●●
●●
●●
●●●
●●●●●
●●●
●●●
●
●●
1 2 5 10 20 50
15
1050
100
500
5000
Commits by author
Authors
Com
mits
Introduction Methodology Results Conclusions Thanks!
Repository analysis
Lorenz & Gini
0.0 0.2 0.4 0.6 0.8 1.0
0.0
0.2
0.4
0.6
0.8
1.0
Lorenz curve
p
L(p)
Gini coefficient
0.7914597
Introduction Methodology Results Conclusions Thanks!
Mailing list analysis
Outline
1 IntroductionHistory
2 MethodologyToolsData sourcesAnalysis
3 ResultsRepository analysisMailing list analysisMixed analysis
4 Conclusions
Introduction Methodology Results Conclusions Thanks!
Mailing list analysis
TOP 20 mailers
e-mail mails1 [email protected] 105922 [email protected] 14783 [email protected] 14434 [email protected] 11505 [email protected] 9216 [email protected] 5837 [email protected] 5688 [email protected] 4639 [email protected] 453
10 [email protected] 44511 [email protected] 40612 [email protected] 39413 [email protected] 39214 [email protected] 37815 [email protected] 37716 [email protected] 32617 [email protected] 32118 [email protected] 31219 [email protected] 28620 [email protected] 286
2000-2009
e-mail mails1 [email protected] 23122 [email protected] 6643 [email protected] 6564 [email protected] 4615 [email protected] 4336 [email protected] 3567 [email protected] 3198 [email protected] 2829 [email protected] 250
10 [email protected] 24911 [email protected] 21712 [email protected] 20113 [email protected] 17114 [email protected] 16415 [email protected] 15116 [email protected] 13117 [email protected] 11518 [email protected] 11219 [email protected] 11220 [email protected] 111
2009
Introduction Methodology Results Conclusions Thanks!
Mailing list analysis
Messages evolution0
500
1500
data
−20
00
100
200
seas
onal
400
600
800
1000
tren
d
−50
00
500
1000
18 19 20 21 22 23 24 25
rem
aind
er
time
Messages
Total messages
010
020
030
040
0
data
−40
−20
020
40
seas
onal
5010
015
020
0
tren
d
−15
0−
5050
150
14 15 16 17 18 19 20 21
rem
aind
er
time
Messages
Maintainer messages
Introduction Methodology Results Conclusions Thanks!
Mixed analysis
Outline
1 IntroductionHistory
2 MethodologyToolsData sourcesAnalysis
3 ResultsRepository analysisMailing list analysisMixed analysis
4 Conclusions
Introduction Methodology Results Conclusions Thanks!
Mixed analysis
Who is behind?
COMPANY CUSTODIAN RANKDENX MAIN/MPC 120
Jean-Christophe PV JCROSOFT - 106DENX CFI/PPC4xx 105
AD/GENTOO BLACKFIN 102Kumar Gala FREESCALE MPC85xx 99
XES-INC 60Kim Phillips FREESCALE MPC83xx 58Scott Wood FREESCALE NAND 52
DENX I2C 49WINDRIVER ARM 49FREESCALE MPC86xx 41
Ben Warren Network Library 39Andy Fleming FREESCALE MMC/MPC85xx 30Matthias Fuchs - 24
ATMEL AVR32 21
Wolfgang Denk
Stefan RoeseMike Frysinger
Peter Tyser PASemi
Heiko SchocherTom RixJon Loeliger
Haavard Skinnemoen
Introduction Methodology Results Conclusions Thanks!
Community
Clear Onion Model
Wolfgang Denk is the maintainer and most active developer
Repository activity independent of maintainer activity
Denx supported project (git, mailing list, wiki, ...)
Major semiconductor companies supporting the project
Core team remains almost unchanged over the time
Repository activity decreasing the last months
Mailing list activity still increasing
Introduction Methodology Results Conclusions Thanks!
Who is Wolfgang Denk?
He is the Maintainer.
He is the ”Benevolent Dictator for Life”.
Top committer, author, coder, mailer.
Graduated with honours in civil engineering from Ilmenau Institute ofTechnology
Worked at Friedrich Schiller University, PCS Computer Systeme, SiemensAG, ICN
Has done porting, driver, and release work with Unix since 1983
Founded Denx Software Engineering in 1999, and Denx ComputerSystems in 2000
He says he has never worked under any sort of MS-DOS or Windows OS,”and never will, I guess.”
Both Denx companies are 100 percent Microsoft-free
Introduction Methodology Results Conclusions Thanks!
U-Boot health
Activity decreasing!!!
U-Boot has already the major features implemented, so the workto be done is to port to new architectures/boards. This issuerequires less code/commits than feature adding.
Overall activity still increasing and majorsemiconductor companies supporting the
project predict a healthy future for the mostspread embedded bootloader
Introduction Methodology Results Conclusions Thanks!
Thanks!