incubating open source communities [hk sfd 2009]
DESCRIPTION
A version of my "Incubating Open Source Communities" talk given at the Hong Kong Software Freedom Day on 19 Sept 2009 at City University. The talk provides some insights into how to attract contributors to open source projects and reviews the Apache Incubator project.TRANSCRIPT
Incubating Open Source Communities
J Aaron Farr馮傑仁
Hong Kong Free Software DayCity University19 SEP 2009
Aaron馮傑仁
farra @ apache . org
Former DirectorApache Software
Foundation
Co-Founder
JadeTower!"
Apache Software Foundation
• US Non-Profit
• Provides legal and infrastructure support
• Completely volunteer organization
• 1000+ committers, 200+ members
• 60+ open source projects
Incubating Open Source CommunitiesCommunities
WhichWhyWhatHow
WhichCommunity
Developer
Contributor
User
Public
Involvement
At The Core
The community begins with the developers and contributors. The larger and more open the developer community, the greater chance for sustained activity and growth.
Users Developers
Contributors
A Note on Size
• Most developer communities are small
• Even with large developers, most of the development is usually by a small number of developers
• Apache requires minimum of 3 independent votes for a release
Apache’s Long Tail
!"#$%&'()*+,,,*-!./*0"*12*#314&5(26*&7*8%"9226&7'5*":*;!<=>+,,,*
* ?*@*?*
A325)&"75* B1"3)* ("C* -#B9(2* 62D24"#E27)* CB5* "%'B7&F26G*
B76* #%"D&625* 25527)&B4* 1B9H'%"376* :"%* 3762%5)B76&7'* "3%*
A3B7)&)B)&D2*%2534)5/**;7*)(2*72I)*529)&"7G*C2*)BH2*B*94"52%*4""H*
B)* )(2*6&5)%&13)&"7*":*62D24"#E27)G*62:29)* %2#B&%G*B76* )25)&7'*
C"%H* &7*)(2*-#B9(2*#%"J29)G*B5*C244*B5*)(2*9"62*B76*#%"9255*
:%"E*)(2*#"&7)*":*D&2C*":*935)"E2%*9"792%75/*
!" #$%&'('%'()*"+*,$-',"
;7* )(&5* 529)&"7* C2* #%2527)* %2534)5* :%"E* 52D2%B4* A3B7)&)B)&D2*
B7B4$525*":*)(2*B%9(&DB4*6B)B*:%"E*)(2*-8-!K=*#%"J29)/*0(2*
E2B53%25* C2* 62%&D2* :%"E* )(252* 6B)B* B%2* C244?53&)26* )"*
B66%255* "3%* %252B%9(* A325)&"75* L+MN* ("C2D2%G* )(2$* EB$* 12*
37:BE&4&B%* )"* EB7$* %2B62%5* 5&792* )(2$* B%2* 7")* 5":)CB%2*
E2)%&95* )(B)*B%2* &7*C&62*352G*2/'/G* LOGPM/* *Q"%*)(&5*%2B5"7G*C2*
#%"D&62* 6B)B* :%"E* 52D2%B4* 9"EE2%9&B4* #%"J29)5G* )"* '&D2* )(2*
%2B62%* 5"E2* 52752* ":* C(B)* H&765* ":* %2534)5* E&'()* 12*
2I#29)26/* *-4)("3'(*C2* #&9H26* 52D2%B4* 9"EE2%9&B4* #%"J29)5*
)(B)* B%2* %2B5"7B14$* 94"52* )"* -8-!K=G* 7"72* &5* B* #2%:29)*
EB)9(G* B76* )(2* %2B62%* 5("346* 7")* &7:2%* )(B)* )(2* DB%&B)&"7*
12)C227* )(252* 9"EE2%9&B4* #%"J29)5* B76* -8-!K=* &5* 632*
27)&%24$* )"* 6&::2%27925* 12)C227* 9"EE2%9&B4* B76* R<<*
62D24"#E27)*#%"925525/*
;)*&5*&E#"%)B7)*)"*7")2*)(B)*)(2*52%D2%*&5*625&'726*5"*)(B)*72C*
:379)&"7B4&)$* 7226* 7")* 12* 6&5)%&13)26* B4"7'* C&)(* )(2* 9"%2*
52%D2%/* * 0(2%2* B%2* C244* "D2%* S,,* :2B)3%2?:&4426* E"63425*
6&5)%&13)26* 1$* )(&%6* #B%)&25G* B76* )(35* 7")* &7943626* &7* "3%*
5)36$/* *.B7$* ":* )(252* E"63425* &794362* E"%2* 4&725* ":* 9"62*
)(B7*)(2*9"%2*52%D2%/*
!./"'01"2341"56"701"%89:01";1<1=58>1?7":5>>@?37A."
!"#$ %&'$ ()*+$ ,-&,.-$ '/&0-$ 1&2-$ 3&/$ *-'$ 4,)15-$
36*107&*).70+8$ $%&'$()*+$,-&,.-$ /-,&/0-2$,/&9.-(:8$ $%&'$
()*+$,-&,.-$/-,)7/-2$2-3-10:8$
0(2* #B%)&9&#B)&"7* &7* -#B9(2* 62D24"#E27)* "D2%B44* CB5* A3&)2*
C&62G*C&)(*B4E"5)*O,,*&76&D&63B45*9"7)%&13)&7'*9"62*)(B)*CB5*
&79"%#"%B)26*&7)"*B*9"E#B%B)&D24$*5EB44*#%"639)/**;7*"%62%*)"*
522*("C*EB7$*#2"#42*9"7)%&13)26*72C*:379)&"7B4&)$*B76*("C*
EB7$* C2%2* &7D"4D26* &7* %2#B&%&7'* 62:29)5G* C2* 6&5)&7'3&5(26*
12)C227* 9(B7'25* )(B)* C2%2* EB62* B5* B* %2534)* ":* B* #%"142E*
%2#"%)* T8U* 9(B7'25V* B76* )("52* )(B)* C2%2* 7")* T7"7?8U*
9(B7'25V/* *W2*:"376* )(B)*SX+*#2"#42*9"7)%&13)26* )"*YZ@*8U*
9(B7'25G* C(&42* +OZ* #2"#42* 9"7)%&13)26* )"* Y,Z+* 7"7?8U*
9(B7'25/**
W2* 2IBE&726* )(2* [\]^[* )"* 62)2%E&72* )(2* 73E12%* ":*
#2"#42*C("*531E&))26*#%"142E*%2#"%)5/**0(2*#%"142E*%2#"%)5*
9"E2* :%"E* B* E39(* C&62%* '%"3#* ":* #B%)&9&#B7)5/* ;7* :B9)G*
B%"376* _,Y,* 6&::2%27)* #2"#42* 531E&))26* _ZP@* #%"142E*
%2#"%)5/* O@X* &76&D&63B45* 531E&))26* @ZS* %2#"%)5* )(B)*
53152A327)4$* 9B3526* B* 9(B7'2* )"* )(2* -#B9(2* 9"62* "%*
6"93E27)B)&"7/*+Y@O*&76&D&63B45*531E&))26*__XO*%2#"%)5*)(B)*
6&6*7")*%2534)*&7*B*9(B7'2/**
!.B" C5D" D92" D5EF" ;327E3G@71;" D3703?" 701" ;1<1=58>1?7"
:5>>@?37AH"
!;#$<-/-$ 05-:-$ 36*107&*:$ 1)//7-2$ &60$ 9+$ 27:07*10$ =/&6,:$ &3$
,-&,.->$7?-?>$272$,-&,.-$,/7()/7.+$)::6(-$)$:7*=.-$/&.-8$$@72$
.)/=-$ *6(9-/:$ &3$ ,-&,.-$ ,)/0717,)0-$ :&(-'5)0$ -A6)..+$ 7*$
05-:-$)107B707-:>$&/$272$)$:()..$*6(9-/$&3$,-&,.-$2&$(&:0$&3$
05-$'&/C8*
Q&%5)G*C2*2IBE&72*#B%)&9&#B)&"7*&7*'272%B)&7'*9"62/**Q&'3%2*S*
#4")5* )(2* 93E34B)&D2* #%"#"%)&"7* ":* 9"62* 9(B7'25* TD2%)&9B4*
BI&5V* D2%535* )(2* )"#* `* 9"7)%&13)"%5* )"* )(2* 9"62* 1B52*
T("%&F"7)B4*BI&5V/*
Number of individuals
1 5 10 15 50 100 388
0.0
0.2
0.4
0.6
0.8
1.0
Fraction of MRs
Fraction of Delta
Fraction of Lines Added
Fraction of Lines Deleted
*
Q&'3%2*S/**D5-$16(6.)07B-$27:0/79607&*$&3$1&*0/79607&*:$0&$05-$
1&2-$9):-?*
0(2* 9"7)%&13)"%5* B%2* "%62%26* 1$* )(2* 73E12%* ":* .U5* :%"E*
4B%'25)* )"* 5EB4425)/* 0(2* 5"4&6* 4&72* &7* Q&'3%2* S* 5("C5* )(2*
93E34B)&D2* #%"#"%)&"7* ":* 9(B7'25* B'B&75)* )(2* 73E12%* ":*
9"7)%&13)"%5/* 0(2* 6"))26* B76* 6B5(26* 4&725* 5("C* )(2*
93E34B)&D2* #%"#"%)&"7* ":* B6626* B76* 6242)26* 4&725* B76* )(2*
#%"#"%)&"7* ":* 624)B* TB7*.U* '272%B)25* "72* 624)B* :"%* 2B9(* ":*
)(2*:&425*&)*9(B7'25V/*0(252*E2B53%25*9B#)3%2*DB%&"35*B5#29)5*
":*9"62*9"7)%&13)&"7/*
Q&'3%2*S* 5("C5* )(B)* )(2* )"#*S@*62D24"#2%5*9"7)%&13)26*E"%2*
)(B7* X_a* ":* )(2*.U5* B76* 624)B5G* XXa* ":* B6626* 4&725* B76*
ZSa* ":* 6242)26* 4&725/* b2%$* 4&))42* 9"62* B76G* #%253EB14$G*
9"%%25#"76&7'4$*5EB44*2::"%)*&5*5#27)*1$*7"7?9"%2*62D24"#2%5*
T:"%* 5&E#4&9&)$G* &7* )(&5* 529)&"7*C2* %2:2%* )"*B44* )(2*62D24"#2%5*
"3)5&62*)(2*)"#*S@*'%"3#*B5*7"7?9"%2V/*0(2*.U5*6"72*1$*9"%2*
62D24"#2%5* B%2* 5315)B7)&B44$* 4B%'2%* )(B7* )("52* 6"72* 1$* )(2*
7"7?9"%2*'%"3#/*0(&5*6&::2%2792*&5*5)B)&5)&9B44$*5&'7&:&9B7)N*)(2*
6&5)%&13)&"7* ":* .U* :%B9)&"7* &5* 5&'7&:&9B7)4$* T#* c* ,/,SV*
6&::2%27)* :%"E* )(2* 6&5)%&13)&"7* ":* B6626* 4&725* 35&7'*
d"4E"'"%"D?<E&%7"D*)25)/**
`2I)G*C2*4""H26*52#B%B)24$*B)*8U*9(B7'25*"74$/*0(2%2*CB5*B*
4B%'2*T#?DB432*c*,/,SV*6&::2%2792*12)C227*6&5)%&13)&"75*":*8U*
B76* 7"7?8U* 9"7)%&13)&"75/* 8U* 9"7)%&13)&"75* B%2* 5("C7* &7*
Q&'3%2*+/*0(2*59B425*B76*62D24"#2%*"%62%*B%2* )(2*5BE2*B5* &7*
Feilding, Herbleb & Mockus, 2000
http://opensource.mit.edu/papers/mockusapache.pdf
Linux 2.6.20
50% of the changes where made by2.5% of the developers
Who Wrote 2.6.20?http://lwn.net/Articles/222773/
by corbet
What Does That Mean?
It means a huge number of contributors (741) who made thousands of small contributions
WhichWhyWhatHow
Communities
Community > Code
Why Community
Factorof
Success
Time
Code
Community
Community First
WhichWhyWhatHow
Communities
Communitycommunity |kəˈmyoōnitē| |kəˌmjunədi| |kəˌmjuːnɪti|noun ( pl. -ties)1 a group of people living together in one place, esp. one practicing common ownership : a community of nuns.
• all the people living in a particular area or place : local communities.• a particular area or place considered together with its inhabitants : a rural community.• ( the community) the people of a district or country considered collectively, esp. in the context of social values and responsibilities; society : preparing prisoners for life back in the community.• [as adj. ] denoting a worker or resource designed to serve the people of a particular area : community health services.
2 [usu. with adj. ] a group of people having a religion, race, profession, or other particular characteristic in common : Rhode Island's Japanese community | the scientific community.
• a body of nations or states unified by common interests : [in names ] the European Community | the African Economic Community.
3 a feeling of fellowship with others, as a result of sharing common attitudes, interests, and goals : the sense of community that organized religion can provide.
• [in sing. ] a similarity or identity : writers who shared a community of interests.• joint ownership or liability : a commitment to the community of goods.
4 Ecology a group of interdependent organisms of different species growing or living together in a specified habitat : communities of insectivorous birds.
• a set of species found in the same habitat or ecosystem at the same time.
Oxford American Dictionaries
Communitycommunity |kəˈmyoōnitē| |kəˌmjunədi| |kəˌmjuːnɪti|noun ( pl. -ties)1 a group of people living together in one place, esp. one practicing common ownership : a community of nuns.
• all the people living in a particular area or place : local communities.• a particular area or place considered together with its inhabitants : a rural community.• ( the community) the people of a district or country considered collectively, esp. in the context of social values and responsibilities; society : preparing prisoners for life back in the community.• [as adj. ] denoting a worker or resource designed to serve the people of a particular area : community health services.
2 [usu. with adj. ] a group of people having a religion, race, profession, or other particular characteristic in common : Rhode Island's Japanese community | the scientific community.
• a body of nations or states unified by common interests : [in names ] the European Community | the African Economic Community.
3 a feeling of fellowship with others, as a result of sharing common attitudes, interests, and goals : the sense of community that organized religion can provide.
• [in sing. ] a similarity or identity : writers who shared a community of interests.• joint ownership or liability : a commitment to the community of goods.
4 Ecology a group of interdependent organisms of different species growing or living together in a specified habitat : communities of insectivorous birds.
• a set of species found in the same habitat or ecosystem at the same time.
group of people common ownership
sharing common attitudes, interests, and goals
values and responsibilities
Oxford American Dictionaries
Community
PeopleCustoms
OwnershipShared Goals
Community
Communicates
Community
PeopleCustoms
OwnershipShared Goals
Communication
Culture
Shared meanings used by a group to approach the
problems of life
Cathedral vs Bazaar
Cathedral
Bazaar
Community Culture
Cathedral Bazaar
WhichWhyWhatHow
Communities
道The Path To Contribution
Path to Contribution
Developer
Contributor
User
Public
Involvement
Path to Contribution
• Clear
• Consistent
• Attainable
Documentation should clearly identify the audience and set out
the process
Types of Contribution
• Documentation
• Bug Fixes
• Answers on mailing lists
• Promotion
• Money
Providing a Path
• How to Get Involved Documentation
• Low Barrier To Contribution
• Wiki Documentation Site
• Bug Tracker
• Recognize Contributors (Release Notes)
Community
PeopleCustoms
OwnershipShared Goals
Communication
People
Individuals
Not Business
Not Corporations
Not Organizations
People Customs Ownership Shared Goals Communication
People
• Meritocracy
• Clearly define:
• Roles
• Expectations
• Qualifications
People Customs Ownership Shared Goals Communication
PeopleRoles
The meritocracy enables various roles:
user | developer | committer | PMC member | ASF member
User
user is someone that uses our software. They contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. Users participate in the Apache community by helping other users on mailing lists and user support forums. The passive users are also known as lurkers.
Developer
developer is a user who contributes to a project in the form of code or documentation. They take extra steps to participate in a project, are active on the developer mailing list, participate in discussions, provide patches, documentation, suggestions, and criticism. Developers are also known as contributors.
Committer
committer is a developer that was given write access to the code repository and has a signed Contributor License Agreement (CLA) on file. They have an apache.org mail address....
People Customs Ownership Shared Goals Communication
People
The Apache Software Foundation Individual Contributor License Agreement ("Agreement") V2.0
http://www.apache.org/licenses/
Thank you for your interest in The Apache Software Foundation (the"Foundation"). In order to clarify the intellectual property licensegranted with Contributions from any person or entity, the Foundationmust have a Contributor License Agreement ("CLA") on file that hasbeen signed by each Contributor, indicating agreement to the licenseterms below. This license is for your protection as a Contributor aswell as the protection of the Foundation and its users; it does notchange your rights to use your own Contributions for any otherpurpose. If you have not already done so, please complete and send anoriginal signed Agreement to The Apache Software Foundation, 1901Munsey Drive, Forest Hill, MD 21050-2747, U.S.A. If necessary, you maysend it by facsimile to the Foundation at +1-410-803-2258. Please readthis document carefully before signing and keep a copy for yourrecords.
Apache CLA
People Customs Ownership Shared Goals Communication
Customs
Oral Traditions
Rules of Participation
Decision Making Processes
People Customs Ownership Shared Goals Communication
Customs
• Clearly define project practices
• Bug submission process
• Release process
• Voting process
• Coding Standards
• Mailing List Etiquette
People Customs Ownership Shared Goals Communication
FAQ
People Customs Ownership Shared Goals Communication
Ownership
Open Source License
Access Permissions
Responsibilities
People Customs Ownership Shared Goals Communication
Ownership
• Prominently display the license
• Openly identify business interests
• Non-locking source control
• No Author Tags
• Avoid Dictatorships or “one man shows”
People Customs Ownership Shared Goals Communication
Shared Goals
Group Identity
Clear Purpose
What We’re Not
People Customs Ownership Shared Goals Communication
SubversionWhy does this project exist?To take over the CVS user base. Specifically, we're writing a new version control system that is very similar to CVS, but fixes many things that are broken. See our front page.
People Customs Ownership Shared Goals Communication
Society → Community
The difference between a society and a community is
a “unity of wills”
Community and Society: Gemeinschaft und Gesellschaft, Ferdinand Tönnies
People Customs Ownership Shared Goals Communication
Communication
Open
Consistent
Archived
People Customs Ownership Shared Goals Communication
Communication
• Website (with documentation)
• Mailing Lists
• Issue Tracking
• Source Repository
• Instant Message / Chat
People Customs Ownership Shared Goals Communication
WhichWhyWhatHow
Communities
Code
Communities
Code
• Directly useful to developers (itch)
• Builds
• Common standards
• Composable
• Consistent
• Improvable
Composability
The Architecture of Participation: Does Code Architecture Mitigate Free Riding in the
Open Source Development ModelBaldwin and Clark, 2005
http://www.people.hbs.edu/cbaldwin/DR2/BaldwinArchPartAll.pdf
... codebases that are more modular or have more option value increase developers’ incentives to join and to remain involved in an open source development effort; and decrease the amount of free-riding in equilibrium.
release earlyrelease often
Community
PeopleCustoms
OwnershipShared Goals
Communication
Provide A Pathway To Contribution
Apache Incubator
Non-Apache Project↓
Incubator↓
Apache Project
Apache Incubator
• Legal
Ensure donations and projects are in accordance with legal standards
• Community
Develop communities that adhere to ASF guiding principles
GraduatedAbdera
ActiveMQApolloBeehiveCayenneCouchDBCXFDerbyDirectoryFelixFtpServerGeronimoHarmonyHermes
httpd-CLIiBATISIvyJackrabbitJaxMeJDOjUDDILenyalog4cxxlog4netMerlinDevelopermod_ftpMuse
MyFacesNutchOdeOFBizOpenEJBOpenJPAPigPlutoQpidRollerSanselanServiceMixSolrSling
SpamAssassinstdcxxSynapseTapestryTikaTobagoTrinidadTuscanyWebWork 2WicketWodenXMLBeans
IncubatingAce
BlueskyCassandraChemistryClickDroidsEmpire-dbEtchESMEHama
ImperiusJSPWikiKatoLog4phpLucene.NetOlioOpen-WebBeansPDFBoxPhotArk
PivotRATRCFRiverShindigShiroSocialSiteStonehengeTashiThrift
TrafficServerUIMAVCLVXQueryWookieWinkWSRP4J
Roles
• Incubator PMC (IPMC)
• Podling
• Podling PMC (PPMC)
• Champion
• Sponsor
• Mentor
• Committers
Incubation Process
• Question
• Search
• Commit
• Committed
• Establish
• Join
• Clear
• Learn
• Adjust
• Grow
• Report
• Perform
• Leave
Incubation
Over 50 projects have graduated from the Apache Incubator. The average time is 14 months, but varies from 2 to 28 months.
During that time, the average project adds 2 - 3 committers.
Question Search Commit Committed Establish Join Clear Learn Adjust Grow Report Perform Leave
Is the Incubator For Us?
incubator.apache.org